Newer
Older
Sébastien DA ROCHA
committed
<template>
<div id="table-imports">
<div class="imports-header">
<div class="file-column">
Fichiers importés
</div>
<div class="status-column">
</div>
</div>
<div
v-for="importFile in importsForFeatureType"
:key="importFile.created_on"
class="filerow"
<div class="file-column">
<h4 class="ui header align-right">
<div :data-tooltip="importFile.geojson_file_name" class="ellipsis">
{{ importFile.geojson_file_name }}
<div class="sub header">
ajouté le {{ importFile.created_on | formatDate }}
</div>
</div>
<div class="status-column">
<span
v-if="importFile.infos"
:data-tooltip="importFile.infos"
class="ui icon margin-left"
<i
v-if="importFile.status === 'processing'"
class="orange hourglass half icon"
aria-hidden="true"
/>
<i
v-else-if="importFile.status === 'finished'"
class="green check circle outline icon"
aria-hidden="true"
/>
<i
v-else-if="importFile.status === 'failed'"
class="red x icon"
aria-hidden="true"
/>
<i
v-else
class="red ban icon"
aria-hidden="true"
/>
</span>
<span
v-if="importFile.status === 'pending'"
data-tooltip="Statut en attente. Clickez pour rafraichir."
>
<i
:class="['orange icon', ready && !reloading ? 'sync' : 'hourglass half rotate']"
aria-hidden="true"
@click="fetchImports()"
/>
</span>
Sébastien DA ROCHA
committed
</div>
</template>
<script>
Sébastien DA ROCHA
committed
export default {
filters: {
year: 'numeric',
month: 'long',
day: 'numeric',
Sébastien DA ROCHA
committed
});
},
subString: function (value) {
Sébastien DA ROCHA
committed
},
},
data() {
return {
open: false,
ready: true,
};
},
importsForFeatureType() {
return this.data.filter((el) => el.feature_type_title === this.$route.params.feature_type_slug);
}
Sébastien DA ROCHA
committed
watch: {
data(newValue) {
if (newValue) {
Sébastien DA ROCHA
committed
this.ready = true;
}
},
},
methods: {
fetchImports() {
this.$store.dispatch(
project_slug: this.$route.params.slug,
feature_type: this.$route.params.feature_type_slug
});
this.$store.dispatch('feature/GET_PROJECT_FEATURES', {
project_slug: this.$route.params.slug,
feature_type__slug: this.$route.params.feature_type_slug
}).catch((err) => {
console.error(err);
Sébastien DA ROCHA
committed
//* show that the action was triggered, could be improved with animation (doesn't work)
this.ready = false;
},
},
};
</script>
Sébastien DA ROCHA
committed
#table-imports {
border: 1px solid lightgrey;
margin-top: 1rem;
.imports-header {
border-bottom: 1px solid lightgrey;
font-weight: bold;
> div {
padding: .5em 1em;
}
.filerow {
background-color: #fff;
}
.imports-header, .filerow {
display: flex;
.file-column {
width: 80%;
h4 {
margin-bottom: .2em;
}
text-align: right;
Sébastien DA ROCHA
committed
}
i.icon {
width: 20px !important;
height: 20px !important;
Sébastien DA ROCHA
committed
}
-webkit-animation:spin 1.5s cubic-bezier(0.7, 0.3, 0, 0) infinite;
-moz-animation:spin 1.5s cubic-bezier(0.7, 0.3, 0, 0) infinite;
animation:spin 1.5s cubic-bezier(0.7, 0.3, 0, 0) infinite;
Sébastien DA ROCHA
committed
}
@-moz-keyframes spin { 100% { -moz-transform: rotate(180deg); } }
@-webkit-keyframes spin { 100% { -webkit-transform: rotate(180deg); } }
@keyframes spin { 100% { -webkit-transform: rotate(180deg); transform:rotate(180deg); } }