diff --git a/src/views/feature/Feature_list.vue b/src/views/feature/Feature_list.vue
index 5b1034e62d325bd0ce0a82424e0366ee010d886e..073cff952d3fe8033d77d69968cc4b7833e785b9 100644
--- a/src/views/feature/Feature_list.vue
+++ b/src/views/feature/Feature_list.vue
@@ -266,31 +266,6 @@ export default {
       return this.$store.state.configuration.VUE_APP_DJANGO_API_BASE;
     },
 
-    /* filteredFeatures() {
-      let results = this.geojsonFeatures;
-      if (this.form.type.selected) {
-        results = results.filter(
-          (el) => el.properties.feature_type.title === this.form.type.selected
-        );
-      }
-      if (this.form.status.selected.value) {
-        results = results.filter(
-          (el) => el.properties.status.value === this.form.status.selected.value
-        );
-      }
-      if (this.form.title) {
-        results = results.filter((el) => {
-          if (el.properties.title) {
-            return el.properties.title
-              .toLowerCase()
-              .includes(this.form.title.toLowerCase());
-          } else
-            return el.id.toLowerCase().includes(this.form.title.toLowerCase());
-        });
-      }
-      return results;
-    }, */
-
     statusChoices() {
       //* if project is not moderate, remove pending status
       return this.form.status.choices.filter((el) =>
@@ -299,36 +274,7 @@ export default {
     },
   },
 
-  watch: {
-    form: {
-      deep: true,
-      handler(newValue, oldValue) {
-        console.log(newValue, oldValue);
-        console.log(newValue.type.selected, oldValue.type.selected);
-        console.log(
-          newValue.status.selected.value,
-          oldValue.status.selected.value
-        );
-        if (
-          newValue.type.selected !== oldValue.type.selected ||
-          newValue.status.selected.value !== oldValue.status.selected.value
-        ) {
-          this.updateFeatures();
-        }
-      },
-    } /* 
-    filteredFeatures(newValue, oldValue) {
-      if (newValue && newValue !== oldValue) {
-        this.onFilterChange();
-      }
-    },
-   */,
-  },
-
   methods: {
-    test() {
-      console.log("test");
-    },
     modalAllDelete() {
       this.modalAllDeleteOpen = !this.modalAllDeleteOpen;
     },
@@ -361,11 +307,8 @@ export default {
       this.modalAllDelete();
     },
 
-    //onFilterChange() {
     updateFeaturesOnMap() {
-      // ? Besoin de faire un fetch avec nouveau filtres ici ?
       if (this.featureGroup) {
-        //const features = this.filteredFeatures;
         const features = this.geojsonFeatures;
         this.featureGroup.clearLayers();
         this.featureGroup = mapUtil.addFeatures(
@@ -414,10 +357,8 @@ export default {
       this.updateFeatures();
 
       setTimeout(() => {
-        let project_id = this.$route.params.slug.split("-")[0];
+        const project_id = this.$route.params.slug.split("-")[0];
         const mvtUrl = `${this.API_BASE_URL}features.mvt/?tile={z}/{x}/{y}&project_id=${project_id}`;
-        //const mvtUrl = `${this.API_BASE_URL}features.mvt/?tile={z}/{x}/{y}&project_id=${project_id}&feature_type__slug=88-poopo`;
-        //const mvtUrl = `${this.API_BASE_URL}features.mvt/?tile={z}/{x}/{y}&feature_type__slug=88-poopo`;
         mapUtil.addVectorTileLayer(
           mvtUrl,
           this.$route.params.slug,
@@ -428,31 +369,86 @@ export default {
       }, 1000);
     },
 
-    updateTypeFeatures(selected) {
-      console.log(selected)
-      if (selected !== undefined && selected !== null) {
-        this.updateFeatures(`&feature_type__slug=${selected}`);
-      }
+    getFeatureTypeSlug(title) {
+      const featureType = this.feature_types.find((el) => el.title === title);
+      return featureType ? featureType.slug : null;
     },
 
-    updateStatusFeatures(selected) {
-      if (selected !== undefined && selected !== null) {
-        this.updateFeatures(`&status__value=${selected.value}`);
+    buildFilterParams({ filterType, filterValue }) {
+      console.log({ filterType, filterValue });
+      let params = "";
+      let typeFilter, statusFilter;
+      //*** feature type ***//
+      if (filterType === "featureType") {
+        if (filterValue === "" && !this.form.type.selected) {
+          //* s'il y n'avait pas de filtre et qu'il a été supprimé --> ne pas mettre à jour les features
+          return "abort";
+        } else if (filterValue !== undefined && filterValue !== null) {
+          //* s'il y a un nouveau filtre --> ajouter une params
+          typeFilter = this.getFeatureTypeSlug(filterValue);
+        } //* sinon il n'y a pas de param ajouté, ce qui supprime la query
+
+        //*** status ***//
+      } else if (filterType === "status") {
+        if (filterValue === "" && !this.form.status.selected.value) {
+          return "abort";
+        } else if (filterValue !== undefined && filterValue !== null) {
+          statusFilter = filterValue.value;
+        }
       }
-    },
 
-    updateFeatures(selected) {
-      console.log("selected", selected);
-      let url = `${this.API_BASE_URL}projects/${this.$route.params.slug}/feature-paginated/?output=geojson&limit=${this.limit}&offset=${this.offset}`;
-      console.log(this.form.type.selected, this.form.status.selected.value);
+      //* after possibilities of aborting features fetch, empty geojson to make sure even no result would update
 
-      if (selected) {
-        url += selected;
+      if (
+        (filterType === undefined || filterType === "status") &&
+        this.form.type.selected
+      ) {
+        //* s'il y a déjà un filtre sélectionné, maintenir le params
+        typeFilter = this.getFeatureTypeSlug(this.form.type.selected);
+      }
+      if (
+        (filterType === undefined || filterType === "featureType") &&
+        this.form.status.selected.value
+      ) {
+        statusFilter = this.form.status.selected.value;
       }
+
+      if (typeFilter) {
+        let typeParams = `&feature_type__slug=${typeFilter}`;
+        params += typeParams;
+      }
+      if (statusFilter) {
+        let statusParams = `&status__value=${statusFilter}`;
+        params += statusParams;
+      }
+
+      //*** title ***//
       if (this.form.title) {
-        url += `&title=${this.form.title}`;
+        params += `&title=${this.form.title}`;
       }
 
+      return params;
+    },
+
+    updateTypeFeatures(filterValue) {
+      //* only update:selection custom event can trigger the filter update,
+      //* but it happens before the value is updated, thus using selected value from event to update query
+      this.updateFeatures({ filterType: "featureType", filterValue });
+    },
+
+    updateStatusFeatures(filterValue) {
+      this.updateFeatures({ filterType: "status", filterValue });
+    },
+
+    updateFeatures(filterParams) {
+      let url = `${this.API_BASE_URL}projects/${this.$route.params.slug}/feature-paginated/?output=geojson&limit=${this.limit}&offset=${this.offset}`;
+      if (filterParams) {
+        const params = this.buildFilterParams(filterParams);
+        if (params === "abort") return;
+        url += params;
+      }
+      console.log("url -->", url);
+
       this.$store.commit(
         "DISPLAY_LOADER",
         "Récupération des signalements en cours..."
@@ -464,10 +460,11 @@ export default {
             this.featuresCount = response.data.count;
             this.previous = response.data.previous;
             this.next = response.data.next;
-            if (response.data.results.features.length > 0) {
-              this.loadFeatures(response.data.results.features);
-              this.updateFeaturesOnMap();
-            }
+            this.geojsonFeatures = response.data.results.features;
+            //if (response.data.results.features.length > 0) {
+            this.loadFeatures();
+            this.updateFeaturesOnMap();
+            //}
           }
           this.$store.commit("DISCARD_LOADER");
         })
@@ -477,17 +474,11 @@ export default {
         });
     },
 
-    loadFeatures(features) {
-      this.geojsonFeatures = features;
+    loadFeatures() {
       const urlParams = new URLSearchParams(window.location.search);
       const featureType = urlParams.get("feature_type");
       const featureStatus = urlParams.get("status");
       const featureTitle = urlParams.get("title");
-      console.log({
-        featureType,
-        featureStatus,
-        featureTitle,
-      });
       this.featureGroup = mapUtil.addFeatures(
         this.geojsonFeatures,
         {
@@ -513,7 +504,6 @@ export default {
           this.geojsonFeatures.map((el) => el.properties.feature_type.title)
         ), //* use Set to eliminate duplicate values
       ];
-      console.log(this.form.type.choices);
     },
   },