# HG changeset patch # User Thomas Junk # Date 1576167214 -3600 # Node ID e51b9b265df0c00e700ccda248e46c8c21501fec # Parent 6a148617e012b9838cc78e585cab14f460e17f48 right click toggles single layer selection diff -r 6a148617e012 -r e51b9b265df0 client/src/components/layers/Layerselect.vue --- a/client/src/components/layers/Layerselect.vue Tue Dec 10 11:20:22 2019 +0100 +++ b/client/src/components/layers/Layerselect.vue Thu Dec 12 17:13:34 2019 +0100 @@ -79,12 +79,7 @@ }, methods: { selectSingle() { - console.log("right click"); - this.openLayersMaps.forEach(m => { - m.getLayers().forEach(l => { - l.setVisible(l.get("id") == this.layerId); - }); - }); + this.$store.commit("map/viewSingleLayer", this.layerId); }, refreshLegend() { if (this.layer.get("id") === "BOTTLENECKISOLINE") { diff -r 6a148617e012 -r e51b9b265df0 client/src/store/map.js --- a/client/src/store/map.js Tue Dec 10 11:20:22 2019 +0100 +++ b/client/src/store/map.js Thu Dec 12 17:13:34 2019 +0100 @@ -30,6 +30,8 @@ // initial state const init = () => { return { + oldLayerVisibility: [], + singleLayerVisible: false, openLayersMaps: [], syncedMaps: [], syncedView: null, @@ -69,6 +71,27 @@ } }, mutations: { + viewSingleLayer: (state, layerId) => { + state.singleLayerVisible = !state.singleLayerVisible; + if (state.singleLayerVisible) { + state.oldLayerVisibility = state.openLayersMaps.reduce((o, m) => { + let current = []; + m.getLayers().forEach(l => { + current.push(l.getVisible()); + l.setVisible(l.get("id") == layerId); + }); + o.push(current); + return o; + }, []); + } else { + state.oldLayerVisibility.forEach((m, i) => { + let layers = state.openLayersMaps[i].getLayers().getArray(); + m.forEach((visible, index) => { + layers[index].setVisible(visible); + }); + }); + } + }, reviewActive: (state, active) => { state.reviewActive = active; },