changeset 1387:13c6d44cf604

merge
author Markus Kottlaender <markus@intevation.de>
date Tue, 27 Nov 2018 16:02:58 +0100
parents 752b6bb2bee5 (current diff) 46440355dd7c (diff)
children df30521b2c0b
files
diffstat 2 files changed, 69 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/client/src/components/admin/Importqueue.vue	Tue Nov 27 15:01:54 2018 +0100
+++ b/client/src/components/admin/Importqueue.vue	Tue Nov 27 16:02:58 2018 +0100
@@ -14,6 +14,7 @@
                   </span>
                 </div>
                 <input
+                  v-model="searchQuery"
                   type="text"
                   class="form-control"
                   placeholder
@@ -25,6 +26,8 @@
                 <button @click="setFilter('successful')" :class="successfulStyle">Successful</button>
                 <button @click="setFilter('failed')" :class="failedStyle">Failed</button>
                 <button @click="setFilter('pending')" :class="pendingStyle">Pending</button>
+                <button @click="setFilter('rejected')" :class="rejectedStyle">Rejected</button>
+                <button @click="setFilter('accepted')" :class="acceptedStyle">Accepted</button>
               </div>
             </div>
             <table class="table">
@@ -37,7 +40,7 @@
                 </tr>
               </thead>
               <tbody>
-                <tr v-for="job in imports" :key="job.id">
+                <tr v-for="job in filteredImports" :key="job.id">
                   <td>{{job.enqueued}}</td>
                   <td>{{job.kind}}</td>
                   <td>{{job.user}}</td>
@@ -73,26 +76,65 @@
   name: "importqueue",
   data() {
     return {
+      searchQuery: "",
       successful: false,
       failed: false,
-      pending: false
+      pending: false,
+      rejected: false,
+      accepted: false
     };
   },
   methods: {
     setFilter(name) {
       this[name] = !this[name];
-      const allSet = this.successful && this.failed && this.pending;
+      const allSet =
+        this.successful &&
+        this.failed &&
+        this.pending &&
+        this.accepted &&
+        this.rejected;
       if (allSet) {
-        this.all = false;
         this.successful = false;
         this.failed = false;
         this.pending = false;
+        this.accepted = false;
+        this.rejected = false;
       }
     }
   },
   computed: {
     ...mapState("imports", ["imports"]),
     ...mapState("application", ["showSidebar"]),
+    filteredImports() {
+      const filtered = this.imports
+        .filter(element => {
+          if (!this.searchQuery) return true;
+          return [(element.kind, element.user, element.enqueued)].some(x => {
+            return x.toLowerCase().includes(this.searchQuery.toLowerCase());
+          });
+        })
+        .filter(y => {
+          if (
+            !this.successful &&
+            !this.failed &&
+            !this.pending &&
+            !this.accepted &&
+            !this.rejected
+          )
+            return true;
+          let filterCriteria = [];
+          if (this.successful) filterCriteria.push("successful");
+          if (this.failed) filterCriteria.push("failed");
+          if (this.pending) filterCriteria.push("pending");
+          if (this.accepted) filterCriteria.push("accepted");
+          if (this.rejected) filterCriteria.push("rejected");
+          const result = filterCriteria.map(selectedState => {
+            return y.state === selectedState;
+          });
+          return result.every(x => x);
+        });
+      return filtered;
+    },
     spacerStyle() {
       return [
         "spacer ml-3",
@@ -122,6 +164,20 @@
         "btn-light": !this.failed,
         "btn-dark": this.failed
       };
+    },
+    rejectedStyle() {
+      return {
+        btn: true,
+        "btn-light": !this.rejected,
+        "btn-dark": this.rejected
+      };
+    },
+    acceptedStyle() {
+      return {
+        btn: true,
+        "btn-light": !this.accepted,
+        "btn-dark": this.accepted
+      };
     }
   },
   mounted() {
--- a/pkg/imports/sr.go	Tue Nov 27 15:01:54 2018 +0100
+++ b/pkg/imports/sr.go	Tue Nov 27 16:02:58 2018 +0100
@@ -300,15 +300,22 @@
 }
 
 func (sr *SoundingResult) completeOverride() bool {
-	return sr.EPSG != nil && sr.Bottleneck != nil && sr.Date != nil && sr.DepthReference != nil
+	// sr.EPSG == nil -> WGS84
+	return sr.Bottleneck != nil && sr.Date != nil && sr.DepthReference != nil
 }
 
 func (sr *SoundingResult) loadMeta(f *zip.File) (*models.SoundingResultMeta, error) {
 	if f == nil {
+		var epsg uint
+		if sr.EPSG != nil {
+			epsg = *sr.EPSG
+		} else {
+			epsg = models.WGS84
+		}
 		return &models.SoundingResultMeta{
 			Date:           *sr.Date,
 			Bottleneck:     *sr.Bottleneck,
-			EPSG:           *sr.EPSG,
+			EPSG:           epsg,
 			DepthReference: *sr.DepthReference,
 		}, nil
 	}