diff client/src/components/importoverview/ImportOverview.vue @ 4498:8763da6bef4a

export imports
author Thomas Junk <thomas.junk@intevation.de>
date Mon, 30 Sep 2019 15:28:15 +0200
parents b4880e7d4082
children df91a747872c
line wrap: on
line diff
--- a/client/src/components/importoverview/ImportOverview.vue	Mon Sep 30 13:41:39 2019 +0200
+++ b/client/src/components/importoverview/ImportOverview.vue	Mon Sep 30 15:28:15 2019 +0200
@@ -231,24 +231,64 @@
   },
   methods: {
     saveImportsView() {
-      let element = document.createElement("a");
-      element.setAttribute("download", "log.txt");
-      element.setAttribute("href", this.csvLink());
-      element.click();
-    },
-    csvLink() {
-      return (
-        "data:text/csv;charset=utf-8," +
-        encodeURIComponent(
-          this.imports
-            .map(el => {
-              return ` ${el.id}, ${el.kind}, ${el.enqueued}, ${el.user ||
-                " "}, ${el.country || " "}, ${el.signer || " "}, ${el.state ||
-                " "}, ${el.warnings || " "}`;
-            })
-            .join("\n")
-        )
-      );
+      const content = "";
+      this.$store.commit("application/popup", {
+        icon: "clipboard-check",
+        title: this.$gettext("Export logs"),
+        padding: false,
+        big: true,
+        content: content,
+        confirm: {
+          icon: "check",
+          callback: dates => {
+            const { from, to } = dates;
+            HTTP.get(
+              `/imports?from=${encodeURIComponent(
+                format(startOfDay(new Date(from)), "YYYY-MM-DDTHH:mm:ssZ")
+              )}&to=${encodeURIComponent(
+                format(endOfDay(new Date(to)), "YYYY-MM-DDTHH:mm:ssZ")
+              )}&query=`,
+              {
+                headers: { "X-Gemma-Auth": localStorage.getItem("token") }
+              }
+            )
+              .then(response => {
+                const { imports } = response.data;
+                if (!imports) return;
+                const csvLink =
+                  "data:text/csv;charset=utf-8," +
+                  encodeURIComponent(
+                    "id, kind, enqueued, user, country, signer, state, warnings\n" +
+                      imports
+                        .map(el => {
+                          return ` ${el.id}, ${el.kind}, ${
+                            el.enqueued
+                          }, ${el.user || " "}, ${el.country ||
+                            " "}, ${el.signer || " "}, ${el.state ||
+                            " "}, ${el.warnings || " "}`;
+                        })
+                        .join("\n")
+                  );
+                let element = document.createElement("a");
+                element.setAttribute("download", "log.txt");
+                element.setAttribute("href", csvLink);
+                element.click();
+              })
+              .catch(error => {
+                const { status, data } = error.response;
+                displayError({
+                  title: this.$gettext("Backend Error"),
+                  message: `${status}: ${data.message || data}`
+                });
+              });
+          }
+        },
+        cancel: {
+          label: this.$gettext("Cancel"),
+          icon: "times"
+        },
+        dateSelection: true
+      });
     },
     showSingleRessource(id) {
       id = id * 1;