display all doleance fields in cartouche

This commit is contained in:
Bachir Soussi Chiadmi 2023-06-07 12:51:40 +02:00
parent be824fd325
commit 0b9a1ae946
3 changed files with 248 additions and 47 deletions

View File

@ -753,6 +753,10 @@ export default {
strokeColor: '#fff', strokeColor: '#fff',
strokeWidth: 1 strokeWidth: 1
} }
let felchesstyle = {
strokeColor: '#fff',
strokeWidth: 2
}
let legende_style = { let legende_style = {
strokeColor: '#000', strokeColor: '#000',
@ -880,7 +884,7 @@ export default {
[this.pos.x, this.pos.y - dr*1.5], [this.pos.x, this.pos.y - dr*1.5],
[this.pos.x - 2, this.pos.y - dr*1.5 + 2] [this.pos.x - 2, this.pos.y - dr*1.5 + 2]
], ],
style: style style: felchesstyle
}), }),
// bas // bas
new paper.Path({ new paper.Path({
@ -889,7 +893,7 @@ export default {
[this.pos.x, this.pos.y + dr*1.5], [this.pos.x, this.pos.y + dr*1.5],
[this.pos.x + 2, this.pos.y + dr*1.5 + 2] [this.pos.x + 2, this.pos.y + dr*1.5 + 2]
], ],
style: style style: felchesstyle
}), }),
// gauche // gauche
new paper.Path({ new paper.Path({
@ -898,7 +902,7 @@ export default {
[this.pos.x - dr*1.5, this.pos.y], [this.pos.x - dr*1.5, this.pos.y],
[this.pos.x - dr*1.5 + 2, this.pos.y + 2] [this.pos.x - dr*1.5 + 2, this.pos.y + 2]
], ],
style: style style: felchesstyle
}), }),
// droite // droite
new paper.Path({ new paper.Path({
@ -907,7 +911,7 @@ export default {
[this.pos.x + dr*1.5, this.pos.y], [this.pos.x + dr*1.5, this.pos.y],
[this.pos.x + dr*1.5 + 2, this.pos.y - 2] [this.pos.x + dr*1.5 + 2, this.pos.y - 2]
], ],
style: style style: felchesstyle
}), }),
// //
// LEGENDES // LEGENDES
@ -1033,7 +1037,8 @@ export default {
justification: 'left' justification: 'left'
}), }),
// //
// legendes petits cercles // Points Cardinaux
//
// haut // haut
new paper.Path.Circle({ new paper.Path.Circle({
center: [this.pos.x, this.pos.y -r], center: [this.pos.x, this.pos.y -r],
@ -1202,7 +1207,7 @@ export default {
setPaperDoleanceSteps(){ setPaperDoleanceSteps(){
let g = new paper.Group({ let g = new paper.Group({
pivot: new paper.Point(this.pos), pivot: new paper.Point(this.pos),
name: 'doleance steps' name: 'doleance_steps'
}); });
let doleance = this.concernement.doleances[0]; let doleance = this.concernement.doleances[0];
let all_fields = [ let all_fields = [
@ -1282,9 +1287,9 @@ export default {
let fontsize = 2.1; let fontsize = 2.1;
// //
// PREMIER QUART // POINTS CARDINAUX
// //
// #1 le problème // le problème
// //
g.addChild(new paper.Path.Circle({ g.addChild(new paper.Path.Circle({
center: [this.pos.x, this.pos.y + r], center: [this.pos.x, this.pos.y + r],
@ -1292,22 +1297,31 @@ export default {
style: { style: {
fillColor: '#fff' fillColor: '#fff'
} }
})) }));
g.addChild(new paper.Path.Line({ g.addChild(new paper.Path.Line({
from: [this.pos.x, this.pos.y + r], from: [this.pos.x, this.pos.y + r],
to: [this.pos.x, this.pos.y + r + 8], to: [this.pos.x, this.pos.y + r + 8],
strokeColor: '#fff' strokeColor: '#fff'
})) }));
g.addChild(new paper.PointText({ g.addChild(new paper.PointText({
point: [this.pos.x, this.pos.y + r + 10], point: [this.pos.x, this.pos.y + r + 10],
content: doleance['leprobleme'], content: "Début du cercle\nLe problème (injustice, indignation, plainte...)",
fontSize: fontsize, fontSize: fontsize,
fillColor: '#000',
justification: 'center'
}));
g.addChild(new paper.PointText({
point: [this.pos.x, this.pos.y + r + 16],
content: doleance['leprobleme'],
fontSize: 2.3,
fillColor: '#fff', fillColor: '#fff',
justification: 'center' justification: 'center'
})) }));
// //
// #2 l'enquete // CAMENBERT STATIQUES
//
// l'enquete
// //
let enquete = new paper.Group({ let enquete = new paper.Group({
name: 'enquete' name: 'enquete'
@ -1318,16 +1332,17 @@ export default {
strokeWidth: 2, strokeWidth: 2,
fillColor: "rgba(255, 255, 255, 0.4)" fillColor: "rgba(255, 255, 255, 0.4)"
}); });
cam.add({x: this.pos.x , y: this.pos.y + dr});
cam.lineTo({x: this.pos.x, y: this.pos.y + r}); cam.add({x: this.pos.x + n, y: this.pos.y + n});
cam.arcTo({x: this.pos.x - p, y: this.pos.y + o}, {x: this.pos.x - m, y: this.pos.y + m}); cam.lineTo({x: this.pos.x + m , y: this.pos.y + m});
cam.lineTo({x: this.pos.x - n, y: this.pos.y + n}); cam.arcTo({x: this.pos.x + p, y: this.pos.y + o}, {x: this.pos.x, y: this.pos.y + r});
cam.arcTo({x: this.pos.x - p_d, y: this.pos.y + o_d}, {x: this.pos.x , y: this.pos.y + dr}); cam.lineTo({x: this.pos.x, y: this.pos.y + dr});
cam.arcTo({x: this.pos.x + p_d, y: this.pos.y + o_d}, {x: this.pos.x + n, y: this.pos.y + n});
enquete.addChild(cam) enquete.addChild(cam)
// texte // texte
enquete.addChild(new paper.PointText({ enquete.addChild(new paper.PointText({
point: { point: {
x:this.pos.x - Math.sin(22.5*(Math.PI/180)) * r*0.75, x:this.pos.x + Math.sin(22.5*(Math.PI/180)) * r*0.75,
y:this.pos.y + Math.cos(22.5*(Math.PI/180)) * r*0.75 y:this.pos.y + Math.cos(22.5*(Math.PI/180)) * r*0.75
}, },
content: doleance['lenquete'], content: doleance['lenquete'],
@ -1337,30 +1352,47 @@ export default {
})); }));
g.addChild(enquete); g.addChild(enquete);
//
// probleme_initial_resolu
//
let resolution = new paper.Group({
name: 'resolution'
});
// camenbert
let rescam = new paper.Path({
strokeColor: '#fff',
strokeWidth: 2,
fillColor: "rgba(255, 255, 255, 0.4)"
});
rescam.add({x: this.pos.x , y: this.pos.y + dr});
rescam.lineTo({x: this.pos.x, y: this.pos.y + r});
rescam.arcTo({x: this.pos.x - p, y: this.pos.y + o}, {x: this.pos.x - m, y: this.pos.y + m});
rescam.lineTo({x: this.pos.x - n, y: this.pos.y + n});
rescam.arcTo({x: this.pos.x - p_d, y: this.pos.y + o_d}, {x: this.pos.x , y: this.pos.y + dr});
resolution.addChild(rescam)
// texte
resolution.addChild(new paper.PointText({
point: {
x:this.pos.x - Math.sin(22.5*(Math.PI/180)) * r*0.75,
y:this.pos.y + Math.cos(22.5*(Math.PI/180)) * r*0.75
},
content: doleance['probleme_initial_resolu'] ? doleance['oui_nouvelle_situation'] : doleance['non_adresse_doleance'],
fontSize: fontsize,
fillColor: '#fff',
justification: 'center'
}));
g.addChild(resolution);
// //
// MULTIPLE FIELDS // MULTIPLE FIELDS
// //
let multiple_fields = [ let multiple_fields = [
{ { field_name: 'groupesinterets', arc: 45, decalage: -45 },
field_name: 'groupesinterets', { field_name: 'reception_traitement', arc: 90, decalage: -90 },
arc: 45, { field_name: 'mise_en_oeuvre_decision', arc: 90, decalage: -180 },
decalage: -45 { field_name: 'receptions_et_applications', arc: 45, decalage: 90 }
},
{
field_name: 'reception_traitement',
arc: 90,
decalage: -90
},
{
field_name: 'mise_en_oeuvre_decision',
arc: 90,
decalage: -180
},
{
field_name: 'receptions_et_applications',
arc: 45,
decalage: 90
}
] ]
multiple_fields.forEach((mf, j) => { multiple_fields.forEach((mf, j) => {
@ -1816,15 +1848,14 @@ export default {
if (this.map_mode === "doleancer") { if (this.map_mode === "doleancer") {
if (!this.is_opened) { if (!this.is_opened) {
this.paper_objects.children.doleance_icon.visible = true; this.paper_objects.children.doleance_icon.visible = true;
// this.paper_objects.children.doleance_steps.visible = false; this.paper_objects.children.doleance_steps.visible = false;
} else { } else {
this.paper_objects.children.doleance_icon.visible = false; this.paper_objects.children.doleance_icon.visible = false;
// this.paper_objects.children.doleance_steps.visible = true; this.paper_objects.children.doleance_steps.visible = true;
// this.drawBesoins();
} }
} else { } else {
this.paper_objects.children.doleance_icon.visible = false; this.paper_objects.children.doleance_icon.visible = false;
// this.paper_objects.children.doleance_steps.visible = false; this.paper_objects.children.doleance_steps.visible = false;
} }
} }

View File

@ -25,6 +25,11 @@ export const ConcernementsStore = defineStore({
opened_entite_id: null, opened_entite_id: null,
ct_concernement: {}, ct_concernement: {},
ct_entite: {}, ct_entite: {},
ct_cercle_politique: {},
p_groupes_interets: {},
p_reception_et_traitement: {},
p_mise_en_oeuvre_decision: {},
p_reception_application_decision: {},
concernements_loaded: false, concernements_loaded: false,
}), }),
getters: { getters: {
@ -123,7 +128,7 @@ export const ConcernementsStore = defineStore({
}) })
// concernement // entite
body.variables = { type: 'node', bundle: 'entite' } body.variables = { type: 'node', bundle: 'entite' }
GQL.post('', body) GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => { .then(({ data: { data: { entitydef }}}) => {
@ -135,6 +140,66 @@ export const ConcernementsStore = defineStore({
}) })
// cercle_politique
body.variables = { type: 'node', bundle: 'cercle_politique' }
GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => {
// console.log('loadContentTypeDefinition entitydef', entitydef);
entitydef.fields.forEach(field => {
this.ct_cercle_politique[field.field_name] = field;
});
console.log('loadContentTypeDefinition entitydef cercle_politique', this.ct_cercle_politique);
})
// paragraphe groupes_interets
body.variables = { type: 'paragraph', bundle: 'groupes_interets' }
GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => {
// console.log('loadContentTypeDefinition entitydef', entitydef);
entitydef.fields.forEach(field => {
this.p_groupes_interets[field.field_name] = field;
});
console.log('loadContentTypeDefinition entitydef p_groupes_interets', this.p_groupes_interets);
})
// paragraphe reception_et_traitement
body.variables = { type: 'paragraph', bundle: 'reception_et_traitement' }
GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => {
// console.log('loadContentTypeDefinition entitydef', entitydef);
entitydef.fields.forEach(field => {
this.p_reception_et_traitement[field.field_name] = field;
});
console.log('loadContentTypeDefinition entitydef p_reception_et_traitement', this.p_reception_et_traitement);
})
// paragraphe mise_en_oeuvre_decision
body.variables = { type: 'paragraph', bundle: 'mise_en_oeuvre_decision' }
GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => {
// console.log('loadContentTypeDefinition entitydef', entitydef);
entitydef.fields.forEach(field => {
this.p_mise_en_oeuvre_decision[field.field_name] = field;
});
console.log('loadContentTypeDefinition entitydef p_mise_en_oeuvre_decision', this.p_mise_en_oeuvre_decision);
})
// paragraphe reception_application_decision
body.variables = { type: 'paragraph', bundle: 'reception_application_decision' }
GQL.post('', body)
.then(({ data: { data: { entitydef }}}) => {
// console.log('loadContentTypeDefinition entitydef', entitydef);
entitydef.fields.forEach(field => {
this.p_reception_application_decision[field.field_name] = field;
});
console.log('loadContentTypeDefinition entitydef p_reception_application_decision', this.p_reception_application_decision);
})
}, },
hideShowConcernement (id, state) { hideShowConcernement (id, state) {
console.log(`disableConcernement id: ${id}`); console.log(`disableConcernement id: ${id}`);

View File

@ -27,6 +27,11 @@ export default {
...mapState(ConcernementsStore,['concernements_loaded']), ...mapState(ConcernementsStore,['concernements_loaded']),
...mapState(ConcernementsStore,['ct_concernement']), ...mapState(ConcernementsStore,['ct_concernement']),
...mapState(ConcernementsStore,['ct_entite']), ...mapState(ConcernementsStore,['ct_entite']),
...mapState(ConcernementsStore,['ct_cercle_politique']),
...mapState(ConcernementsStore,['p_groupes_interets']),
...mapState(ConcernementsStore,['p_reception_et_traitement']),
...mapState(ConcernementsStore,['p_mise_en_oeuvre_decision']),
...mapState(ConcernementsStore,['p_reception_application_decision']),
...mapState(CommonStore,['hover_elmt']) ...mapState(CommonStore,['hover_elmt'])
}, },
created () { created () {
@ -105,7 +110,7 @@ export default {
<section v-if="opened" class="concernement"> <section v-if="opened" class="concernement">
<header v-if="concernements_loaded"> <header v-if="concernements_loaded">
<label <label
v-if="ct_concernement && !entite && map_mode !== 'puissancedagir'" v-if="ct_concernement && !entite && map_mode !== 'puissancedagir'&& map_mode !== 'doleancer'"
> >
{{ ct_concernement.title.description }} {{ ct_concernement.title.description }}
</label> </label>
@ -204,6 +209,106 @@ export default {
</li> </li>
</ul> </ul>
</section> </section>
<section
v-if="map_mode === 'doleancer'"
class="content-doleances">
<section
v-for="doleance in opened.doleances"
class="doleance">
<header>
<label for="leprobleme">{{ ct_cercle_politique.field_le_probleme.label }}</label>
<h4 name="leprobleme">{{ doleance.leprobleme }}</h4>
<label for="lenquete">{{ ct_cercle_politique.field_enquete_terraindevie.label }}</label>
<h3 name="lenquete">{{ doleance.lenquete }}</h3>
</header>
<section class="groupesinterets">
<h2>{{ ct_cercle_politique.field_groupes.label }}</h2>
<ul>
<li
v-for="groupe in doleance.groupesinterets">
<label for="groupe">{{ p_groupes_interets.field_groupe_interets.label }}</label>
<p name="groupe" v-html="groupe.groupe_interets" />
<label for="accorder">{{ p_groupes_interets.field_accorder_interets.label }}</label>
<p name="accorder" v-html="groupe.accorder_interets" />
<label for="formuler">{{ p_groupes_interets.field_formuler.label }}</label>
<p name="formuler" v-html="groupe.formuler" />
</li>
</ul>
</section>
<section class="adresse">
<label for="entite_addresse_doleance">{{ ct_cercle_politique.field_entite_adresse_doleance.label }}</label>
<p name="entite_addresse_doleance" v-html="doleance.entite_addresse_doleance" />
<label for="comment_ennonce_doleance">{{ ct_cercle_politique.field_comment_enonce_doleance.label }}</label>
<p name="comment_ennonce_doleance" v-html="doleance.comment_ennonce_doleance" />
<label for="aqui_addresse_doleance">{{ ct_cercle_politique.field_a_qui_adresse_doleance.label }}</label>
<p name="aqui_addresse_doleance" v-html="doleance.aqui_addresse_doleance" />
<h2>{{ ct_cercle_politique.field_receptions_et_traitements.label }}</h2>
<ul class="reception_traitement">
<li
v-for="rec in doleance.reception_traitement">
<label for="entite_adressee">{{ p_reception_et_traitement.field_entite_adressee.label }}</label>
<p name="entite_adressee" v-html="rec.entite_adressee" />
<label for="doleance_formulee">{{ p_reception_et_traitement.field_doleance_formulee.label }}</label>
<p name="doleance_formulee" v-html="rec.doleance_formulee" />
<label for="traite_doleance">{{ p_reception_et_traitement.field_traite_doleance.label }}</label>
<p name="traite_doleance" v-html="rec.traite_doleance" />
<label for="entite_recoit_doleance">{{ p_reception_et_traitement.field_entite_recoit_doleance.label }}</label>
<p name="entite_recoit_doleance" v-html="rec.entite_recoit_doleance" />
</li>
</ul>
</section>
<section class="miseenoeuvre">
<label for="entites_decisionnaires">{{ ct_cercle_politique.field_entites_decisionnaires.label }}</label>
<p name="entites_decisionnaires" v-html="doleance.entites_decisionnaires" />
<label for="decision_formule">{{ ct_cercle_politique.field_decision_formulee.label }}</label>
<p name="decision_formule" v-html="doleance.decision_formule" />
<h2>{{ ct_cercle_politique.field_mise_en_oeuvre_decision.label }}</h2>
<ul class="mise_en_oeuvre_decision">
<li
v-for="dec in doleance.mise_en_oeuvre_decision">
<label for="entite_adresse_decision">{{ p_mise_en_oeuvre_decision.field_entite_adresse_decision.label }}</label>
<p name="entite_adresse_decision" v-html="dec.entite_adresse_decision" />
<label for="formule_decision">{{ p_mise_en_oeuvre_decision.field_formule_decision.label }}</label>
<p name="formule_decision" v-html="dec.formule_decision" />
<label for="entite_metenoeuvre_decisio">{{ p_mise_en_oeuvre_decision.field_entite_metenoeuvre_decisio.label }}</label>
<p name="entite_metenoeuvre_decisio" v-html="dec.entite_metenoeuvre_decisio" />
</li>
</ul>
</section>
<section class="receptions_et_applications">
<label for="entite_adresse_application">{{ ct_cercle_politique.field_entite_adresse_application.label }}</label>
<p name="entite_adresse_application" v-html="doleance.entite_adresse_application" />
<label for="aqui_adresse_decision">{{ ct_cercle_politique.field_aqui_adresse_decision.label }}</label>
<p name="aqui_adresse_decision" v-html="doleance.aqui_adresse_decision" />
<label for="comment_formule_decision">{{ ct_cercle_politique.field_comment_formule_decision.label }}</label>
<p name="comment_formule_decision" v-html="doleance.comment_formule_decision" />
<h2>{{ ct_cercle_politique.field_receptions_et_applications.label }}</h2>
<ul class="receptions_et_applications">
<li
v-for="app in doleance.receptions_et_applications">
<label for="applique_decision">{{ p_reception_application_decision.field_applique_decision.label }}</label>
<p name="applique_decision" v-html="app.applique_decision" />
<label for="formule_decision_applic">{{ p_reception_application_decision.field_formule_decision_applic.label }}</label>
<p name="formule_decision_applic" v-html="app.formule_decision_applic" />
<label for="entite_recoit_decision">{{ p_reception_application_decision.field_entite_recoit_decision.label }}</label>
<p name="entite_recoit_decision" v-html="app.entite_recoit_decision" />
</li>
</ul>
<label for="probleme_initial_resolu">{{ ct_cercle_politique.field_probleme_initial_resolu.label }}</label>
<p name="probleme_initial_resolu" v-html="doleance.probleme_initial_resolu" />
<label for="oui_nouvelle_situation">{{ ct_cercle_politique.field_oui_nouvelle_situation.label }}</label>
<p name="oui_nouvelle_situation" v-html="doleance.oui_nouvelle_situation" />
<label for="non_adresse_doleance">{{ ct_cercle_politique.field_non_adresse_doleance.label }}</label>
<p name="non_adresse_doleance" v-html="doleance.non_adresse_doleance" />
</section>
</section>
</section>
</section> </section>
</template> </template>