diff --git a/src/components/ImportTask.vue b/src/components/ImportTask.vue index 87b096ec7d904f5fbb15e5c616860a07836c4d24..7214eb04dac1288c2a5388c4bfa2d9c537ba78c8 100644 --- a/src/components/ImportTask.vue +++ b/src/components/ImportTask.vue @@ -1,38 +1,42 @@ <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 id="table-imports"> + <table class="ui collapsing celled table"> + <thead> + <tr> + <th>Fichier</th> + <th>Status</th> + </tr> + </thead> + <tbody> + <tr :key="importFile.created_on" v-for="importFile in data"> + <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> - </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> + </h4> </td> - </tr> - </tbody> -</table> + + <td> + <span v-if="importFile.infos" :data-tooltip="dataTooltipMsg(importFile.infos)" class="ui icon"> + <i v-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> + </span> + <span v-if="importFile.status == 'pending'" data-tooltip="Statut en attente. Clickez pour rafraichir."> + <i + class="orange sync icon" + v-on:click="reloadPage()" + /> + </span> + </td> + </tr> + </tbody> + </table> + </div> </template> @@ -56,13 +60,32 @@ export default { return d }, subString : function(value){ - return value.substring(0,26)+".." + return value.substring(0,27)+".." } }, methods:{ dataTooltipMsg(msg){ return msg; }, + reloadPage() { + this.$router.go() + }, }, } -</script> \ No newline at end of file +</script> + +<style scoped> +.sync { + cursor: pointer; +} + +#table-imports{ + padding-top: 1em +} + +/* +td{ + text-overflow: ellipsis; +} */ + +</style> \ No newline at end of file diff --git a/src/store/modules/feature_type.js b/src/store/modules/feature_type.js index d71613072b753a1b97ddc2d9bd185f42ae14d79e..3c0941da4325b7619ce4ff9bec283c3bc0c19b53 100644 --- a/src/store/modules/feature_type.js +++ b/src/store/modules/feature_type.js @@ -17,15 +17,22 @@ const feature_type = { geom_type: "linestring", title: "Limite illimitée", is_editable: true, - slug: "3-Limite illimitée", + slug: "3-Limite-illimitée", feature_type: "3" }, { geom_type: "polygon", title: "Zone de zonage", is_editable: true, - slug: "8-Zone de zonage", + 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" } ], }, diff --git a/src/views/feature_type/Feature_type_detail.vue b/src/views/feature_type/Feature_type_detail.vue index c8bc3fdeddff2e889c640a1faf8ba094d392f809..bbe2af3ccb9e608e130023ab4f9f274241188ea9 100644 --- a/src/views/feature_type/Feature_type_detail.vue +++ b/src/views/feature_type/Feature_type_detail.vue @@ -85,7 +85,9 @@ @change="onFileChange" /> </div> - <button @click="importGeoJson" class="ui fluid teal icon button"> + <button + :disabled="filenameToImport.size == 0" + @click="importGeoJson" class="ui fluid teal icon button"> <i class="upload icon"></i> Lancer l'import </button> <ImportTask v-if="dataImport.length" :data="dataImport"/> @@ -200,7 +202,7 @@ export default { data() { return { - filenameToImport: {name: "Sélectionner un fichier GeoJSON ..."}, + filenameToImport: {name: 'Sélectionner un fichier GeoJSON ...', size: 0}, fileToImport: {}, showImport: false, showExport: true, @@ -209,11 +211,13 @@ export default { }, methods: { + // forceRerender(key) { + // return key += 1; + // }, onFileChange(e) { var files = e.target.files || e.dataTransfer.files; if (!files.length) return; - // this.fileToImport = files[0] this.filenameToImport = files[0] }, toggleImport() { @@ -221,27 +225,26 @@ export default { }, importGeoJson() { - console.log("Comment faire pour importer le geoJson ?"); - console.log(this.$route.params); - - // POST ICI - // path('projet/<slug:slug>/type-signalement/<slug:feature_type_slug>/importer-geojson/', - // ImportFromGeoJSON.as_view(), name='import_from_geojson'), - var formData = new FormData(); - var jsonFile = document.querySelector('#json_file'); - formData.append("image", jsonFile); - let url = process.env.DOMAIN + 'projet/' + this.$route.params.slug + '/ype-signalement/'+this.$route.params.feature_type_slug + '/importer-geojson/' ; - axios.post(url, formData, { headers: { - 'Content-Type': 'multipart/form-data' - } - }) - .then((response) => { - console.log(response.data) - }) - .catch(err => { - console.log(err) - }); - + if (this.filenameToImport.size > 0){ + var formData = new FormData(); + formData.append("json_file", this.filenameToImport); + console.log(formData) + let url = process.env.VUE_APP_URL_BASE + 'projet/' + this.$route.params.slug + '/type-signalement/'+this.$route.params.feature_type_slug + '/importer-geojson/' ; + axios.post(url, formData, { headers: { + 'Content-Type': 'multipart/form-data' + } + }) + .then((response) => { + if (response.status == 200){ + this.getImports() + // TODO: RELOAD DERNIER SIGNALEMENTS + } + }) + .catch(err => { + // TODO : HANDLER ERROR + console.log(err) + }); + } }, getImports(){ let url = process.env.VUE_APP_DJANGO_API_BASE + 'import-tasks?feature_type_id=' + this.structure.feature_type;