# HG changeset patch # User Markus Kottlaender # Date 1555399611 -7200 # Node ID b3c24c47931cb67a5098714fbd140457cdce35ec # Parent 1ef2f4179d30196072f4d8a55c48e490d3509f2b client: layers legend: support multiple maps If there is more than one map, there's a layer checkbox for each of them, so layers can be toggle for each map separately. diff -r 1ef2f4179d30 -r b3c24c47931c client/src/components/layers/Layers.vue --- a/client/src/components/layers/Layers.vue Tue Apr 16 09:00:42 2019 +0200 +++ b/client/src/components/layers/Layers.vue Tue Apr 16 09:26:51 2019 +0200 @@ -5,30 +5,27 @@ { expanded: showLayers } ]" > -
- -
- - - - - - - - - - - - - - - - +
+ +
+ + + + + + + + + + + + + + + +
+
@@ -48,16 +45,16 @@ * Thomas Junk * Markus Kottländer */ -import { mapState, mapGetters } from "vuex"; +import { mapState } from "vuex"; export default { components: { Layerselect: () => import("./Layerselect") }, computed: { - ...mapGetters("map", ["openLayersMap"]), ...mapState("application", ["showLayers"]), - layersLabel() { + ...mapState("map", ["openLayersMaps"]), + label() { return this.$gettext("Layers"); } }, diff -r 1ef2f4179d30 -r b3c24c47931c client/src/components/layers/Layerselect.vue --- a/client/src/components/layers/Layerselect.vue Tue Apr 16 09:00:42 2019 +0200 +++ b/client/src/components/layers/Layerselect.vue Tue Apr 16 09:26:51 2019 +0200 @@ -1,25 +1,29 @@ @@ -41,26 +45,53 @@ */ import { HTTP } from "@/lib/http"; import { displayError } from "@/lib/errors"; -import { mapState } from "vuex"; +import { mapState, mapGetters } from "vuex"; export default { - props: ["layer"], components: { LegendElement: () => import("./LegendElement") }, + props: ["layerId"], computed: { ...mapState("map", [ - "layers", + "openLayersMaps", "isolinesLegendImgDataURL", "differencesLegendImgDataURL" ]), + ...mapGetters("map", ["openLayersMap"]), + layer() { + return this.openLayersMap.getLayer(this.layerId); + }, label() { return this.$gettext(this.layer.get("label")); } }, methods: { - visibilityToggled() { - this.layer.setVisible(!this.layer.getVisible()); + toggle(map) { + if (map) { + map + .getLayer(this.layerId) + .setVisible(!map.getLayer(this.layerId).getVisible()); + } else { + this.openLayersMaps.forEach(m => { + m.getLayer(this.layerId).setVisible( + !m.getLayer(this.layerId).getVisible() + ); + }); + } + }, + isVisible(map) { + if (map) { + return map.getLayer(this.layerId).getVisible(); + } else { + let isVisible = false; + this.openLayersMaps.forEach(m => { + if (m.getLayer(this.layerId).getVisible()) { + isVisible = true; + } + }); + return isVisible; + } }, loadLegendImage(layer, storeTarget) { HTTP.get(