From 76c4cd48e08fce18c3363f644f99e50da99f69b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Timoth=C3=A9e=20Poussard?= <tpoussard@neogeo.fr>
Date: Thu, 6 Jan 2022 14:53:33 +0100
Subject: [PATCH] fix error not updated in project_mapping_basemap for title &
 fix prop mutated

---
 src/components/feature/FeatureExtraForm.vue   | 10 +++---
 src/components/feature/FeatureListTable.vue   |  2 ++
 .../project/ProjectMappingContextLayer.vue    |  2 ++
 .../project/project_mapping_basemap.vue       | 32 ++++++++-----------
 src/store/modules/map.js                      |  8 ++---
 src/views/project/Project_mapping.vue         |  2 +-
 6 files changed, 26 insertions(+), 30 deletions(-)

diff --git a/src/components/feature/FeatureExtraForm.vue b/src/components/feature/FeatureExtraForm.vue
index a1c8140f..d4e10cf5 100644
--- a/src/components/feature/FeatureExtraForm.vue
+++ b/src/components/feature/FeatureExtraForm.vue
@@ -6,7 +6,7 @@
     <label for="field.name">{{ field.label }}</label>
     <input
       :id="field.name"
-      v-model="field.value"
+      :value="field.value"
       type="text"
       :name="field.name"
       @blur="updateStore_extra_form"
@@ -33,7 +33,7 @@
       <!-- //* si click sur fléche dans champ input, pas de focus, donc pas de blur, donc utilisation de @change -->
       <input
         :id="field.name"
-        v-model.number="field.value"
+        :value="field.value"
         type="number"
         :name="field.name"
         @change="updateStore_extra_form"
@@ -62,7 +62,7 @@
     <label for="field.name">{{ field.label }}</label>
     <input
       :id="field.name"
-      v-model="field.value"
+      :value="field.value"
       type="date"
       :name="field.name"
       @blur="updateStore_extra_form"
@@ -76,7 +76,7 @@
     <div class="ui input">
       <input
         :id="field.name"
-        v-model.number="field.value"
+        :value="field.value"
         type="number"
         step=".01"
         :name="field.name"
@@ -90,7 +90,7 @@
   >
     <label :for="field.name">{{ field.label }}</label>
     <textarea
-      v-model="field.value"
+      :value="field.value"
       :name="field.name"
       rows="3"
       @blur="updateStore_extra_form"
diff --git a/src/components/feature/FeatureListTable.vue b/src/components/feature/FeatureListTable.vue
index 0d032474..940810d2 100644
--- a/src/components/feature/FeatureListTable.vue
+++ b/src/components/feature/FeatureListTable.vue
@@ -277,6 +277,8 @@
 </template>
 
 <script>
+/* eslint-disable */
+
 import { mapState, mapGetters } from 'vuex';
 
 export default {
diff --git a/src/components/project/ProjectMappingContextLayer.vue b/src/components/project/ProjectMappingContextLayer.vue
index eacd0d96..9f9fe56d 100644
--- a/src/components/project/ProjectMappingContextLayer.vue
+++ b/src/components/project/ProjectMappingContextLayer.vue
@@ -1,4 +1,6 @@
 <template>
+<!-- eslint-disable -->
+
   <div
     :id="layer.dataKey"
     class="ui segment layer-item"
diff --git a/src/components/project/project_mapping_basemap.vue b/src/components/project/project_mapping_basemap.vue
index 36684a23..22c2f6b9 100644
--- a/src/components/project/project_mapping_basemap.vue
+++ b/src/components/project/project_mapping_basemap.vue
@@ -2,8 +2,10 @@
   <div class="ui segment">
     <div class="field required">
       <label for="basemap-title">Titre</label>
+      <!-- eslint-disable -->
       <input
-        v-model="basemap.title"
+        :value="basemap.title"
+        @input="updateTitle"
         type="text"
         name="basemap-title"
         required
@@ -66,6 +68,8 @@
 </template>
 
 <script>
+/* eslint-disable */
+
 import Sortable from 'sortablejs';
 import ProjectMappingContextLayer from '@/components/project/ProjectMappingContextLayer.vue';
 
@@ -95,21 +99,6 @@ export default {
     },
   },
 
-  watch: {
-    'basemap.title': {
-      deep: true,
-      handler: function (newValue, oldValue) {
-        if (newValue !== oldValue) {
-          this.basemap.title = newValue;
-          if (newValue === '')
-            this.basemap.errors = 'Veuillez compléter ce champ.';
-          else this.basemap.errors = '';
-          this.updateTitle(this.basemap);
-        }
-      },
-    },
-  },
-
   created() {
     if (this.basemap.layers) {
       //* add datakeys to layers coming from api
@@ -144,11 +133,18 @@ export default {
     },
 
     updateTitle(evt) {
+      let errors = '';
+      if(evt.target.value === '') { //* delete or add error message while typing
+        errors = "Veuillez compléter ce champ.";
+      }
       this.$store.commit('map/UPDATE_BASEMAP', {
         id: this.basemap.id,
-        title: evt.title,
-        errors: evt.errors,
+        title: evt.target.value,
+        errors,
       });
+
+
+
     },
 
     removeLayer(dataKey) {
diff --git a/src/store/modules/map.js b/src/store/modules/map.js
index cc4d836f..a1e4b1b3 100644
--- a/src/store/modules/map.js
+++ b/src/store/modules/map.js
@@ -40,15 +40,11 @@ const map = {
     UPDATE_BASEMAP(state, { title, id, layers, errors }) {
       const index = state.basemaps.findIndex((el) => el.id === id);
       if (index !== -1) {
-        if (title) {
-          state.basemaps[index].title = title;
-        }
+        state.basemaps[index].title = title;
+        state.basemaps[index].errors = errors;
         if (layers) {
           state.basemaps[index].layers = layers;
         }
-        if (errors) {
-          state.basemaps[index].errors = errors;
-        }
       }
     },
     DELETE_BASEMAP(state, basemapId) {
diff --git a/src/views/project/Project_mapping.vue b/src/views/project/Project_mapping.vue
index c8b110ab..ff4c0351 100644
--- a/src/views/project/Project_mapping.vue
+++ b/src/views/project/Project_mapping.vue
@@ -102,7 +102,7 @@ export default {
     checkTitles() {
       let isValid = true;
       this.basemaps.forEach((basemap) => {
-        if (basemap.title === null || basemap.title === '') {
+        if (basemap.title === null || basemap.title === '') { //* check title when saving basemaps
           basemap.errors = 'Veuillez compléter ce champ.';
           isValid = false;
         } else if (basemap.layers.length === 0) {
-- 
GitLab