changeset 3722:f180de37903c

client: hydrological conditions diagram: handle gauges without reference waterlevels
author Markus Kottlaender <markus@intevation.de>
date Thu, 20 Jun 2019 18:10:08 +0200
parents ed4820efb7e6
children 9759355d7b90
files client/src/components/gauge/HydrologicalConditions.vue
diffstat 1 files changed, 21 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/gauge/HydrologicalConditions.vue	Thu Jun 20 18:04:53 2019 +0200
+++ b/client/src/components/gauge/HydrologicalConditions.vue	Thu Jun 20 18:10:08 2019 +0200
@@ -543,7 +543,9 @@
       updaters.push(this.drawWaterlevelLineChart("q75"));
       updaters.push(this.drawWaterlevelLineChart("mean", this.yearWaterlevels));
       updaters.push(this.drawNowLines());
-      this.drawRefLines(refWaterLevels); // static, doesn't need an updater
+      if (refWaterLevels) {
+        this.drawRefLines(refWaterLevels); // static, doesn't need an updater
+      }
 
       // INTERACTIONS
 
@@ -673,23 +675,31 @@
       return { width, mainHeight, navHeight, mainMargin, navMargin };
     },
     getExtent(refWaterLevels) {
-      const waterlevelsRelevantForExtent = [];
+      const waterlevelValues = [];
       this.longtermWaterlevels.forEach(wl => {
-        waterlevelsRelevantForExtent.push(wl.min, wl.max);
+        waterlevelValues.push(wl.min, wl.max);
       });
-      waterlevelsRelevantForExtent.push(
-        refWaterLevels.HDC + (refWaterLevels.HDC - refWaterLevels.LDC) / 8,
-        Math.max(
-          refWaterLevels.LDC - (refWaterLevels.HDC - refWaterLevels.LDC) / 4,
-          0
-        )
-      );
+      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: [startOfYear(new Date()), endOfYear(new Date())],
         // set min/max values for the waterlevel axis
         // including HDC (+ 1/8 HDC-LDC) and LDC (- 1/4 HDC-LDC)
-        waterlevel: d3.extent(waterlevelsRelevantForExtent)
+        waterlevel: d3.extent(waterlevelValues)
       };
     },
     getScale() {