changeset 3719:916534d9d6f6

client: waterlevel diagram: handle gauges without reference waterlevels
author Markus Kottlaender <markus@intevation.de>
date Thu, 20 Jun 2019 17:03:38 +0200
parents 7431c6680b90
children 1525ead37a2e
files client/src/components/gauge/Waterlevel.vue
diffstat 1 files changed, 22 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/gauge/Waterlevel.vue	Thu Jun 20 15:26:17 2019 +0200
+++ b/client/src/components/gauge/Waterlevel.vue	Thu Jun 20 17:03:38 2019 +0200
@@ -565,7 +565,9 @@
 
       // static, don't need updater
       this.drawNavigationChart();
-      this.drawRefLines(refWaterLevels);
+      if (refWaterLevels) {
+        this.drawRefLines(refWaterLevels);
+      }
 
       updaters.push(this.drawNashSutcliffe(72));
       updaters.push(this.drawNashSutcliffe(48));
@@ -730,6 +732,23 @@
       return { width, mainHeight, navHeight, mainMargin, navMargin };
     },
     getExtent(refWaterLevels) {
+      let waterlevelValues = [...this.waterlevels.map(wl => wl.waterlevel)];
+      if (refWaterLevels) {
+        waterlevelValues.push(
+          refWaterLevels.HDC + (refWaterLevels.HDC - refWaterLevels.LDC) / 8,
+          Math.max(
+            refWaterLevels.LDC - (refWaterLevels.HDC - refWaterLevels.LDC) / 4,
+            0
+          )
+        );
+      } else {
+        let delta = d3.max(waterlevelValues) - d3.min(waterlevelValues);
+        waterlevelValues.push(
+          d3.max(waterlevelValues) + delta * 0.1,
+          d3.min(waterlevelValues) - delta * 0.1
+        );
+      }
+
       return {
         // set min/max values for the date axis
         date: [
@@ -738,24 +757,8 @@
         ],
         // set min/max values for the waterlevel axis
         // including HDC (+ 1/8 HDC-LDC) and LDC (- 1/4 HDC-LDC)
-        waterlevel: d3.extent(
-          [
-            ...this.waterlevels,
-            {
-              waterlevel:
-                refWaterLevels.HDC +
-                (refWaterLevels.HDC - refWaterLevels.LDC) / 8
-            },
-            {
-              waterlevel: Math.max(
-                refWaterLevels.LDC -
-                  (refWaterLevels.HDC - refWaterLevels.LDC) / 4,
-                0
-              )
-            }
-          ],
-          d => d.waterlevel
-        )
+        // or, if no refWaterlevels exist, +-10% of delta between min and max wl
+        waterlevel: d3.extent(waterlevelValues)
       };
     },
     getScale() {