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')"/>
- + + +