diff --git a/src/views/feature/Feature_list.vue b/src/views/feature/Feature_list.vue index f5d4b5ba5abd4560312d060de958d326739424b2..8f69f3a1634a4571f2df40efba108ab6c91fb598 100644 --- a/src/views/feature/Feature_list.vue +++ b/src/views/feature/Feature_list.vue @@ -87,7 +87,6 @@ <div class="field wide four column no-margin-mobile"> <label>Type</label> <Dropdown - @update:selection="onFilterTypeChange($event)" :options="form.type.choices" :selected="form.type.selected" :selection.sync="form.type.selected" @@ -99,8 +98,7 @@ <label>Statut</label> <!-- //* giving an object mapped on key name --> <Dropdown - @update:selection="onFilterStatusChange($event)" - :options="form.status.choices" + :options="statusChoices" :selected="form.status.selected.name" :selection.sync="form.status.selected" :search="true" @@ -116,7 +114,7 @@ type="text" name="title" v-model="form.title" - @input="onFilterChange()" + @input="onFilterChange" /> <button type="button" @@ -128,7 +126,7 @@ </div> </div> </div> - <!-- map params, updated on map move // todo : brancher sur la carte probablement --> + <!-- map params, updated on map move --> <input type="hidden" name="zoom" v-model="zoom" /> <input type="hidden" name="lat" v-model="lat" /> <input type="hidden" name="lng" v-model="lng" /> @@ -255,15 +253,15 @@ export default { filteredFeatures() { let results = this.geojsonFeatures; - if (this.filterType) { + if (this.form.type.selected) { results = results.filter( - (el) => el.properties.feature_type.title === this.filterType + (el) => el.properties.feature_type.title === this.form.type.selected ); } - if (this.filterStatus) { - console.log("filter by" + this.filterStatus); + if (this.form.status.selected.value) { + console.log("filter by" + this.form.status.selected.value); results = results.filter( - (el) => el.properties.status.value === this.filterStatus + (el) => el.properties.status.value === this.form.status.selected.value ); } if (this.form.title) { @@ -278,6 +276,21 @@ export default { } return results; }, + + statusChoices() { + //* if project is not moderate, remove pending status + return this.form.status.choices.filter((el) => + this.project.moderation ? true : el.value !== "pending" + ); + }, + }, + + watch: { + filteredFeatures(newValue, oldValue) { + if (newValue && newValue !== oldValue) { + this.onFilterChange() + } + } }, methods: { @@ -308,25 +321,6 @@ export default { this.modalAllDelete(); }, - onFilterStatusChange(newvalue) { - this.filterStatus = null; - if (newvalue) { - console.log("filter change", newvalue.value); - this.filterStatus = newvalue.value; - } - - this.onFilterChange(); - }, - - onFilterTypeChange(newvalue) { - this.filterType = null; - if (newvalue) { - console.log("filter change", newvalue); - this.filterType = newvalue; - } - this.onFilterChange(); - }, - onFilterChange() { var features = this.filteredFeatures; this.featureGroup.clearLayers();