changeset 3438:df6c2973f791

New parsing of incoming afdcsv We now know, that the format needs less dynamic parsing, we rely on Incoming csv Format #label,# >= LDC [h],# < 230.00 [h],# >= 230.00 [h],# >= 250.00 [h] 05-2019,215.500,0.000,0.000,215.500 Format: $LABEL, $LDC, $BELOWLIMIT1, $BETWEENLIMIT12, $ABOVELIMIT2^ So code doing magic like shift() and pop() could be removed for much simpler array destructuring.
author Thomas Junk <thomas.junk@intevation.de>
date Fri, 24 May 2019 11:15:58 +0200
parents 6a044d6c2cdc
children d7ddb21f7017 8801811bf9f5
files client/src/components/fairway/AvailableFairwayDepthDialogue.vue client/src/store/fairwayavailability.js
diffstat 2 files changed, 42 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/fairway/AvailableFairwayDepthDialogue.vue	Fri May 24 10:21:06 2019 +0200
+++ b/client/src/components/fairway/AvailableFairwayDepthDialogue.vue	Fri May 24 11:15:58 2019 +0200
@@ -506,6 +506,7 @@
           this.$store.commit("application/paneSetup", "AVAILABLEFAIRWAYDEPTH");
         })
         .catch(error => {
+          console.log(error);
           const { status, data } = error.response;
           displayError({
             title: this.$gettext("Backend Error"),
--- a/client/src/store/fairwayavailability.js	Fri May 24 10:21:06 2019 +0200
+++ b/client/src/store/fairwayavailability.js	Fri May 24 11:15:58 2019 +0200
@@ -97,6 +97,46 @@
   };
 };
 
+/**
+ * transformAFD
+ * @param {string} csv
+ *
+ * takes the afd csv and transforms it to an intermediary format
+ * for display of diagrams
+ *
+ * Incoming csv Format
+ * #label,# >= LDC [h],# < 230.00 [h],# >= 230.00 [h],# >= 250.00 [h]
+ * 05-2019,215.500,0.000,0.000,215.500
+ *
+ * Format:
+ * $LABEL, $LDC, $BELOWLIMIT1, $BETWEENLIMIT12, $ABOVELIMIT2^
+ *
+ * This format is assumed to be fix
+ *
+ */
+const transformAFD = csv => {
+  return csv.map(e => {
+    const result = e.split(",");
+    let [label, ldc, lower, middle, highestLevel] = result;
+    let levelsWithSum = [
+      {
+        height: Number(lower),
+        translateY: 0
+      },
+      {
+        height: Number(middle),
+        translateY: Number(lower)
+      }
+    ];
+    return {
+      label: label,
+      ldc: ldc,
+      highestLevel: highestLevel,
+      lowerLevels: levelsWithSum
+    };
+  });
+};
+
 const fairwayavailability = {
   init,
   namespaced: true,
@@ -216,28 +256,7 @@
             commit("setCSV", data);
             const csv = data.split("\n").filter(x => x !== ""); //omit empty lines
             commit("setLegend", csv.shift());
-            let transformed = csv.map(e => {
-              const result = e.split(",");
-              const label = result.shift();
-              const ldc = result.shift();
-              const highestLevel = result.pop();
-              const sum = result.reduce((x, y) => Number(x) + Number(y));
-              let last = 0;
-              const levelsWithSum = result.map(x => {
-                let result = {
-                  height: Number(x),
-                  translateY: sum - (last + Number(x))
-                };
-                last = last + Number(x);
-                return result;
-              });
-              return {
-                label: label,
-                ldc: ldc,
-                highestLevel: highestLevel,
-                lowerLevels: levelsWithSum
-              };
-            });
+            let transformed = transformAFD(csv);
             commit("setFwData", transformed);
             resolve(response);
           })