From dbc5a34afe9e9ad890b06660bfadc075957d3b0b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr>
Date: Wed, 25 Aug 2021 10:54:39 +0200
Subject: [PATCH] format date for derniers signalements, detect click outside
 menu dropdown and remove store mock data

---
 src/App.vue                          | 11 +++++
 src/store/modules/feature.js         | 64 +---------------------------
 src/store/modules/feature_type.js    | 33 +-------------
 src/views/project/Project_detail.vue | 25 +++++++----
 4 files changed, 31 insertions(+), 102 deletions(-)

diff --git a/src/App.vue b/src/App.vue
index f3850df8..fea08926 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -14,6 +14,7 @@
           </router-link>
 
           <div
+            id="menu-dropdown"
             :class="['ui dropdown item', { 'active visible': menuIsOpen }]"
             v-if="project"
             @click="menuIsOpen = !menuIsOpen"
@@ -163,6 +164,16 @@ export default {
     logout() {
       this.$store.dispatch("LOGOUT");
     },
+    clickOutsideMenu(e) {
+      if (!e.target.closest("#menu-dropdown")) this.menuIsOpen = false;
+    },
+  },
+  created() {
+    window.addEventListener("mousedown", this.clickOutsideMenu);
+  },
+
+  beforeDestroy() {
+    window.removeEventListener("mousedown", this.clickOutsideMenu);
   },
 };
 </script>
diff --git a/src/store/modules/feature.js b/src/store/modules/feature.js
index 5db97dba..50c56a5c 100644
--- a/src/store/modules/feature.js
+++ b/src/store/modules/feature.js
@@ -3,69 +3,7 @@ const feature = {
   state: {
     attachmentFormset: [],
     linkedFormset: [],
-    features: [ // TODO: récupérer dans api
-      {
-        status: "archived",
-        title: "What the title !",
-        description:
-          "Very very very very very loooooooooooooong tiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiittttttttttttttlllllllllllllllllllllllllllllllleeeeeeeeeeeeeeeeeeeeee, isn't it ? 987653210",
-        created_on: "16/08/2021",
-        display_creator: "Babar",
-        feature_type: {
-          geom_type: "point",
-          title: "Éolienne",
-          is_editable: true,
-        }
-      },
-      {
-        status: "pending",
-        title: "Éolienne offshore",
-        description: "Feature pending",
-        created_on: "16/08/2021",
-        display_creator: "Babar",
-        feature_type: {
-          geom_type: "point",
-          title: "Éolienne",
-          is_editable: true,
-        }
-      },
-      {
-        status: "published",
-        title: "Éolienne privé",
-        description: "Feature published",
-        created_on: "16/08/2021",
-        display_creator: "Babar",
-        feature_type: {
-          geom_type: "point",
-          title: "Éolienne",
-          is_editable: true,
-        }
-      },
-      {
-        status: "published",
-        title: "Zac",
-        description: "Feature published",
-        created_on: "18/08/2021",
-        display_creator: "Winnie l'ourson",
-        feature_type: {
-          geom_type: "polygon",
-          title: "Zone de zonage",
-          is_editable: true,
-        }
-      },
-      {
-        status: "draft",
-        title: "Éolienne terrestre",
-        description: "Fedraft description",
-        created_on: "16/08/2021",
-        display_creator: "Babar",
-        feature_type: {
-          geom_type: "point",
-          title: "Éolienne",
-          is_editable: true,
-        }
-      },
-    ],
+    features: [],
     form: null,
     extra_form: [
       {
diff --git a/src/store/modules/feature_type.js b/src/store/modules/feature_type.js
index 070498e0..c347654c 100644
--- a/src/store/modules/feature_type.js
+++ b/src/store/modules/feature_type.js
@@ -9,36 +9,7 @@ const feature_type = {
     colorsStyleList: [],
     customForms: [],
     current_feature_type_slug: null,
-    feature_types: [ // TODO: récupérer a partir du projet depuis api
-      {
-        geom_type: "point",
-        title: "Éolienne",
-        is_editable: true,
-        slug: "1-Éolienne",
-        feature_type: "1"
-      },
-      {
-        geom_type: "linestring",
-        title: "Limite illimitée",
-        is_editable: true,
-        slug: "3-Limite-illimitée",
-        feature_type: "3"
-      },
-      {
-        geom_type: "polygon",
-        title: "Zone de zonage",
-        is_editable: true,
-        slug: "8-Zone-de-zonage",
-        feature_type: "8"
-      },
-      {
-        geom_type: "polygon",
-        title: "Signalement en nuevo proyecto",
-        is_editable: true,
-        slug: "11-signalement-en-nuevo-proyecto",
-        feature_type: "11"
-      }
-    ],
+    feature_types: [],
   },
   mutations: {
     SET_FEATURE_TYPES(state, feature_types) {
@@ -82,7 +53,7 @@ const feature_type = {
       axios
         .post(`${process.env.VUE_APP_DJANGO_API_BASE}feature_type/`, data)
         .then((response) => {
-          const routerHistory = this.$router.options.routerHistory 
+          const routerHistory = this.$router.options.routerHistory
           store.commit("SET_USER", response.data.user);
           this.$router.push(routerHistory[routerHistory.length - 1] || "/")
           store.dispatch("GET_USER_LEVEL_PROJECTS");
diff --git a/src/views/project/Project_detail.vue b/src/views/project/Project_detail.vue
index 9a440bdf..64fb1d1b 100644
--- a/src/views/project/Project_detail.vue
+++ b/src/views/project/Project_detail.vue
@@ -237,7 +237,6 @@
                 <div class="center aligned header">Derniers signalements</div>
                 <div class="center aligned description">
                   <div class="ui relaxed list">
-                    <!-- {% for item in last_features %} -->
                     <div
                       v-for="(item, index) in last_features"
                       :key="item.title + index"
@@ -251,7 +250,7 @@
                               params: {
                                 slug: project.slug,
                                 slug_type_signal: item.feature_type.title,
-                                slug_signal: item.title,
+                                slug_signal: item.feature_id,
                               },
                             }"
                             >{{ item.title }}</router-link
@@ -259,8 +258,8 @@
                         </div>
                         <div class="description">
                           <i
-                            >[{{ item.created_on
-                            }}<span v-if="user"
+                            >[{{ item.created_on | setDate
+                            }}<span v-if="user && item.display_creator"
                               >, par {{ item.display_creator }}
                             </span>
                             ]</i
@@ -287,16 +286,14 @@
                     >
                       <div class="content">
                         <div>
-                          <!-- // todo : adapt -->
-                          <router-link
-                            :to="item.related_feature.feature_url"
+                          <router-link :to="item.related_feature.feature_url"
                             >"{{ item.comment }}"</router-link
                           >
                         </div>
                         <div class="description">
                           <i
                             >[ {{ item.created_on
-                            }}<span v-if="user"
+                            }}<span v-if="user && item.display_author"
                               >, par {{ item.display_author }}
                             </span>
                             ]</i
@@ -458,6 +455,18 @@ export default {
     frag,
   },
 
+  filters: {
+    setDate: function (value) {
+      let date = new Date(value);
+      let d = date.toLocaleDateString("fr", {
+        year: "2-digit",
+        month: "numeric",
+        day: "numeric",
+      });
+      return d;
+    },
+  },
+
   data() {
     return {
       filenameToImport: { name: "", size: 0 },
-- 
GitLab