diff --git a/src/components/ImportTask.vue b/src/components/ImportTask.vue new file mode 100644 index 0000000000000000000000000000000000000000..bbf0d1d695f3ce38c066bb30b85f2f3ff70dc8df --- /dev/null +++ b/src/components/ImportTask.vue @@ -0,0 +1,72 @@ +<template> + <table class="ui collapsing celled table"> + <thead> + <tr> + <!-- <th>Date</th> --> + <th>Fichier</th> + <th>Status</th> + <!-- <th>Action</th> --> + </tr> + </thead> + <tbody> + <tr :key="importFile.created_on" v-for="importFile in data"> + <!-- <td>{{importFile.created_on |setDate}}</td> --> + <td> + <h4 class="ui header"> + <div :data-tooltip="dataTooltipMsg(importFile.geojson_file_name)" > + {{importFile.geojson_file_name |subString}} + <div class="sub header">ajouté le {{importFile.created_on |setDate}} + </div> + </div> + </h4> + </td> + + <td> + <div :data-tooltip="dataTooltipMsg(importFile.infos)" class="ui icon"> + <i v-if="importFile.status == 'pending'" class="orange sync icon"></i> + <i v-else-if="importFile.status == 'processing'" class="orange hourglass half icon"></i> + <i v-else-if="importFile.status == 'finished'" class="green check circle outline icon" ></i> + <i v-else-if="importFile.status == 'failed'" class="red x icon" ></i> + <i v-else class="red ban icon"></i> + </div> + </td> + </tr> + </tbody> +</table> +</template> + + +<script> + +export default { + data: function () { + return { + open: false, + } + }, + props: ['data'], + filters:{ + setDate : function(value){ + let date = new Date(value); + let d = date.toLocaleDateString('fr', { + year: 'numeric', + month: 'long', + day: 'numeric', + }); + return d + }, + subString : function(value){ + console.log(value) + return value.substring(0,26)+".." + } + }, + methods:{ + dataTooltipMsg(msg){ + return msg; + }, + toggle() { + this.open = !this.open; + }, + }, +} +</script> \ No newline at end of file diff --git a/src/store/modules/feature_type.js b/src/store/modules/feature_type.js index 18afeb2aca4dc04a82efaf7fbeebe58977e2326b..d71613072b753a1b97ddc2d9bd185f42ae14d79e 100644 --- a/src/store/modules/feature_type.js +++ b/src/store/modules/feature_type.js @@ -10,16 +10,22 @@ const feature_type = { geom_type: "point", title: "Éolienne", is_editable: true, + slug: "2-Éolienne", + feature_type: "2" }, { 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" } ], }, @@ -50,7 +56,7 @@ const feature_type = { }, getters: { feature_type: state => state.feature_types.find( - (el) => el.title === state.current_feature_type_slug + (el) => el.slug === state.current_feature_type_slug ) }, actions: { diff --git a/src/views/feature_type/Feature_type_detail.vue b/src/views/feature_type/Feature_type_detail.vue index a655114d9d8b57fb979eb2b30fbd83c0ddf14d86..ba8473c8fbd7117dc40205ea5b8b90a9095d79ac 100644 --- a/src/views/feature_type/Feature_type_detail.vue +++ b/src/views/feature_type/Feature_type_detail.vue @@ -92,6 +92,7 @@ <button type="submit" class="ui fluid teal icon button"> <i class="upload icon"></i> Lancer l'import </button> + <ImportTask v-if="dataImport" :data="dataImport"/> </form> </div> <div @@ -180,11 +181,15 @@ </template> <script> +import axios from 'axios'; import { mapGetters, mapState } from "vuex"; +import ImportTask from '@/components/ImportTask'; export default { name: "Feature_type_detail", - + components: { + "ImportTask": ImportTask + }, computed: { ...mapGetters(["project"]), ...mapState("feature", ["features"]), @@ -192,7 +197,7 @@ export default { structure: function () { // * je ne sais pas pourquoi ça s'appelle structure return this.feature_types.find( - (el) => el.title === this.$route.params.feature_type_slug + (el) => el.slug === this.$route.params.feature_type_slug ); }, }, @@ -201,6 +206,7 @@ export default { return { showImport: false, showExport: true, + dataImport: [], }; }, @@ -211,12 +217,22 @@ export default { importGeoJson() { console.log("Comment faire pour importer le geoJson ?"); }, + getImports(){ + let url = process.env.VUE_APP_DJANGO_API_BASE + 'import-tasks?feature_type_id=' + this.structure.feature_type; + axios.get(url) + .then((response) => { + this.dataImport = response.data + }) + .catch(err => { + console.log(err) + }); + } }, - created() { if (!this.project) { this.$store.commit("SET_PROJECT_SLUG", this.$route.params.slug); } + this.getImports(); }, }; </script> \ No newline at end of file diff --git a/src/views/project/Project_detail.vue b/src/views/project/Project_detail.vue index 5a5662ddfdccda0283cc0fccb73dedacc61ae28f..0de08830d0d86586782cd0aeb68c9f26583d2fbc 100644 --- a/src/views/project/Project_detail.vue +++ b/src/views/project/Project_detail.vue @@ -77,7 +77,7 @@ <router-link :to="{ name: 'details-type-signalement', - params: { feature_type_slug: type.title }, + params: { feature_type_slug: type.slug }, }" > <img @@ -108,7 +108,7 @@ <router-link :to="{ name: 'ajouter-signalement', - params: { slug_type_signal: type.title }, + params: { slug_type_signal: type.slug }, }" v-if="project && permissions.can_create_feature" class=" @@ -129,7 +129,7 @@ <router-link :to="{ name: 'dupliquer-type-signalement', - params: { slug_type_signal: type.title }, + params: { slug_type_signal: type.slug }, }" v-if="project && permissions.can_create_feature" class="