diff client/src/components/importoverview/ApprovedGaugeMeasurementDetail.vue @ 2608:13377f2a5c42

overview2: agm details prototype implemented
author Thomas Junk <thomas.junk@intevation.de>
date Wed, 13 Mar 2019 09:45:29 +0100
parents 5d0e5159190f
children 546ed93a9829
line wrap: on
line diff
--- a/client/src/components/importoverview/ApprovedGaugeMeasurementDetail.vue	Tue Mar 12 17:13:04 2019 +0100
+++ b/client/src/components/importoverview/ApprovedGaugeMeasurementDetail.vue	Wed Mar 13 09:45:29 2019 +0100
@@ -1,5 +1,89 @@
 <template>
-  <div>AGM</div>
+  <div class="diffs">
+    <div v-for="(result, index) in entry.summary" :key="index">
+      <div class="pl-3 d-flex flex-row">
+        <span v-if="result.versions.length == 1" class="agmcode text-left"
+          ><small
+            >{{ result["fk-gauge-id"] }} <translate>( New )</translate></small
+          ></span
+        >
+        <span v-if="result.versions.length == 2" class="agmcode text-left"
+          ><small>{{ result["fk-gauge-id"] }}</small></span
+        >
+        <span class="agmdetail text-left"
+          ><small>{{ result["measure-date"] | dateTime }}</small></span
+        >
+        <div
+          @click="toggleDiff(index)"
+          class="small ml-auto mt-auto mb-auto text-info text-left"
+        >
+          <font-awesome-icon
+            class="pointer"
+            v-if="showDiff == index"
+            icon="angle-up"
+            fixed-width
+          ></font-awesome-icon>
+          <font-awesome-icon
+            class="pointer"
+            v-if="showDiff != index"
+            icon="angle-down"
+            fixed-width
+          ></font-awesome-icon>
+        </div>
+      </div>
+      <div v-if="showDiff == index" class="pl-3 d-flex flex-row">
+        <div>
+          <div class="d-flex flex-row pl-3 text-left">
+            <div class="header border-bottom agmdetailskeys">
+              <small><translate>Value</translate></small>
+            </div>
+            <div
+              v-if="result.versions.length == 2"
+              class="header border-bottom agmdetailsvalues"
+            >
+              <small><translate>Old</translate></small>
+            </div>
+            <div class="header border-bottom agmdetailsvalues">
+              <small><translate>New</translate></small>
+            </div>
+          </div>
+          <div
+            class="d-flex flex-row pl-3 text-left"
+            v-for="(entry, index) in Object.keys(result.versions[0])"
+            :key="index"
+          >
+            <div
+              v-if="
+                result.versions.length == 1 ||
+                  result.versions[0][entry] != result.versions[1][entry]
+              "
+              class="agmdetailskeys"
+            >
+              <small>{{ entry }}</small>
+            </div>
+            <div
+              v-if="
+                result.versions.length == 1 ||
+                  result.versions[0][entry] != result.versions[1][entry]
+              "
+              class="agmdetailsvalues"
+            >
+              <small>{{ result.versions[0][entry] }}</small>
+            </div>
+            <div
+              v-if="
+                result.versions.length == 2 &&
+                  result.versions[0][entry] != result.versions[1][entry]
+              "
+              class="agmdetailsvalues"
+            >
+              <small>{{ result.versions[1][entry] }}</small>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
@@ -16,9 +100,33 @@
  * Author(s):
  * Thomas Junk <thomas.junk@intevation.de>
  */
+
+const NODIFF = -1;
+
 export default {
-  name: "agmdetails"
+  name: "agmdetails",
+  props: ["entry"],
+  data() {
+    return {
+      showDiff: NODIFF
+    };
+  },
+  methods: {
+    toggleDiff(number) {
+      if (this.showDiff !== number || this.showDiff == NODIFF) {
+        this.showDiff = number;
+      } else {
+        this.showDiff = NODIFF;
+      }
+    }
+  }
 };
 </script>
 
-<style></style>
+<style lang="scss" scoped>
+.diffs {
+  width: 615px;
+  max-height: 20vh;
+  overflow-y: auto;
+}
+</style>