diff --git a/src/App.vue b/src/App.vue index f3850df87b3f7a0a6960e2183b903171ac896271..fea08926d24606c6eadf38f5da9313f6c9cf9a64 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 5db97dba3e7f4d7695be00aca55201578d3c05cb..50c56a5cfeb14acba30e390b2c24f13fa6e4ed9d 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 070498e0326bb53d89bb95537b61dbbade20f4fb..c347654ce34c35b8658564a7de848f967e6eb2cf 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 9a440bdf370d1dfd6c5eb209bea2b46c05437a41..64fb1d1bf479b1c4bb3d7edaada1fd5b349003c6 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 },