admin front : create new entite refresh concernementMapitem; fixed historique (active_revision)

This commit is contained in:
2024-04-05 22:59:13 +02:00
parent 340da92a46
commit 052a37d714
7 changed files with 432 additions and 252 deletions

View File

@@ -74,7 +74,9 @@ export default {
'allMapItems_byid',
'opened_concernement',
'opened_entite_id',
'detailsZoomValue']),
'concernement_active_revision',
'detailsZoomValue',
'concernements_loading_nb']),
...mapState(CommonStore,['hover_elmt',
'map_item_ray',
'cartouch_width',
@@ -82,18 +84,10 @@ export default {
'paper_symbol_definitions'])
},
created () {
// console.log('ConcernementMapItem created', this.mapitem);
console.log('ConcernementMapItem created', this.mapitem);
// this.id = this.superposition_id ? `${this.cid}___${this.superposition_id}` : this.cid;
// console.log(`this.mapitem.id`, this.mapitem.id);
this.id = this.mapitem.id;
this.concernement = this.mapitem.concernement;
this.cid = this.concernement.id;
// console.log('mapitem this.cid', this.cid);
this.active_revision = this.concernement.active_revision;
// console.log(`ConcernementsMapItem ${this.id} created`);
// this.entites = this.concernement.entites
this.entites = this.concernement.revisions_byid[this.concernement.revision_id].entites;
this.resetConcernement();
// disable concernement if less than 3 entite
@@ -163,8 +157,13 @@ export default {
},
opened_concernement: {
handler (n, o) {
console.log(`concernementMapitem ${this.cid} watch opened_concernement o, n`, o, n);
if (!n) { // if there is no opened concernement
this.is_open = false;
if (this.active_revision !== this.concernement.active_revision) {
this.active_revision = this.concernement.active_revision;
this.resetPaperEntitesAndContours();
}
this.applyShuffleForces();
} else {
if(this.cid === n.id && this.id === n.opened_mapitem_id){
@@ -255,13 +254,23 @@ export default {
},
concernement: {
handler (n, o){
console.log(`ConcernementMapItem ${this.id} watch concernement o, n`, this.concernement.parsedEntites, o, n);
// check for active_revision changes
// do not trigger on first variable filling (if o is null)
if(this.is_open && o && o.active_revision && n.active_revision && this.map_mode === "terraindevie"){
// be aware that here o & n active_revision are already the same :( !?
console.log(`concernementMapItem watch concernement o.active_revision:${o.active_revision}, n.active_revision:${n.active_revision}`);
this.resetPaperActiveRevision();
// check for new concernement object
if(!this.concernement.parsedEntites){
console.log(`watch mapItem ${this.cid} reseting paperentitiesandcontours`);
this.resetPaperEntitesAndContours();
}
// // check for new active_revision
// // TODO fix that (it is loop triggering when new concernement object)
// if(this.is_open && o && o.active_revision && n.active_revision && this.map_mode === "terraindevie"){
// // be aware that here o & n active_revision are already the same :( !?
// console.log(`concernementMapItem watch concernement o.active_revision:${o.active_revision}, n.active_revision:${n.active_revision}`);
// // this.resetPaperEntitesAndContours();
// }
// // check for doleance change
// if (this.is_open && o && o.opened_doleance && n.opened_doleance && this.map_mode === "doleancer") {
// // be aware that here o & n opened_doleance are already the same :( !?
@@ -280,6 +289,20 @@ export default {
},
deep: true
},
concernement_active_revision: {
handler (n, o){
// console.log(`ConcernementMapItem ${this.id} watch concernement_active_revision o, n`, o, n);
if (this.is_open && o) {
// console.log(`n.cid: ${n.cid}, n.rid: ${n.rid}, this.is_open: ${this.is_open}, this.cid: ${this.cid}`);
// console.log(this.cid, n.cid, n.rid);
if (parseInt(n.cid) === this.cid) {
this.active_revision = n.rid;
this.resetPaperEntitesAndContours();
}
}
},
deep: true
},
detailsZoomValue: {
handler (n, o) {
if (this.is_open && this.map_mode === "terraindevie") {
@@ -288,6 +311,24 @@ export default {
}
},
deep: true
},
// concernements_loading_nb: {
// handler (n, o) {
// console.log(`concernementMapItem ${this.id} watch concernements_loading_nb o, n`, o, n);
// // this.resetPaperEntitesAndContours();
// },
// deep: true
// },
mapitem: {
handler (n, o) {
console.log(`ConcernementMapItem ${this.id} watch mapitem o, n`, o, n);
if (n.concernements_loading_nb !== o.concernements_loading_nb) {
// this.resetPaperEntitesAndContours();
// this.concernement = this.mapitem.concernement;
this.resetConcernement();
}
},
deep: true
}
},
methods: {
@@ -301,6 +342,17 @@ export default {
'setOpenedRecit',
'setDetailsZoomValue',
]),
resetConcernement(){
this.id = this.mapitem.id;
this.concernement = this.mapitem.concernement;
this.cid = this.concernement.id;
// console.log('mapitem this.cid', this.cid);
this.active_revision = this.concernement.active_revision;
// console.log(`ConcernementsMapItem ${this.id} created`);
// this.entites = this.concernement.entites
this.entites = this.concernement.revisions_byid[this.concernement.revision_id].entites;
},
parseEntityPointsValues (){
// converts data (menace/maintien, actuel/future, prise) into atcual position x,y
for (let r = 0; r < this.concernement.revisions.length; r++) { // loop through all revisions
@@ -347,6 +399,7 @@ export default {
// }
}
}
this.concernement.parsedEntites = true;
},
getSalientPoints_OLD() {
// debugger
@@ -776,24 +829,33 @@ export default {
break;
}
},
resetPaperActiveRevision(){
console.log('resetPaperActiveRevision');
this.sailentEntites = this.getJarvisEnvelopeConvexeEntites(this.concernement.revisions_byid[this.concernement.active_revision].entites);
// remove contours if already exists
if (this.paper_main_object.children.contours) {
this.paper_main_object.children.contours.remove();
resetPaperEntitesAndContours(){
console.log(`concernementMapitem ${this.id} resetPaperEntitesAndContours this.concernement`, this.concernement);
if (!this.isResetingPaperEntites) {
console.log(`ResetingPaperEntites ${this.id}`);
this.isResetingPaperEntites = true;
this.parseEntityPointsValues()
this.sailentEntites = this.getJarvisEnvelopeConvexeEntites(this.concernement.revisions_byid[this.active_revision].entites);
// remove contours if already exists
if (this.paper_main_object.children.contours) {
this.paper_main_object.children.contours.remove();
}
// redraw contours
this.paper_main_object.addChild(this.setPaperContour());
// remove entites if already exists
if (this.paper_main_object.children.entites) {
this.paper_main_object.children.entites.remove();
}
// redraw entites
this.paper_main_object.addChild(this.setPaperEntites());
this.isResetingPaperEntites = false;
console.log(`END ResetingPaperEntites ${this.id}`);
}
// redraw contours
this.paper_main_object.addChild(this.setPaperContour());
// remove entites if already exists
if (this.paper_main_object.children.entites) {
this.paper_main_object.children.entites.remove();
}
// redraw entites
this.paper_main_object.addChild(this.setPaperEntites());
},
clearPaperContents(){
let clearable_children = ['boussole_bg', 'entites',
@@ -932,8 +994,8 @@ export default {
g.addChild(g_label);
g_label.sendToBack();
// for (let i = 0; i < this.entites.length; i++) {
for (let i = 0; i < this.concernement.revisions_byid[this.concernement.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.active_revision].entites[i];
// item type
let item_type = entite.entite ? entite.entite.agissante ? 'entite_action' : 'entite' : 'entite_hidden';
@@ -1024,8 +1086,8 @@ export default {
pivot: new paper.Point(this.pos),
name: 'entites_superposes'
});
for (let i = 0; i < this.concernement.revisions_byid[this.concernement.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.active_revision].entites[i];
if (entite.entite // check if we have an entite object with all the contents
&& this.superposedEntiteID === entite.entite.id) // check if entite id
{
@@ -1051,8 +1113,8 @@ export default {
pivot: new paper.Point(this.pos),
name: 'entites_proximites'
});
for (let i = 0; i < this.concernement.revisions_byid[this.concernement.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.active_revision].entites[i];
if (entite.entite // check if we have an entite object with all the contents
&& entite.entite.proximite.length ) // check if entite id is in the list builded above
{
@@ -1080,8 +1142,8 @@ export default {
});
// loop through all concernement's entites
// keeping only those who have proximite
for (let i = 0; i < this.concernement.revisions_byid[this.concernement.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
let entite = this.concernement.revisions_byid[this.active_revision].entites[i];
if (entite.entite // check if we have an entite object with all the contents
&& entite.entite.proximite.length ) // check if entite id is in the list builded above
{
@@ -1302,7 +1364,7 @@ export default {
// name: 'agissantes_icons'
// });
// for (let i = 0; i < this.concernement.revisions_byid[this.concernement.revision_id].entites.length; i++) {
// let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
// let entite = this.concernement.revisions_byid[this.active_revision].entites[i];
// if (entite.entite && entite.entite.agissante) {
// let instance = new paper.SymbolItem(this.paper_symbol_definitions['entite_action_icon']);
// instance.name = 'entite_action';
@@ -2302,7 +2364,7 @@ export default {
},
openClose(open) { // async
// await nextTick(); // not working
console.log(`ConcernementsMapItem ${this.id} openClose: ${open}`);
console.log(`ConcernementsMapItem openClose ${this.id} openClose: ${open}`);
if (this.tween) {
this.tween.stop();
}
@@ -2382,9 +2444,9 @@ export default {
Matter.Composite.remove(this.matterEngine.world, this.constraint);
}
// this.concernement.active_revision = this.concernement.revision_id;
this.setActiveRevision(this.cid, this.concernement.revision_id);//this.concernement.revisions[this.concernement.revisions.length -1].revision_id);
this.resetPaperActiveRevision();
// this.active_revision = this.concernement.revision_id;
// this.setActiveRevision(this.cid, this.concernement.revision_id);//this.concernement.revisions[this.concernement.revisions.length -1].revision_id);
// this.resetPaperEntitesAndContours();
this.handlePaperVisibilityOnBeforeClose();

View File

@@ -26,7 +26,6 @@ export default {
...mapState(ConcernementsStore,['map_mode',
'opened_concernement',
'concernementsByID',
'concernements_loaded',
'ct_concernement',
'ct_cercle_politique',
'p_groupes_interets',

View File

@@ -44,6 +44,7 @@ export default {
chevrondown_path: mdiChevronDown,
headerreduced: false,
mdiStickerPlusOutline_path: mdiStickerPlusOutline,
reloading_concernements: false
}
},
computed: {
@@ -52,7 +53,9 @@ export default {
'concernementsByID',
'ct_concernement',
'ct_entite',
'detailsZoomValue']),
'detailsZoomValue',
// 'concernements_are_loading'
]),
...mapState(UserStore,['name','csrf_token']),
created(){
let d = new Date(this.concernement.created);
@@ -184,7 +187,12 @@ export default {
}
},
methods: {
...mapActions(ConcernementsStore, ['setActiveRevision', 'setDetailsZoomValue']), // 'loadConcernementsRevisions'
...mapActions(ConcernementsStore, ['setActiveRevision',
'setDetailsZoomValue',
'loadConcernements',
'reloadConcernements',
'reloadConcernementEntites']),
// 'loadConcernementsRevisions'
onClickInfos(){
this.infos_opened = !this.infos_opened;
},
@@ -224,6 +232,7 @@ export default {
},
addEntite(e){
console.log('add entite');
this.reloading_concernements = true;
// 1 create entite node
this.createEntiteNode()
.then((entite) => {
@@ -237,6 +246,11 @@ export default {
.then((concernement) => {
console.log('concernement', concernement);
// TODO reload the map item
// this.reloadConcernementEntites(concernement.nid[0].value);
this.reloadConcernements()
.then(() => {
this.reloading_concernements = false;
});
})
})
})
@@ -436,10 +450,13 @@ export default {
</section>
<template v-if="concernement.can_update">
<div @click="addEntite" class="add-entite-btn">
<div v-if="!reloading_concernements" @click="addEntite" class="add-entite-btn">
<span>Ajouter une entité</span>
<svg-icon type="mdi" :path="mdiStickerPlusOutline_path"/>
</div>
<div v-else class="add-entite-btn">
<div class="loading">Chargement</div>
</div>
</template>
</template>