admin front : create new entite refresh concernementMapitem; fixed historique (active_revision)
This commit is contained in:
parent
340da92a46
commit
052a37d714
11
src/App.vue
11
src/App.vue
@ -33,6 +33,7 @@ export default {
|
||||
...mapState(ConcernementsStore,['map_mode',
|
||||
'concernements',
|
||||
'concernements_loaded',
|
||||
'concernements_loading_nb',
|
||||
'concernementsByID',
|
||||
'allSuperpositions_bycids',
|
||||
'allSuperpositions_clustered',
|
||||
@ -47,6 +48,13 @@ export default {
|
||||
}
|
||||
},
|
||||
deep: true
|
||||
},
|
||||
concernements_loading_nb: {
|
||||
handler (n, o) {
|
||||
console.log('App watch concernements_loading_nb o, n', o, n);
|
||||
this.parseMapitems();
|
||||
},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@ -54,6 +62,8 @@ export default {
|
||||
...mapActions(ConcernementsStore,['loadContentTypeDefinition']),
|
||||
...mapActions(UserStore,['checkUser']),
|
||||
parseMapitems() {
|
||||
console.log(`App parseMapitems`);
|
||||
this.mapitems = [];
|
||||
// let couple_ids = Object.keys(this.allSuperpositions_bycids);
|
||||
// console.log('App couple_ids', couple_ids);
|
||||
// loop through all concernement
|
||||
@ -65,6 +75,7 @@ export default {
|
||||
// superposition_ids: [],
|
||||
superposition_cluster_index: -1,
|
||||
clone: false,
|
||||
concernements_loading_nb: this.concernements_loading_nb
|
||||
}
|
||||
|
||||
// loop through all superposition_clusters
|
||||
|
@ -67,6 +67,23 @@ body{
|
||||
|
||||
}
|
||||
|
||||
div.loading{
|
||||
text-align: center;
|
||||
font-size: 1.134em;
|
||||
&::after{
|
||||
background: url(../assets/Ellipsis-5s-100px.svg);
|
||||
background-clip: content-box;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
width: 40px; height: 30px;
|
||||
// border: #01ffe2;
|
||||
content: " ";
|
||||
}
|
||||
}
|
||||
|
||||
#main-content{
|
||||
|
||||
#map-backgrounds{
|
||||
@ -80,9 +97,7 @@ body{
|
||||
// display:none;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#map-concernements{
|
||||
div.loading{
|
||||
position: absolute;
|
||||
@ -92,20 +107,8 @@ body{
|
||||
transform: translateX(-50%) translateY(-50%);
|
||||
width: 150px;
|
||||
display: block;
|
||||
text-align: center;
|
||||
// font-weight: 600;
|
||||
font-size: 1.134em;
|
||||
&::after{
|
||||
background: url(../assets/Ellipsis-5s-100px.svg);
|
||||
background-clip: content-box;
|
||||
background-size: contain;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
display: inline-block;
|
||||
width: 150px; height: 30px;
|
||||
|
||||
border: #01ffe2;
|
||||
content: " ";
|
||||
width: 150px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -26,7 +26,6 @@ export default {
|
||||
...mapState(ConcernementsStore,['map_mode',
|
||||
'opened_concernement',
|
||||
'concernementsByID',
|
||||
'concernements_loaded',
|
||||
'ct_concernement',
|
||||
'ct_cercle_politique',
|
||||
'p_groupes_interets',
|
||||
|
@ -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>
|
||||
|
||||
|
@ -17,6 +17,7 @@ export const ConcernementsStore = defineStore({
|
||||
id: 'concernements',
|
||||
state: () => ({
|
||||
map_mode: null,
|
||||
concernements_loading_nb: 0,
|
||||
concernements: [],
|
||||
concernementsByID: {},
|
||||
allEntitesById: {},
|
||||
@ -38,6 +39,8 @@ export const ConcernementsStore = defineStore({
|
||||
p_mise_en_oeuvre_decision: {},
|
||||
p_reception_application_decision: {},
|
||||
concernements_loaded: false,
|
||||
concernements_are_loading: false,
|
||||
concernement_active_revision: null,
|
||||
detailsZoomValue: 1,
|
||||
}),
|
||||
getters: {
|
||||
@ -51,6 +54,7 @@ export const ConcernementsStore = defineStore({
|
||||
},
|
||||
loadConcernements () {
|
||||
console.log('concernements store loadConcernements');
|
||||
this.concernements_are_loading = true;
|
||||
return new Promise((resolve, reject) => {
|
||||
const ast = gql`{
|
||||
allconcernements {
|
||||
@ -62,199 +66,282 @@ export const ConcernementsStore = defineStore({
|
||||
// console.log('ast', ast);
|
||||
GQL.post('', { query: print(ast) })
|
||||
.then(({ data : { data : { allconcernements } } }) => {
|
||||
console.log('loadconcernements all loaded', allconcernements)
|
||||
console.log('loadconcernements loaded', allconcernements)
|
||||
this.concernements = [];
|
||||
// parse concernements
|
||||
let temp_allSuperpositions = [];
|
||||
allconcernements.forEach(concernement => {
|
||||
concernement.visible = true;
|
||||
|
||||
concernement.entites_byid = {};
|
||||
concernement.entitesagissantes_byid = {};
|
||||
concernement.has_proximites = false;
|
||||
concernement.has_superpositions = false;
|
||||
concernement.has_agissantes = false;
|
||||
// var entites_temp = concernement.entites; // record a temp entites liste
|
||||
// concernement.entites = []; // erase the concernement.entite array as we want to keep only visible entites
|
||||
concernement.entites.forEach(entite => {
|
||||
if (entite.entite) { // entite.entite may be null because of workflow confidentiality
|
||||
concernement.entites_byid[entite.entite.id] = entite;
|
||||
// record entite agissante
|
||||
if (entite.entite.agissante) {
|
||||
concernement.entitesagissantes_byid[entite.entite.id] = entite;
|
||||
concernement.has_agissantes = true;
|
||||
}
|
||||
// record a flat list of all entités of all concernement for map-popup
|
||||
this.allEntitesById[entite.entite.id] = entite;
|
||||
this.allEntitesById[entite.entite.id].cid = concernement.id;
|
||||
// concernement.entites.push(entite); // fill the entites array with visible entite only
|
||||
|
||||
// PROXIMITES
|
||||
if (entite.entite.proximite.length) {
|
||||
console.log("proximite", entite.entite.proximite);
|
||||
concernement.has_proximites = true;
|
||||
}
|
||||
|
||||
// SUPERPOSITIONS
|
||||
if (entite.entite.superposition.length) {
|
||||
// create properties for later
|
||||
concernement.superpositions = {};
|
||||
concernement.superposition_constraints_id = {};
|
||||
concernement.all_superposed_concernements_id = [];
|
||||
concernement.superposed_mapitem_id_by_mapitem_id = {};
|
||||
|
||||
entite.entite.superposition.forEach(entite_superpose => {
|
||||
// console.log(`superposition eid:${entite.entite.id}, teid:${entite_superpose.id}`);
|
||||
let already_recorded = false;
|
||||
// loop through all already recorded superposition to complete the array instead of create duplicates
|
||||
// TODO check if target cid and eid are accessible before recording the superposition
|
||||
// check if half of the superpositions is already recorded, if yes complete it (add the missing concernement id)
|
||||
for(let superposition of temp_allSuperpositions) {
|
||||
for(let superposition_item of superposition) {
|
||||
if (superposition_item.eid === entite.entite.id && !superposition_item.cid) {
|
||||
// console.log(`already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
|
||||
already_recorded = true;
|
||||
superposition_item.cid = concernement.id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (already_recorded) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if not already recorded, add it to the array. It is incomplete has it's missing one concernement id wich will be filled in next loops
|
||||
if (!already_recorded) {
|
||||
// console.log(`NOT already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
|
||||
let s = [
|
||||
{
|
||||
cid: concernement.id,
|
||||
eid: entite.entite.id
|
||||
},
|
||||
{
|
||||
cid: null,
|
||||
eid: entite_superpose.id
|
||||
}
|
||||
];
|
||||
// concernement.superpositions.push(s);
|
||||
temp_allSuperpositions.push(s);
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// revisions
|
||||
concernement.active_revision = concernement.revision_id;
|
||||
concernement.revisions_byid = {};
|
||||
concernement.revisions.forEach(rev => {
|
||||
concernement.revisions_byid[rev.revision_id] = rev;
|
||||
});
|
||||
|
||||
// puissance d'agir
|
||||
concernement.has_puissancedagir = concernement.besoins.length ? true : false;
|
||||
concernement.besoins.forEach(besoin => {
|
||||
this.allBesoinsById[besoin.id] = besoin;
|
||||
});
|
||||
|
||||
// doleance
|
||||
concernement.has_doleance = concernement.doleances.length ? true : false;
|
||||
if (concernement.has_doleance) {
|
||||
console.log('concernement has doleance', concernement.doleances);
|
||||
concernement.opened_doleance = {
|
||||
id: concernement.doleances[0].id
|
||||
};
|
||||
}
|
||||
|
||||
// recit
|
||||
concernement.has_recit = concernement.recit !== null;
|
||||
|
||||
// common
|
||||
this.concernements.push(concernement);
|
||||
this.concernementsByID[concernement.id] = concernement;
|
||||
|
||||
}); // end of concernements loop
|
||||
console.log('temp_allSuperpositions', temp_allSuperpositions);
|
||||
|
||||
// cleaning superpositions, removing all incomplète onces
|
||||
temp_allSuperpositions.forEach(s => {
|
||||
if (s[0] && s[0].cid && s[0].eid && s[1] && s[1].cid && s[1].eid) {
|
||||
this.allSuperpositions.push(s);
|
||||
this.concernementsByID[s[0].cid].has_superpositions = true;
|
||||
this.concernementsByID[s[1].cid].has_superpositions = true;
|
||||
}
|
||||
});
|
||||
console.log('this.allSuperpositions', this.allSuperpositions);
|
||||
|
||||
|
||||
// get superpositions by cluster
|
||||
for(let superpos_to_record of this.allSuperpositions){
|
||||
let recorded = false;
|
||||
// console.log('-- -- --');
|
||||
// console.log(`superpos_to_record : ${superpos_to_record[0].cid}-${superpos_to_record[0].eid}, ${superpos_to_record[1].cid}-${superpos_to_record[1].eid}`);
|
||||
// loop through alredy recorded clusters
|
||||
for(let [cluster_index, superpo_cluster] of this.allSuperpositions_clustered.entries()){
|
||||
// console.log('cluster_index', cluster_index);
|
||||
// for each cluster loop throug each superposition
|
||||
in_cluster_loop:{
|
||||
for(let s of superpo_cluster){
|
||||
// console.log(`s : ${s.cid}-${s.eid}`);
|
||||
// loop through each cid_eid couple of superpo to be recorded
|
||||
for(let i = 0; i <= 1; i++){
|
||||
// if one couple already recorded in the cluster, add the other one to the same cluster
|
||||
if (superpos_to_record[i].cid === s.cid && superpos_to_record[i].eid === s.eid){
|
||||
// console.log('-- recorded');
|
||||
let j = i === 0 ? 1 : 0;
|
||||
// add the right item to the cluster
|
||||
this.allSuperpositions_clustered[cluster_index].push(superpos_to_record[j]);
|
||||
// record the superposition on the concernement BY cluster index
|
||||
// console.log(`superpos_to_record[j].cid:${superpos_to_record[j].cid}`);
|
||||
// console.log('concernement', this.concernementsByID[superpos_to_record[j].cid]);
|
||||
// create array if not already exists
|
||||
if(typeof this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] === 'undefined'){
|
||||
this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] = [superpos_to_record];
|
||||
}else{
|
||||
this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index].push(superpos_to_record);
|
||||
}
|
||||
recorded = true;
|
||||
break in_cluster_loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!recorded){
|
||||
// console.log('-- not recorded');
|
||||
// create cluster and fill it it with first couple
|
||||
this.allSuperpositions_clustered.push(superpos_to_record);
|
||||
// record superposition on each concernement of each couple member BY cluster index
|
||||
for( let i=0; i <= 1; i++){
|
||||
this.concernementsByID[superpos_to_record[i].cid].superpositions[this.allSuperpositions_clustered.length-1] = [superpos_to_record];
|
||||
// console.log(`concernement ${superpos_to_record[i].cid} superposition by cluster index`,this.concernementsByID[superpos_to_record[i].cid].superpositions);
|
||||
}
|
||||
}
|
||||
}
|
||||
console.log('this.allSuperpositions_clustered', this.allSuperpositions_clustered);
|
||||
|
||||
|
||||
this.parseConcernements(allconcernements, true)
|
||||
this.concernements_loaded = true;
|
||||
this.concernements_loading_nb ++;
|
||||
this.concernements_are_loading = false;
|
||||
resolve();
|
||||
})
|
||||
.catch(error => {
|
||||
console.warn('Issue with loadConcernements', error)
|
||||
this.concernements_are_loading = false;
|
||||
Promise.reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
parseConcernements(allconcernements, init) {
|
||||
console.log('parse concernements');
|
||||
let temp_allSuperpositions = [];
|
||||
allconcernements.forEach((concernement) => {
|
||||
// console.log(`parsing concernement ${concernement.id}`);
|
||||
concernement.visible = true;
|
||||
|
||||
concernement.entites_byid = {};
|
||||
concernement.entitesagissantes_byid = {};
|
||||
concernement.has_proximites = false;
|
||||
concernement.has_superpositions = false;
|
||||
concernement.has_agissantes = false;
|
||||
// var entites_temp = concernement.entites; // record a temp entites liste
|
||||
// concernement.entites = []; // erase the concernement.entite array as we want to keep only visible entites
|
||||
concernement.entites.forEach(entite => {
|
||||
// console.log(`parsing entite ${entite.id}`);
|
||||
if (entite.entite) { // entite.entite may be null because of workflow confidentiality
|
||||
if (!concernement.entites_byid[entite.entite.id]) {
|
||||
concernement.entites_byid[entite.entite.id] = entite;
|
||||
}
|
||||
// record entite agissante
|
||||
if (entite.entite.agissante) {
|
||||
if (!concernement.entitesagissantes_byid[entite.entite.id]) {
|
||||
concernement.entitesagissantes_byid[entite.entite.id] = entite;
|
||||
}
|
||||
concernement.has_agissantes = true;
|
||||
}
|
||||
// record a flat list of all entités of all concernement for map-popup
|
||||
if (!this.allEntitesById[entite.entite.id]) {
|
||||
this.allEntitesById[entite.entite.id] = entite;
|
||||
this.allEntitesById[entite.entite.id].cid = concernement.id;
|
||||
}
|
||||
// concernement.entites.push(entite); // fill the entites array with visible entite only
|
||||
|
||||
// PROXIMITES
|
||||
if (entite.entite.proximite.length) {
|
||||
// console.log("proximite", entite.entite.proximite);
|
||||
concernement.has_proximites = true;
|
||||
}
|
||||
|
||||
// SUPERPOSITIONS
|
||||
if (entite.entite.superposition.length) {
|
||||
// create properties for later
|
||||
if (init) {
|
||||
concernement.superpositions = {};
|
||||
concernement.superposition_constraints_id = {};
|
||||
concernement.all_superposed_concernements_id = [];
|
||||
concernement.superposed_mapitem_id_by_mapitem_id = {};
|
||||
}
|
||||
|
||||
entite.entite.superposition.forEach(entite_superpose => {
|
||||
// console.log(`superposition eid:${entite.entite.id}, teid:${entite_superpose.id}`);
|
||||
let already_recorded = false;
|
||||
// loop through all already recorded superposition to complete the array instead of create duplicates
|
||||
// TODO check if target cid and eid are accessible before recording the superposition
|
||||
// check if half of the superpositions is already recorded, if yes complete it (add the missing concernement id)
|
||||
for(let superposition of temp_allSuperpositions) {
|
||||
for(let superposition_item of superposition) {
|
||||
if (superposition_item.eid === entite.entite.id && !superposition_item.cid) {
|
||||
// console.log(`already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
|
||||
already_recorded = true;
|
||||
superposition_item.cid = concernement.id;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (already_recorded) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if not already recorded, add it to the array. It is incomplete has it's missing one concernement id wich will be filled in next loops
|
||||
if (!already_recorded) {
|
||||
// console.log(`NOT already_recorded, eid:${entite.entite.id}, teid:${entite_superpose.id}`, entite.entite.title);
|
||||
let s = [
|
||||
{
|
||||
cid: concernement.id,
|
||||
eid: entite.entite.id
|
||||
},
|
||||
{
|
||||
cid: null,
|
||||
eid: entite_superpose.id
|
||||
}
|
||||
];
|
||||
// concernement.superpositions.push(s);
|
||||
temp_allSuperpositions.push(s);
|
||||
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
}); // end of concernement.entites loop
|
||||
|
||||
|
||||
// revisions
|
||||
concernement.active_revision = concernement.revision_id;
|
||||
concernement.revisions_byid = {};
|
||||
concernement.revisions.forEach(rev => {
|
||||
concernement.revisions_byid[rev.revision_id] = rev;
|
||||
});
|
||||
|
||||
// puissance d'agir
|
||||
concernement.has_puissancedagir = concernement.besoins.length ? true : false;
|
||||
concernement.besoins.forEach(besoin => {
|
||||
this.allBesoinsById[besoin.id] = besoin;
|
||||
});
|
||||
|
||||
// doleance
|
||||
concernement.has_doleance = concernement.doleances.length ? true : false;
|
||||
if (concernement.has_doleance) {
|
||||
// console.log('concernement has doleance', concernement.doleances);
|
||||
concernement.opened_doleance = {
|
||||
id: concernement.doleances[0].id
|
||||
};
|
||||
}
|
||||
|
||||
// recit
|
||||
concernement.has_recit = concernement.recit !== null;
|
||||
|
||||
// common
|
||||
// if (!concernement_is_reloaded) {
|
||||
this.concernements.push(concernement);
|
||||
this.concernementsByID[concernement.id] = concernement;
|
||||
// }else{
|
||||
// // this.concernements[concernement_index] = concernement;
|
||||
// this.concernementsByID[concernement.id] = concernement;
|
||||
// // TODO check that this.concernements and this.concernementsByID contains the same item
|
||||
// }
|
||||
|
||||
}); // end of concernements loop
|
||||
// console.log('this.concernements', this.concernements);
|
||||
// console.log('this.concernementsByID', this.concernementsByID);
|
||||
|
||||
// console.log('temp_allSuperpositions', temp_allSuperpositions);
|
||||
|
||||
// cleaning superpositions, removing all incomplète onces
|
||||
this.allSuperpositions = [];
|
||||
temp_allSuperpositions.forEach(s => {
|
||||
if (s[0] && s[0].cid && s[0].eid && s[1] && s[1].cid && s[1].eid) {
|
||||
this.allSuperpositions.push(s);
|
||||
this.concernementsByID[s[0].cid].has_superpositions = true;
|
||||
this.concernementsByID[s[1].cid].has_superpositions = true;
|
||||
}
|
||||
});
|
||||
// console.log('this.allSuperpositions', this.allSuperpositions);
|
||||
|
||||
// 1 check if cluster already exists and if yes complete with the next item of cluster
|
||||
// 2 if cluster deos not exists, create the cluster and fill it with first item of cluster
|
||||
|
||||
// 1 check if cluster already exists and if yes complete with the next item of cluster
|
||||
// get superpositions by cluster
|
||||
for(let superpos_to_record of this.allSuperpositions){
|
||||
let recorded = false;
|
||||
// console.log('-- -- --');
|
||||
// console.log(`superpos_to_record : ${superpos_to_record[0].cid}-${superpos_to_record[0].eid}, ${superpos_to_record[1].cid}-${superpos_to_record[1].eid}`);
|
||||
// loop through alredy recorded clusters
|
||||
for(let [cluster_index, superpo_cluster] of this.allSuperpositions_clustered.entries()){
|
||||
// console.log('cluster_index', cluster_index);
|
||||
// for each cluster loop throug each superposition
|
||||
in_cluster_loop:{
|
||||
for(let s of superpo_cluster){
|
||||
// console.log(`s : ${s.cid}-${s.eid}`);
|
||||
// loop through each cid_eid couple of superpo to be recorded
|
||||
for(let i = 0; i <= 1; i++){
|
||||
// if one couple already recorded in the cluster, add the other one to the same cluster
|
||||
if (superpos_to_record[i].cid === s.cid && superpos_to_record[i].eid === s.eid){
|
||||
// console.log('-- recorded');
|
||||
let j = i === 0 ? 1 : 0;
|
||||
// check if item is not already recorded in the cluster (in case of reparsing concernements)
|
||||
let already_clustered = false;
|
||||
for (let s2 of superpo_cluster) {
|
||||
if (superpos_to_record[j].cid === s2.cid && superpos_to_record[j].eid === s2.eid){
|
||||
already_clustered = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if not already recorded
|
||||
if (!already_clustered) {
|
||||
// add the right item to the cluster
|
||||
this.allSuperpositions_clustered[cluster_index].push(superpos_to_record[j]);
|
||||
}
|
||||
|
||||
// record the superposition on the concernement BY cluster index
|
||||
// create array if not already exists
|
||||
if(typeof this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] === 'undefined'){
|
||||
this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index] = [superpos_to_record];
|
||||
}else if(!already_clustered){
|
||||
this.concernementsByID[superpos_to_record[j].cid].superpositions[cluster_index].push(superpos_to_record);
|
||||
}
|
||||
recorded = true;
|
||||
break in_cluster_loop;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 2 if cluster deos not exists, create the cluster and fill it with first item of cluster
|
||||
if(!recorded){
|
||||
// console.log('-- not recorded');
|
||||
// create cluster and fill it with first item of couple
|
||||
this.allSuperpositions_clustered.push(superpos_to_record);
|
||||
// record superposition on each concernement of each couple member BY cluster index
|
||||
for( let i=0; i <= 1; i++){
|
||||
this.concernementsByID[superpos_to_record[i].cid].superpositions[this.allSuperpositions_clustered.length-1] = [superpos_to_record];
|
||||
// console.log(`concernement ${superpos_to_record[i].cid} superposition by cluster index`,this.concernementsByID[superpos_to_record[i].cid].superpositions);
|
||||
}
|
||||
}
|
||||
}
|
||||
// console.log('this.allSuperpositions_clustered', this.allSuperpositions_clustered);
|
||||
// console.log(`end of parsing concernements`);
|
||||
|
||||
},
|
||||
reloadConcernements () {
|
||||
console.log('reloadConcernements');
|
||||
// reset the arrays
|
||||
// this.concernements = [];
|
||||
// this.concernementsByID = {};
|
||||
// this.concernements_loaded = false;
|
||||
this.loadConcernements();
|
||||
return new Promise((resolve, reject) => {
|
||||
// reset the arrays
|
||||
this.concernements = [];
|
||||
this.concernementsByID = {};
|
||||
// this.concernements_loaded = false;
|
||||
this.loadConcernements()
|
||||
.then(()=>{
|
||||
resolve();
|
||||
});
|
||||
})
|
||||
},
|
||||
reloadConcernementEntites(nid){
|
||||
// console.log('reloadConcernementEntites nid', nid);
|
||||
// const ast = gql`{
|
||||
// concernement(id:${nid}) {
|
||||
// entites {
|
||||
// id
|
||||
// revision_id
|
||||
// menacemaintien
|
||||
// actuelfuture
|
||||
// entite {
|
||||
// title
|
||||
// id
|
||||
// agissante
|
||||
// proximite {
|
||||
// id
|
||||
// title
|
||||
// }
|
||||
// superposition {
|
||||
// id
|
||||
// title
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// `
|
||||
// // console.log('ast', ast);
|
||||
// GQL.post('', { query: print(ast) })
|
||||
// .then(({ data : { data : { concernement } } }) => {
|
||||
// console.log('reloadConcernementEntites loaded', concernement)
|
||||
// // this.concernementsByID[concernement.id].entites = concernement.entites;
|
||||
// })
|
||||
// .catch(error => {
|
||||
// console.warn('Issue with reloadConcernementEntites', error)
|
||||
// Promise.reject(error)
|
||||
// })
|
||||
},
|
||||
loadContentTypeDefinition () {
|
||||
const body = {
|
||||
@ -372,15 +459,15 @@ export const ConcernementsStore = defineStore({
|
||||
this.opened_concernement = null;
|
||||
this.opened_recit = null;
|
||||
this.concernements.forEach((c, i) => {
|
||||
state = cid === c.id;
|
||||
// console.log(`openCloseConcernements foreach id: ${id}, c.id: ${c.id}, state: ${state}`, id, c.id);
|
||||
c.opened = this.concernements[i].opened = this.concernementsByID[c.id].opened = state;
|
||||
if (state) {
|
||||
c.opened = this.concernements[i].opened = this.concernementsByID[c.id].opened = cid === c.id;
|
||||
if (c.opened) {
|
||||
this.opened_concernement = c;
|
||||
this.opened_concernement.opened_mapitem_id = mapitem_id;
|
||||
if (c.has_recit && this.map_mode === "terraindevie") {
|
||||
this.opened_recit = c.recit;
|
||||
}
|
||||
this.concernement_active_revision = {cid: cid, rid: c.active_revision}
|
||||
// console.log('openCloseConcernements', this.opened_concernement.opened);
|
||||
}
|
||||
});
|
||||
@ -440,8 +527,9 @@ export const ConcernementsStore = defineStore({
|
||||
this.recit_plyr_player = player;
|
||||
},
|
||||
setActiveRevision (cid, rid) {
|
||||
// console.log(`setActiveRevision, cid:${cid}, rid:${rid}`);
|
||||
this.concernementsByID[cid].active_revision = rid;
|
||||
console.log(`setActiveRevision, cid:${cid}, rid:${rid}`);
|
||||
// this.concernementsByID[cid].active_revision = rid;
|
||||
this.concernement_active_revision = {cid: cid, rid: rid};
|
||||
},
|
||||
setDetailsZoomValue (z) {
|
||||
console.log(`concernement store setDetailsZoomValue ${z}`);
|
||||
|
@ -76,7 +76,7 @@ export const UserStore = defineStore({
|
||||
console.log('User Loggedin')
|
||||
// todo reload concernements
|
||||
// concrnmtStore().reloadConcernements(); // INFO would be good but to much complicated for now, just reload the page
|
||||
// window.location.reload();
|
||||
window.location.reload();
|
||||
resolve()
|
||||
})
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user