diff --git a/src/components/feature/FeatureListTable.vue b/src/components/feature/FeatureListTable.vue index f9fc303eda1d4d5745921d7bcc3a042ce86139ab..c2b6b4dc0ad08252416c0236c6dc04297d37fb3d 100644 --- a/src/components/feature/FeatureListTable.vue +++ b/src/components/feature/FeatureListTable.vue @@ -343,6 +343,10 @@ export default { ...mapState(['user', 'USER_LEVEL_PROJECTS']), ...mapState('projects', ['project']), + userStatus() { + return this.USER_LEVEL_PROJECTS[this.project.slug]; + }, + checked: { get() { return this.checkedFeatures; @@ -390,6 +394,7 @@ export default { return this.pageNumbers.slice(firstPageInList, firstPageInList + pagesQuantity); }, }, + destroyed() { this.$store.commit('feature/UPDATE_CHECKED_FEATURES', []); }, @@ -400,25 +405,23 @@ export default { }, canDeleteFeature(feature) { - return feature.properties.creator.username !== this.user.username && - !this.user.is_superuser && - !this.permissions.is_project_administrator; + if (this.userStatus === 'Administrateur projet') return true; //* can delete all + //* others can delete only their own features + return feature.properties.creator.username === this.user.username; }, canEditFeature(feature) { - const userStatus = this.USER_LEVEL_PROJECTS[this.project.slug]; - const access = { + const permissions = { 'Administrateur projet' : ['draft', 'published', 'archived'], - Modérateur : ['pending'], - 'Super Contributeur' : ['draft', this.project.moderation ? 'pending' : 'published'], - Contributeur : ['draft', this.project.moderation ? 'pending' : 'published'], + Modérateur : ['pending', 'published'], + 'Super Contributeur' : ['draft', 'pending', 'published'], + Contributeur : ['draft', 'pending', 'published'], }; - //if (userStatus === "Super Contributeur" || userStatus === "Contributeur") { //? should super contributeur behave the same, I don't think so - if (userStatus === 'Contributeur' && feature.properties.creator.username !== this.user.username) { + if (this.userStatus === 'Contributeur' && feature.properties.creator.username !== this.user.username) { return false; - } else if (access[userStatus]) { - return access[userStatus].includes(feature.properties.status.value); + } else if (permissions[this.userStatus]) { + return permissions[this.userStatus].includes(feature.properties.status.value); } else { return false; } diff --git a/src/views/feature/Feature_list.vue b/src/views/feature/Feature_list.vue index eb359d3c0601fe00cc197e219fc05b577bc712e1..f06b02453318f4bc1952c518f805eacb02947ac9 100644 --- a/src/views/feature/Feature_list.vue +++ b/src/views/feature/Feature_list.vue @@ -147,12 +147,12 @@ v-model="form.title" type="text" name="title" - @keyup.enter="fetchPagedFeatures" + @keyup.enter="resetPaginationNfetchFeatures" > <button id="submit-search" class="ui teal icon button" - @click="fetchPagedFeatures" + @click="resetPaginationNfetchFeatures" > <i class="search icon" /> </button> @@ -399,10 +399,10 @@ export default { watch: { 'form.type.selected'() { - this.fetchPagedFeatures(); + this.resetPaginationNfetchFeatures(); }, 'form.status.selected.value'() { - this.fetchPagedFeatures(); + this.resetPaginationNfetchFeatures(); }, map(newValue) { if (newValue && this.paginatedFeatures && this.paginatedFeatures.length) { @@ -681,6 +681,16 @@ export default { }); }, + resetPaginationNfetchFeatures() { + this.pagination = { + currentPage: 1, + pagesize: 15, + start: 0, + end: 15, + }, + this.fetchPagedFeatures(); + }, + //* Pagination for table *// handlePageChange(page) {