diff --git a/src/components/MapConcernements.vue b/src/components/MapConcernements.vue
index f5197cc..b6e89be 100644
--- a/src/components/MapConcernements.vue
+++ b/src/components/MapConcernements.vue
@@ -61,6 +61,7 @@ export default {
'concernements',
'concernementsByID',
'opened_concernement',
+ 'concernement_is_updating_nid',
'opened_entite_id',
'opened_recit',
'allSuperpositions',
@@ -122,11 +123,17 @@ export default {
this.paper.view.onClick = function(event) {
// console.log("view onClick", this, event.target);
if(event.target._id === "paper-view-0") {
- this.resetConcernementOpened();
- this.$router.push({
- name: 'home',
- hash: `#${this.map_mode}`
- });
+ // // unfocus any active element to trigger recording if needed
+ // document.activeElement.blur();
+ // // setTimeout to let time for editable fields to focus out and record changes
+ // setTimeout(() => {
+ // this.resetConcernementOpened();
+ // this.$router.push({
+ // name: 'home',
+ // hash: `#${this.map_mode}`
+ // });
+ // }, 1);
+ this.closeConcernement();
}
}.bind(this);
@@ -1543,6 +1550,26 @@ export default {
});
wall_rects.addChildren(children);
}
+ },
+ closeConcernement(){
+ // unfocus any active element to trigger recording if needed
+ document.activeElement.blur();
+ // setTimeout to let time for editable fields to focus out and record changes
+ this.waitForUpdatingEnded();
+ },
+ waitForUpdatingEnded(){
+ setTimeout(() => {
+ if (!this.concernement_is_updating_nid) {
+ this.resetConcernementOpened();
+ this.$router.push({
+ name: 'home',
+ hash: `#${this.map_mode}`
+ });
+ } else {
+ this.waitForUpdatingEnded();
+ }
+ }, 1);
+
}
},
beforeUpdate () {
diff --git a/src/components/contents/TerrainDeVie.vue b/src/components/contents/TerrainDeVie.vue
index 8500101..fb73d3a 100644
--- a/src/components/contents/TerrainDeVie.vue
+++ b/src/components/contents/TerrainDeVie.vue
@@ -211,8 +211,10 @@ export default {
...mapActions(ConcernementsStore, ['setActiveRevision',
'setDetailsZoomValue',
'loadConcernements',
+ 'setConcernementIsUpdating',
'reloadConcernements',
'reloadConcernementEntites',
+ 'reloadConcernementField',
'reloadProximites'
]),
...mapActions(UserStore, ['getUserEntitees']),
@@ -258,6 +260,22 @@ export default {
this.headerreduced = false;
}
},
+ // triggered when focus out and gql patch xhr triggered
+ onFieldIsUpdating(cid){
+ this.setConcernementIsUpdating(cid);
+ },
+ // triggered when gql patch done
+ onFieldUpdated(cid){
+ this.setConcernementIsUpdating(null);
+ this.reloadConcernementEntites(cid);
+ },
+ concernementFieldIsUpdating(field){
+ this.setConcernementIsUpdating(this.cid);
+ },
+ concernementFieldUpdated(field){
+ this.setConcernementIsUpdating(null);
+ this.reloadConcernementField(this.cid, field);
+ },
onContentEditableFocusOut(e){
console.log('onContentEditableFocusOut', e);
let new_field_content = e.target.innerText;
@@ -531,7 +549,8 @@ export default {
id: this.entite.id,
field: {field_name: 'title', value:'value'}
}"
- v-on:updated="reloadConcernementEntites(cid)"/>
+ v-on:updating="onFieldIsUpdating(cid)"
+ v-on:updated="onFieldUpdated(cid)"/>
+ }"
+ v-on:updating="concernementFieldIsUpdating('description')"
+ v-on:updated="concernementFieldUpdated('description')"/>
@@ -651,7 +672,9 @@ export default {
bundle: 'concernement',
id: this.concernement.id,
field: {field_name: 'field_caillou', value:'value'}
- }" />
+ }"
+ v-on:updating="concernementFieldIsUpdating('caillou')"
+ v-on:updated="concernementFieldUpdated('caillou')"/>
@@ -666,7 +689,15 @@ export default {
-
+
+
+
diff --git a/src/components/editable/ContentEditable.vue b/src/components/editable/ContentEditable.vue
index 42ce340..1cdb67f 100644
--- a/src/components/editable/ContentEditable.vue
+++ b/src/components/editable/ContentEditable.vue
@@ -29,7 +29,7 @@ export default {
default : 'Ajouter du texte'
}
},
- emits: ['updated'],
+ emits: ['updating', 'updated'],
data(){
return {
editor: null,
@@ -74,6 +74,7 @@ export default {
}
},
save(content){
+ this.$emit('updating');
// console.log('save csrf_token', this.csrf_token);
const params = {
type: this.data.bundle,
diff --git a/src/components/layout/CartoucheLayout.vue b/src/components/layout/CartoucheLayout.vue
index eec3127..d11feeb 100644
--- a/src/components/layout/CartoucheLayout.vue
+++ b/src/components/layout/CartoucheLayout.vue
@@ -54,7 +54,15 @@ export default {
}
},
methods: {
- ...mapActions(ConcernementsStore,['setMapMode']),
+ ...mapActions(ConcernementsStore,['setMapMode',"setConcernementIsUpdating","reloadConcernementField"]),
+ // triggered when focus out and gql patch xhr triggered
+ concernementFieldIsUpdating(field){
+ this.setConcernementIsUpdating(this.cid);
+ },
+ concernementFieldUpdated(field){
+ this.setConcernementIsUpdating(null);
+ this.reloadConcernementField(this.cid, field);
+ }
},
components: {
SvgIcon,
@@ -78,7 +86,9 @@ export default {
bundle: 'concernement',
id: this.concernement.id,
field: {field_name: 'title', value:'value'}
- }" />
+ }"
+ v-on:updating="concernementFieldIsUpdating('title')"
+ v-on:updated="concernementFieldUpdated('title')"/>