changeset 2600:6e6709bab5c4

overview2 WIP
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 12 Mar 2019 14:22:42 +0100
parents 61aba7e78d3a
children b9523d876d01
files client/src/store/imports.js
diffstat 1 files changed, 17 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/store/imports.js	Tue Mar 12 14:06:22 2019 +0100
+++ b/client/src/store/imports.js	Tue Mar 12 14:22:42 2019 +0100
@@ -34,6 +34,7 @@
     stretches: [],
     imports: [],
     staging: [],
+    reviewed: [],
     importToReview: null,
     stagingVisible: true,
     logsVisible: true,
@@ -79,9 +80,7 @@
   state: init(),
   getters: {
     toCommit: state => {
-      return state.imports.filter(x => {
-        return x.status && x.status !== STATES.NEEDSAPPROVAL;
-      });
+      return state.reviewed;
     },
     processedReviews: state => {
       return state.staging
@@ -105,8 +104,20 @@
       state.stretches = stretches;
     },
     setImports: (state, imports) => {
+      const lookUp = state.reviewed.reduce((o, n) => {
+        const { id, status } = n;
+        o[id] = status;
+        return o;
+      }, {});
       imports = imports.map(x => {
-        if (x.state === "pending") x["status"] = STATES.NEEDSAPPROVAL;
+        if (x.state === "pending") {
+          const reviewState = lookUp[x.id];
+          if (reviewState) {
+            x.status = reviewState;
+          } else {
+            x.status = STATES.NEEDSAPPROVAL;
+          }
+        }
         return x;
       });
       state.imports = imports;
@@ -153,8 +164,10 @@
       });
       if (stagedResult.status === newStatus) {
         stagedResult.status = STATES.NEEDSAPPROVAL;
+        state.reviewed = state.reviewed.filter(x => x.id !== stagedResult.id);
       } else {
         stagedResult.status = newStatus;
+        state.reviewed.push({ id: stagedResult.id, status: newStatus });
       }
     },
     toggleApproval: (state, change) => {