diff client/src/store/map.js @ 2445:e0f423606929

client: import soundingdata: fix npe bug Changes from bbc31150248c led to a null pointer exception, cause the default value of bottleneck was changed from empty string to null... for reasons. However, this was the inspiration to improve the UI behavior. The 'Download meta.json' button is now disabled as long as the form is lacking the necessary data.
author Markus Kottlaender <markus@intevation.de>
date Fri, 01 Mar 2019 12:42:52 +0100
parents 7fe2f5d334dc
children ba15d3534b2b
line wrap: on
line diff
--- a/client/src/store/map.js	Fri Mar 01 12:24:37 2019 +0100
+++ b/client/src/store/map.js	Fri Mar 01 12:42:52 2019 +0100
@@ -44,6 +44,7 @@
   WATERWAYAXIS: "Waterway Axis",
   WATERWAYPROFILES: "Waterway Profiles",
   BOTTLENECKS: "Bottlenecks",
+  BOTTLENECKSTATUS: "Bottleneck Status",
   BOTTLENECKISOLINE: "Bottleneck isolines",
   DISTANCEMARKS: "Distance marks",
   DISTANCEMARKSAXIS: "Distance marks, Axis",
@@ -279,15 +280,48 @@
           source: new VectorSource({
             strategy: bboxStrategy
           }),
-          style: new Style({
-            stroke: new Stroke({
-              color: "rgba(230, 230, 10, .8)",
-              width: 4
-            }),
-            fill: new Fill({
-              color: "rgba(230, 230, 10, .3)"
-            })
-          })
+          style: function(feature, resolution) {
+            if (resolution <= 50) {
+              return new Style({
+                stroke: new Stroke({
+                  color: "rgba(230, 230, 10, .8)",
+                  width: 4
+                }),
+                fill: new Fill({
+                  color: "rgba(230, 230, 10, .3)"
+                })
+              });
+            }
+            return [];
+          }
+        }),
+        isVisible: true,
+        showInLegend: true
+      },
+      {
+        name: LAYERS.BOTTLENECKSTATUS,
+        data: new VectorLayer({
+          source: new VectorSource({
+            strategy: bboxStrategy
+          }),
+          style: function(feature, resolution) {
+            if (resolution > 50) {
+              let bnCenter = getCenter(feature.getGeometry().getExtent());
+              let fillColor = feature.get("fa_critical")
+                ? "rgba(255, 0, 0, 0.5)"
+                : "rgba(0, 255, 0, 0.5)";
+              let strokeColor = feature.get("fa_critical") ? "red" : "green";
+              return new Style({
+                geometry: new Point(bnCenter),
+                image: new Circle({
+                  radius: 10,
+                  fill: new Fill({ color: fillColor }),
+                  stroke: new Stroke({ color: strokeColor, width: 2 })
+                })
+              });
+            }
+            return [];
+          }
         }),
         isVisible: true,
         showInLegend: true