diff client/src/components/layers/Layers.vue @ 3055:b3c24c47931c

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.
author Markus Kottlaender <markus@intevation.de>
date Tue, 16 Apr 2019 09:26:51 +0200
parents c71373594719
children 85734c763652
line wrap: on
line diff
--- 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 }
     ]"
   >
-    <div style="width: 18rem">
-      <UIBoxHeader
-        icon="layer-group"
-        :title="layersLabel"
-        :closeCallback="close"
-      />
-      <div class="box-body small" v-if="openLayersMap">
-        <Layerselect :layer="openLayersMap.getLayer('OPENSTREETMAP')" />
-        <Layerselect :layer="openLayersMap.getLayer('INLANDECDIS')" />
-        <Layerselect :layer="openLayersMap.getLayer('WATERWAYAREA')" />
-        <Layerselect :layer="openLayersMap.getLayer('STRETCHES')" />
-        <Layerselect :layer="openLayersMap.getLayer('FAIRWAYDIMENSIONSLOS3')" />
-        <Layerselect :layer="openLayersMap.getLayer('FAIRWAYDIMENSIONSLOS2')" />
-        <Layerselect :layer="openLayersMap.getLayer('FAIRWAYDIMENSIONSLOS1')" />
-        <Layerselect :layer="openLayersMap.getLayer('WATERWAYAXIS')" />
-        <Layerselect :layer="openLayersMap.getLayer('WATERWAYPROFILES')" />
-        <Layerselect :layer="openLayersMap.getLayer('BOTTLENECKS')" />
-        <Layerselect :layer="openLayersMap.getLayer('BOTTLENECKISOLINE')" />
-        <Layerselect :layer="openLayersMap.getLayer('DIFFERENCES')" />
-        <Layerselect :layer="openLayersMap.getLayer('BOTTLENECKSTATUS')" />
-        <Layerselect :layer="openLayersMap.getLayer('DISTANCEMARKS')" />
-        <Layerselect :layer="openLayersMap.getLayer('DISTANCEMARKSAXIS')" />
-        <Layerselect :layer="openLayersMap.getLayer('GAUGES')" />
+    <div class="position-relative" style="width: 18rem; min-height: 350px;">
+      <UIBoxHeader icon="layer-group" :title="label" :closeCallback="close" />
+      <div class="small" v-if="openLayersMaps.length">
+        <Layerselect layerId="OPENSTREETMAP" />
+        <Layerselect layerId="INLANDECDIS" />
+        <Layerselect layerId="WATERWAYAREA" />
+        <Layerselect layerId="STRETCHES" />
+        <Layerselect layerId="FAIRWAYDIMENSIONSLOS3" />
+        <Layerselect layerId="FAIRWAYDIMENSIONSLOS2" />
+        <Layerselect layerId="FAIRWAYDIMENSIONSLOS1" />
+        <Layerselect layerId="WATERWAYAXIS" />
+        <Layerselect layerId="WATERWAYPROFILES" />
+        <Layerselect layerId="BOTTLENECKS" />
+        <Layerselect layerId="BOTTLENECKISOLINE" />
+        <Layerselect layerId="DIFFERENCES" />
+        <Layerselect layerId="BOTTLENECKSTATUS" />
+        <Layerselect layerId="DISTANCEMARKS" />
+        <Layerselect layerId="DISTANCEMARKSAXIS" />
+        <Layerselect layerId="GAUGES" />
       </div>
+      <UISpinnerOverlay v-else style="top: 34px;" />
     </div>
   </div>
 </template>
@@ -48,16 +45,16 @@
  * Thomas Junk <thomas.junk@intevation.de>
  * Markus Kottländer <markus.kottlaender@intevation.de>
  */
-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");
     }
   },