changeset 1711:aec17976528e

feat: scheduled import loaded from backend
author Thomas Junk <thomas.junk@intevation.de>
date Tue, 08 Jan 2019 14:51:36 +0100
parents 292929fa0340
children 1368e2a52c29
files client/src/components/importschedule/Importschedule.vue client/src/components/importschedule/Importscheduledetail.vue client/src/store/imports.js
diffstat 3 files changed, 35 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/importschedule/Importschedule.vue	Tue Jan 08 14:20:32 2019 +0100
+++ b/client/src/components/importschedule/Importschedule.vue	Tue Jan 08 14:51:36 2019 +0100
@@ -64,7 +64,7 @@
               </tbody>
             </table>
             <div v-else class="mt-4 small text-center py-3">
-              <translate>No schedules</translate>
+              <translate>No scheduled imports</translate>
             </div>
             <button
               @click="newImport"
@@ -96,6 +96,7 @@
  */
 
 import { mapState } from "vuex";
+import { displayError } from "@/lib/errors.js";
 
 export default {
   name: "importschedule",
@@ -108,7 +109,19 @@
       searchQuery: ""
     };
   },
+  mounted() {
+    this.getSchedules();
+  },
   methods: {
+    getSchedules() {
+      this.$store.dispatch("imports/getSchedules").catch(error => {
+        const { status, data } = error.response;
+        displayError({
+          title: this.gettext("Backend Error"),
+          message: `${status}: ${data.message || data}`
+        });
+      });
+    },
     newImport() {
       this.$store.commit("imports/setImportScheduleDetailVisible");
     },
--- a/client/src/components/importschedule/Importscheduledetail.vue	Tue Jan 08 14:20:32 2019 +0100
+++ b/client/src/components/importschedule/Importscheduledetail.vue	Tue Jan 08 14:51:36 2019 +0100
@@ -299,6 +299,7 @@
 </template>
 
 <script>
+import { IMPORTTYPES } from "@/store/imports.js";
 import { mapState } from "vuex";
 import { displayInfo, displayError } from "@/lib/errors.js";
 import app from "@/main.js";
@@ -448,11 +449,8 @@
         data["url"] = this.url;
         data["insecure"] = this.insecure;
       }
-      const importTypes = {
-        BOTTLENECK: "bottleneck"
-      };
       this.triggerActive = false;
-      const type = importTypes[this.import_];
+      const type = IMPORTTYPES[this.import_];
       this.$store
         .dispatch("imports/triggerImport", { type, data })
         .then(response => {
--- a/client/src/store/imports.js	Tue Jan 08 14:20:32 2019 +0100
+++ b/client/src/store/imports.js	Tue Jan 08 14:51:36 2019 +0100
@@ -22,6 +22,10 @@
   REJECTED: "declined"
 };
 
+const IMPORTTYPES = {
+  BOTTLENECK: "bottleneck"
+};
+
 const SCHEDULES = {
   DAILY: "daily",
   MONTHLY: "monthly"
@@ -82,6 +86,20 @@
     }
   },
   actions: {
+    getSchedules({ commit }) {
+      return new Promise((resolve, reject) => {
+        HTTP.get("/imports/config", {
+          headers: { "X-Gemma-Auth": localStorage.getItem("token") }
+        })
+          .then(response => {
+            commit("setSchedules", response.data);
+            resolve(response);
+          })
+          .catch(error => {
+            reject(error);
+          });
+      });
+    },
     triggerImport({ commit }, { type, data }) {
       return new Promise((resolve, reject) => {
         HTTP.post("imports/" + type, data, {
@@ -128,4 +146,4 @@
   }
 };
 
-export { imports, STATES, SCHEDULES };
+export { imports, STATES, SCHEDULES, IMPORTTYPES };