From 444d80f77e53b62024fa873177d75a34de52f2fc Mon Sep 17 00:00:00 2001 From: Oliver Gerlich Date: Sun, 22 Jul 2018 21:56:00 +0200 Subject: [PATCH] map: save list of enabled layers in localStorage --- webroot/js/view/map.js | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/webroot/js/view/map.js b/webroot/js/view/map.js index d650eaf..857abf9 100644 --- a/webroot/js/view/map.js +++ b/webroot/js/view/map.js @@ -28,17 +28,46 @@ export class MapView extends View { this.geoJsonLayer = L.geoJson.ajax(config.map.geojson.url, config.map.geojson); + this.geoJsonLayer.name = "geojson"; this.nodeLayer = L.layerGroup(); + this.nodeLayer.name = "nodes"; /* eslint-disable new-cap */ this.clientLayer24 = L.webGLHeatmap(config.map.heatmap.wifi24); + this.clientLayer24.name = "clientLayer24"; this.clientLayer5 = L.webGLHeatmap(config.map.heatmap.wifi5); + this.clientLayer5.name = "clientLayer5"; /* eslint-enable new-cap */ layerControl.addOverlay(this.geoJsonLayer, 'geojson'); layerControl.addOverlay(this.nodeLayer, 'Nodes'); layerControl.addOverlay(this.clientLayer24, 'Clients 2.4 Ghz'); layerControl.addOverlay(this.clientLayer5, 'Clients 5 Ghz'); - this.nodeLayer.addTo(this.map); + + var enabledLayersStr = localStorage.getItem("mapLayers"); + if (enabledLayersStr == null) { + // fall back to default list of enabled layers: + enabledLayersStr = [this.nodeLayer.name].join(); + } + + const enabledLayers = enabledLayersStr.split(","); + for (var i = 0; i < enabledLayers.length; i++) { + const layerName = enabledLayers[i]; + for (var j = 0; j < layerControl._layers.length; j++) { + if (layerControl._layers[j].layer.name == layerName) { + layerControl._layers[j].layer.addTo(this.map); + break; + } + } + } + + this.map.on({ + overlayadd: (e) => { + this.saveMapSelection(); + }, + overlayremove: (e) => { + this.saveMapSelection(); + } + }); window.addEventListener('resize', () => { this.el.style.height = `${window.innerHeight - WINDOW_HEIGHT_MENU}px`; @@ -46,6 +75,16 @@ export class MapView extends View { }); } + saveMapSelection () { + var enabledLayers = []; + this.map.eachLayer((layer) => { + if (layer.name) { + enabledLayers.push(layer.name); + } + }); + localStorage.setItem("mapLayers", enabledLayers.join()); + } + addNode (node) { /* eslint-disable-line https://github.com/Leaflet/Leaflet/issues/4484 if(node.node_id === draggingNodeID){