From acce561ec9bf15b24e6f8d641fc90031e3535957 Mon Sep 17 00:00:00 2001 From: George Hunt Date: Wed, 3 Apr 2019 08:20:32 -0700 Subject: [PATCH] mission duplicated osm_functions.js --- roles/osm-vector/files/osm_functions.js | 215 ++++++++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 roles/osm-vector/files/osm_functions.js diff --git a/roles/osm-vector/files/osm_functions.js b/roles/osm-vector/files/osm_functions.js new file mode 100644 index 000000000..9c95facb0 --- /dev/null +++ b/roles/osm-vector/files/osm_functions.js @@ -0,0 +1,215 @@ +// osm_functions.js +// copyright 2019 George Hunt +// CAUTION -- this file is duplicate to admin-console/console/files/js/osm_fuctions.js -- please think of admin-console as authoritative +// Placed here in duplicate to ease debugging, and simplify dependences + +var regionGeojson = {}; +var regionList = []; +var regionInstalled = []; +var commonAssetsDir = '/common/assets/'; +var iiab_config_dir = '/etc/iiab/'; +var onChangeFunc = "setSize"; +var osmCatalog = {}; + +// following 2 lines an experiment to see if test page and console can be common +//var jquery = require("./assets/jquery.min"); +//window.$ = window.jQuery = jquery; + +function getOsmStat(){ + // called during the init + console.log('in getOsmStat'); + readOsmCatalog( true ); // we want checkboxes + readOsmIdx(); +} + +function readOsmIdx(){ + //consoleLog ("in readOsmIdx"); + var resp = $.ajax({ + type: 'GET', + url: consoleJsonDir + 'osm-vector-idx.json', + dataType: 'json' + }) + .done(function( data ) { + osmInstalled = data['regions']; + regionInstalled = []; + for (region in data['regions']) { + if (data['regions'].hasOwnProperty(region)) { + regionInstalled.push(region); + } +} + //consoleLog(osmInstalled + ''); + }) + .fail(jsonErrhandler); + + return resp; +} + +function readOsmCatalog(checkbox){ + checkbox = checkbox || true; + console.log ("in readOsmCalalog"); + regionList = []; + var resp = $.ajax({ + type: 'GET', + url: commonAssetsDir + 'regions.json', + dataType: 'json' + }) + .done(function( data ) { + regionJson = data; + osmCatalog = regionJson['regions']; + for(var key in osmCatalog){ + //console.log(key + ' ' + osmCatalog[key]['title']); + osmCatalog[key]['name'] = key; + regionList.push(osmCatalog[key]); + } + }) + .fail(jsonErrhandler); + return resp; +} + +function renderRegionList(checkbox) { // generic + var html = ""; + // order the regionList by seq number + var regions = regionList; + console.log ("in renderRegionList"); + + // sort on basis of seq + regions = regions.sort(function(a,b){ + if (a.seq < b.seq) return -1; + else return 1; + }); + //console.log(regions); + // render each region + html += '
'; + regions.forEach((region, index) => { // now render the html + //console.log(region.title + " " +region.seq); + html += genRegionItem(region,checkbox); + }); + html += '
'; + //console.log(html); + $( "#regionlist" ).html(html); +} + + +function genRegionItem(region,checkbox) { + var html = ""; + console.log("in genRegionItem: " + region.name); + var itemId = region.title; + var ksize = region.size / 1000; +//console.log(html); + html += '
'; + html += ' '; // end input + html += ' Size: ' + readableSize(ksize); + html += '
'; + //console.log(html); + + return html; +} + +function instOsmItem(name) { + var command = "INST-OSM-VECT-SET"; + var cmd_args = {}; + cmd_args['osm_vect_id'] = name; + cmd = command + " " + JSON.stringify(cmd_args); + sendCmdSrvCmd(cmd, genericCmdHandler); + osmDownloading.push(name); + if ( osmWip.indexOf(name) != -1 ) + osmWip.push(osmCatalog[name]); + console.log('osmWip: ' + osmWip); + return true; +} + +function jsonErrhandler (jqXHR, textStatus, errorThrown) +{ + // only handle json parse errors here, others in ajaxErrHandler + if (textStatus == "parserror") { + //alert ("Json Errhandler: " + textStatus + ", " + errorThrown); + displayServerCommandStatus("Json Errhandler: " + textStatus + ", " + errorThrown); + } + //consoleLog("In Error Handler logging jqXHR"); + consoleLog(textStatus); + consoleLog(errorThrown); + consoleLog(jqXHR); + + return false; +} + +function readableSize(kbytes) { + if (kbytes == 0) + return "0"; + var bytes = 1024 * kbytes; + var s = ['bytes', 'kB', 'MB', 'GB', 'TB', 'PB']; + var e = Math.floor(Math.log(bytes) / Math.log(1024)); + return (bytes / Math.pow(1024, e)).toFixed(2) + " " + s[e]; +} + +function updateOsmSpace(cb){ + console.log("in updateOsmSpace" + cb); + var region = cb.name; + updateOsmSpaceUtil(region, cb.checked); +} + +function updateOsmSpaceUtil(region, checked){ + var size = parseInt(osmCatalog[region].size); + + var modIdx = selectedOsmItems.indexOf(region); + + if (checked){ + if (regionInstalled.indexOf(region) == -1){ // only update if not already installed mods + sysStorage.osm_selected_size += size; + selectedOsmItems.push(region); + } + } + else { + if (modIdx != -1){ + sysStorage.osm_selected_size -= size; + selectedOsmItems.splice(modIdx, 1); + } + } + + displaySpaceAvail(); +} + +/* +function totalSpace(){ + // obsolete but perhaps useful in debugging since it worked + var sum = 0; + $( ".extract" ).each(function(ind,elem){ + var data = JSON.parse($(this).attr('data-region')); + var region = data.name; + var size = parseInt(osmCatalog[region]['size']); + var chk = $( this ).find(':checkbox').prop("checked") == true; + if (chk && typeof size !== 'undefined') + sum += size; + }); + var ksize = sum / 1000; + $( "#osmDiskSpace" ).html(readableSize(ksize)); +} + +$( '#instOsmRegion').on('click', function(evnt){ + readOsmCatalog(); + osm.render(); +}); +*/ +function renderOsm(){ + console.log('in renderOsm'); + window.map.setTarget($("#osm-container")[0]); + window.map.render(); + renderRegionList(true); +} +function initOsm(){ +var dummy = 0; + sysStorage.osm_selected_size = 0; + $.when(readOsmCatalog(true)).then(renderRegionList); +} +