changeset 2615:7025d082c115

client: importoverview2: fixed counter in commit button The counter was based on the length of the state.reviewed array. This array was filled with duplicate entries when you toggle an import between approved and rejected.
author Markus Kottlaender <markus@intevation.de>
date Wed, 13 Mar 2019 13:08:36 +0100
parents 6691bf76af1c
children be60888e7c43
files client/src/components/importoverview/ImportOverviewAlt.vue client/src/store/imports.js
diffstat 2 files changed, 11 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/importoverview/ImportOverviewAlt.vue	Wed Mar 13 12:45:06 2019 +0100
+++ b/client/src/components/importoverview/ImportOverviewAlt.vue	Wed Mar 13 13:08:36 2019 +0100
@@ -11,7 +11,7 @@
       <Filters></Filters>
       <div>
         <button :class="commitStyle">
-          <translate>Commit</translate> {{ toCommit.length }}
+          <translate>Commit</translate> {{ reviewed.length }}
         </button>
       </div>
     </div>
@@ -42,7 +42,7 @@
  */
 
 import { displayError } from "@/lib/errors.js";
-import { mapState, mapGetters } from "vuex";
+import { mapState } from "vuex";
 
 export default {
   name: "importoverviewalt",
@@ -51,14 +51,13 @@
     LogEntry: () => import("./LogEntry.vue")
   },
   computed: {
-    ...mapState("imports", ["imports", "filters"]),
-    ...mapGetters("imports", ["toCommit"]),
+    ...mapState("imports", ["imports", "filters", "reviewed"]),
     commitStyle() {
       return {
         btn: true,
         "btn-sm": true,
-        "btn-light": this.toCommit.length == 0,
-        "btn-info": this.toCommit.length > 0
+        "btn-light": this.reviewed.length == 0,
+        "btn-info": this.reviewed.length > 0
       };
     }
   },
--- a/client/src/store/imports.js	Wed Mar 13 12:45:06 2019 +0100
+++ b/client/src/store/imports.js	Wed Mar 13 13:08:36 2019 +0100
@@ -77,9 +77,6 @@
   namespaced: true,
   state: init(),
   getters: {
-    toCommit: state => {
-      return state.reviewed;
-    },
     processedReviews: state => {
       return state.staging
         .filter(x => x.status !== STATES.NEEDSAPPROVAL)
@@ -165,7 +162,12 @@
         state.reviewed = state.reviewed.filter(x => x.id !== stagedResult.id);
       } else {
         stagedResult.status = newStatus;
-        state.reviewed.push({ id: stagedResult.id, status: newStatus });
+        let index = state.reviewed.findIndex(r => r.id === id);
+        if (index !== -1) {
+          state.reviewed[index].status = newStatus;
+        } else {
+          state.reviewed.push({ id: stagedResult.id, status: newStatus });
+        }
       }
     },
     toggleApproval: (state, change) => {