Compare commits
13 Commits
0e92cbb060
...
master
Author | SHA1 | Date | |
---|---|---|---|
1667fd0403 | |||
f6292d8ad1 | |||
f35493ea90 | |||
bab0204ed7 | |||
a9e6fe2567 | |||
cc943c5776 | |||
b9f9551efa | |||
b9b04f1634 | |||
3e25f8c678 | |||
77640c9d16 | |||
2837705a38 | |||
01d3278a6a | |||
2d9f83cfef |
@ -21,8 +21,11 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
this.loadContentTypeDefinition();
|
this.loadContentTypeDefinition()
|
||||||
this.loadConcernements()
|
this.loadConcernements()
|
||||||
|
// setTimeout(()=>{
|
||||||
|
// throw new Error("sentry test error");
|
||||||
|
// })
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
console.log('APP onMounted')
|
console.log('APP onMounted')
|
||||||
|
@ -21,8 +21,8 @@ MGQ.interceptors.response.use(
|
|||||||
return Promise.resolve(response)
|
return Promise.resolve(response)
|
||||||
},
|
},
|
||||||
error => {
|
error => {
|
||||||
const { status } = error.response
|
// const { status } = error.response
|
||||||
console.warn('error in graphql-axios', status)
|
// console.warn('error in graphql-axios', status)
|
||||||
// if (status === 403) {
|
// if (status === 403) {
|
||||||
// window.location = '/'
|
// window.location = '/'
|
||||||
// }
|
// }
|
||||||
|
@ -224,7 +224,7 @@ div.loading{
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width:$cartouch_width_full;
|
width:$cartouch_width_full;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
padding: 2rem 2rem 1rem;
|
padding: 1rem 1rem 1rem;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
//
|
//
|
||||||
@ -263,7 +263,7 @@ div.loading{
|
|||||||
// layout
|
// layout
|
||||||
>header{
|
>header{
|
||||||
flex: 0 0 auto;
|
flex: 0 0 auto;
|
||||||
padding: 0 0 1em 0;
|
// padding: 0 0 1em 0;
|
||||||
}
|
}
|
||||||
>main{
|
>main{
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
@ -305,7 +305,7 @@ div.loading{
|
|||||||
// display: flex;
|
// display: flex;
|
||||||
// flex-direction: column;
|
// flex-direction: column;
|
||||||
// justify-content: flex-end;
|
// justify-content: flex-end;
|
||||||
padding-bottom: 0.5em;
|
// padding-bottom: 0.5em;
|
||||||
label, h3{
|
label, h3{
|
||||||
// height: 70px;
|
// height: 70px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
@ -325,22 +325,30 @@ div.loading{
|
|||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// span.menacemaintient{
|
|
||||||
// display: block;
|
section.entite-params{
|
||||||
// font-weight: 100;
|
padding:0.5em 0;
|
||||||
// font-size: 0.882em;
|
display: flex;
|
||||||
// padding: 1em 0;
|
flex-direction: row;
|
||||||
// }
|
gap:0.5em;
|
||||||
|
align-items: center;
|
||||||
|
>section.editable{
|
||||||
|
// margin: 0.3em;
|
||||||
|
flex: 1 0 auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
div.concernement-cartouche-icons{
|
div.concernement-cartouche-icons{
|
||||||
|
margin-bottom: 1em;
|
||||||
h2{
|
h2{
|
||||||
font-weight: 400;
|
font-weight: 500;
|
||||||
font-size: 1.512em;
|
font-size: 1.512em;
|
||||||
// &.faded{
|
// &.faded{
|
||||||
// font-weight: 100;
|
// font-weight: 100;
|
||||||
// }
|
// }
|
||||||
padding-bottom: 0.5em;
|
padding-bottom: 0.5em;
|
||||||
|
margin-top: 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
display: -webkit-box;
|
display: -webkit-box;
|
||||||
-webkit-box-orient: vertical;
|
-webkit-box-orient: vertical;
|
||||||
@ -379,12 +387,22 @@ div.loading{
|
|||||||
transition: max-height 0.5s ease-in-out,padding 0.5s ease-in-out;
|
transition: max-height 0.5s ease-in-out,padding 0.5s ease-in-out;
|
||||||
max-height: 100px;
|
max-height: 100px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
&.hidden{
|
// &.hidden{
|
||||||
|
// max-height: 0;
|
||||||
|
// padding-bottom: 0;
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.entity-opened{
|
||||||
|
>header{
|
||||||
|
div.concernement-cartouche-icons{
|
||||||
|
label{
|
||||||
max-height: 0;
|
max-height: 0;
|
||||||
padding-bottom: 0;
|
padding-bottom: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
>main{
|
>main{
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
@ -699,7 +717,7 @@ div.loading{
|
|||||||
span.date{
|
span.date{
|
||||||
@include font_questions();
|
@include font_questions();
|
||||||
display: block;
|
display: block;
|
||||||
padding: 0 0 1em 0;
|
padding: 0 0 0.3em 0;
|
||||||
}
|
}
|
||||||
ul, li{
|
ul, li{
|
||||||
padding:0; margin:0;
|
padding:0; margin:0;
|
||||||
@ -1065,7 +1083,7 @@ div.dp__main{
|
|||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
$p:0.3em;
|
$p:0.3em;
|
||||||
padding:$p;
|
padding:$p;
|
||||||
margin:0.5em 0 0 -$p;
|
margin:0 0 0 -$p;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transition: all 0.2s ease-in-out;
|
transition: all 0.2s ease-in-out;
|
||||||
box-shadow: 2px 2px 4px #bbb;
|
box-shadow: 2px 2px 4px #bbb;
|
||||||
|
@ -87,7 +87,8 @@ export default {
|
|||||||
'detailsZoomValue',
|
'detailsZoomValue',
|
||||||
'reloadConcernements',
|
'reloadConcernements',
|
||||||
'reloadConcernementEntites',
|
'reloadConcernementEntites',
|
||||||
'concernements_loading_nb']),
|
'concernements_loading_nb',
|
||||||
|
'concernement_is_updating_nid']),
|
||||||
...mapState(CommonStore,['hover_elmt',
|
...mapState(CommonStore,['hover_elmt',
|
||||||
'map_item_ray',
|
'map_item_ray',
|
||||||
'cartouch_width',
|
'cartouch_width',
|
||||||
@ -1147,6 +1148,8 @@ export default {
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
});
|
});
|
||||||
g.addChild(g_label);
|
g.addChild(g_label);
|
||||||
|
// when we are re-setting the entitie (e.g. arfter one entity moved) also check the detail zoom and apply correct dim
|
||||||
|
g_label.opacity = -2 + this.detailsZoomValue;
|
||||||
g_label.sendToBack();
|
g_label.sendToBack();
|
||||||
// for (let i = 0; i < this.entites.length; i++) {
|
// for (let i = 0; i < this.entites.length; i++) {
|
||||||
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
|
for (let i = 0; i < this.concernement.revisions_byid[this.active_revision].entites.length; i++) {
|
||||||
@ -1236,6 +1239,7 @@ export default {
|
|||||||
label.addChild(label_bg);
|
label.addChild(label_bg);
|
||||||
label_txt.insertAbove(label_bg);
|
label_txt.insertAbove(label_bg);
|
||||||
label_click_zone.insertAbove(label_txt);
|
label_click_zone.insertAbove(label_txt);
|
||||||
|
label.scale(this.scale);
|
||||||
// label.sendToBack();
|
// label.sendToBack();
|
||||||
g_label.addChild(label);
|
g_label.addChild(label);
|
||||||
|
|
||||||
@ -1461,10 +1465,14 @@ export default {
|
|||||||
}); // end of loop on proximite for each main entite
|
}); // end of loop on proximite for each main entite
|
||||||
|
|
||||||
|
|
||||||
let activeEntites = this.getActiveEntites(allEntiteRefConcernementContourEntites);
|
// WARNING allEntiteRefConcernementContourEntites does contains entities just display infos so WHY getActiveEntities() it CAN'T work
|
||||||
|
// let activeEntites = this.getActiveEntites(allEntiteRefConcernementContourEntites);
|
||||||
|
// console.log('activeEntites', activeEntites);
|
||||||
|
|
||||||
// general contour arround proximité
|
// general contour arround proximité
|
||||||
// console.log('allEntiteRefConcernementContourEntites', allEntiteRefConcernementContourEntites);
|
// console.log('allEntiteRefConcernementContourEntites', allEntiteRefConcernementContourEntites);
|
||||||
let genContoursEntite = this.getJarvisEnvelopeConvexeEntites(activeEntites);
|
// let genContoursEntite = this.getJarvisEnvelopeConvexeEntites(activeEntites);
|
||||||
|
let genContoursEntite = this.getJarvisEnvelopeConvexeEntites(allEntiteRefConcernementContourEntites);
|
||||||
// console.log('genContoursEntite', genContoursEntite);
|
// console.log('genContoursEntite', genContoursEntite);
|
||||||
let points = [];
|
let points = [];
|
||||||
genContoursEntite.forEach(ent => {
|
genContoursEntite.forEach(ent => {
|
||||||
@ -2247,6 +2255,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (this.paper_main_object.children && this.paper_main_object.children['entites']) {
|
||||||
let labels_group = this.paper_main_object.children['entites'].children['entites_labels'];
|
let labels_group = this.paper_main_object.children['entites'].children['entites_labels'];
|
||||||
if (labels_group) {
|
if (labels_group) {
|
||||||
labels_group.children.forEach((item) => {
|
labels_group.children.forEach((item) => {
|
||||||
@ -2260,6 +2269,8 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
},
|
},
|
||||||
focusOpenedDoleanceStep(){
|
focusOpenedDoleanceStep(){
|
||||||
@ -2618,12 +2629,18 @@ export default {
|
|||||||
if (group_to_hit) {
|
if (group_to_hit) {
|
||||||
let result = group_to_hit.hitTest(event.point);
|
let result = group_to_hit.hitTest(event.point);
|
||||||
console.log('click result', result);
|
console.log('click result', result);
|
||||||
if (result) {
|
if (result && result.item.item_id && (result.item.name != "label_click_zone" || this.detailsZoomValue > 2)) {
|
||||||
switch (this.map_mode) {
|
switch (this.map_mode) {
|
||||||
case "terraindevie":
|
case "terraindevie":
|
||||||
case "superposition":
|
case "superposition":
|
||||||
case "action":
|
case "action":
|
||||||
// we have clicked on an entite
|
// we have clicked on an entite
|
||||||
|
// unfocus any active element to trigger recording if needed
|
||||||
|
document.activeElement.blur();
|
||||||
|
// setInterval to let time for editable fields to focus out and record changes
|
||||||
|
let interval = setInterval(() => {
|
||||||
|
if (!this.concernement_is_updating_nid) {
|
||||||
|
clearInterval(interval);
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: 'concernement',
|
name: 'concernement',
|
||||||
params: {cid: this.cid, eid: result.item.item_id},
|
params: {cid: this.cid, eid: result.item.item_id},
|
||||||
@ -2633,6 +2650,8 @@ export default {
|
|||||||
},
|
},
|
||||||
hash: `#${this.map_mode}`,
|
hash: `#${this.map_mode}`,
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}, 1)
|
||||||
break;
|
break;
|
||||||
case "proximite":
|
case "proximite":
|
||||||
switch (result.item.item_type) {
|
switch (result.item.item_type) {
|
||||||
@ -2663,11 +2682,20 @@ export default {
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
// otherwise we close the entite and come back to the concernement
|
// otherwise we close the entite and come back to the concernement
|
||||||
|
// unfocus any active element to trigger recording if needed
|
||||||
|
document.activeElement.blur();
|
||||||
|
// setInterval to let time for editable fields to focus out and record changes
|
||||||
|
let interval = setInterval(() => {
|
||||||
|
if (!this.concernement_is_updating_nid) {
|
||||||
|
clearInterval(interval);
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: 'concernement',
|
name: 'concernement',
|
||||||
hash: `#${this.map_mode}`,
|
hash: `#${this.map_mode}`,
|
||||||
params: {id: this.cid, mapitemid: this.id}
|
params: {id: this.cid, mapitemid: this.id}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
}, 1)
|
||||||
|
|
||||||
|
|
||||||
// reset the mousehover
|
// reset the mousehover
|
||||||
this.resetHoverElmt();
|
this.resetHoverElmt();
|
||||||
@ -2687,10 +2715,10 @@ export default {
|
|||||||
}.bind(this);
|
}.bind(this);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* works i correlation with updateDetailsZoomScale()
|
* works in correlation with updateDetailsZoomScale()
|
||||||
*/
|
*/
|
||||||
this.paper_main_object.onMouseDrag = async function(event){
|
this.paper_main_object.onMouseDrag = async function(event){
|
||||||
if (this.is_open && this.map_mode === 'terraindevie' && this.concernement.can_update) {
|
if (this.is_open && this.map_mode === 'terraindevie') { // && this.concernement.can_update
|
||||||
// console.log('paper concernement onMouseDrag', event, this);
|
// console.log('paper concernement onMouseDrag', event, this);
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
@ -2749,7 +2777,7 @@ export default {
|
|||||||
this.recordNewEntitePos(pid, af, mm, p)
|
this.recordNewEntitePos(pid, af, mm, p)
|
||||||
.then((parag) => {
|
.then((parag) => {
|
||||||
// then reload value
|
// then reload value
|
||||||
// redrawing entites is handle by watch concernement.entites
|
// redrawing entites is handled by watch concernement.entites
|
||||||
this.reloadConcernementEntites(this.concernement.id)
|
this.reloadConcernementEntites(this.concernement.id)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.wait = false;
|
this.wait = false;
|
||||||
@ -3022,7 +3050,9 @@ export default {
|
|||||||
x: (this.canvas.width - this.cartouch_width) / 2,
|
x: (this.canvas.width - this.cartouch_width) / 2,
|
||||||
y: this.canvas.height / 2
|
y: this.canvas.height / 2
|
||||||
};
|
};
|
||||||
|
if (this.constraint) {
|
||||||
this.constraint.pointA = this.pos;
|
this.constraint.pointA = this.pos;
|
||||||
|
}
|
||||||
console.log('resetMapItemPosition', this.cartouch_width, this.pos);
|
console.log('resetMapItemPosition', this.cartouch_width, this.pos);
|
||||||
Matter.Body.setPosition(this.body, this.pos);
|
Matter.Body.setPosition(this.body, this.pos);
|
||||||
},
|
},
|
||||||
|
@ -61,6 +61,7 @@ export default {
|
|||||||
'concernements',
|
'concernements',
|
||||||
'concernementsByID',
|
'concernementsByID',
|
||||||
'opened_concernement',
|
'opened_concernement',
|
||||||
|
'concernement_is_updating_nid',
|
||||||
'opened_entite_id',
|
'opened_entite_id',
|
||||||
'opened_recit',
|
'opened_recit',
|
||||||
'allSuperpositions',
|
'allSuperpositions',
|
||||||
@ -122,11 +123,17 @@ export default {
|
|||||||
this.paper.view.onClick = function(event) {
|
this.paper.view.onClick = function(event) {
|
||||||
// console.log("view onClick", this, event.target);
|
// console.log("view onClick", this, event.target);
|
||||||
if(event.target._id === "paper-view-0") {
|
if(event.target._id === "paper-view-0") {
|
||||||
this.resetConcernementOpened();
|
// // unfocus any active element to trigger recording if needed
|
||||||
this.$router.push({
|
// document.activeElement.blur();
|
||||||
name: 'home',
|
// // setTimeout to let time for editable fields to focus out and record changes
|
||||||
hash: `#${this.map_mode}`
|
// setTimeout(() => {
|
||||||
});
|
// this.resetConcernementOpened();
|
||||||
|
// this.$router.push({
|
||||||
|
// name: 'home',
|
||||||
|
// hash: `#${this.map_mode}`
|
||||||
|
// });
|
||||||
|
// }, 1);
|
||||||
|
this.closeConcernement();
|
||||||
}
|
}
|
||||||
}.bind(this);
|
}.bind(this);
|
||||||
|
|
||||||
@ -1543,6 +1550,26 @@ export default {
|
|||||||
});
|
});
|
||||||
wall_rects.addChildren(children);
|
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 () {
|
beforeUpdate () {
|
||||||
|
@ -1203,13 +1203,13 @@ export default {
|
|||||||
|
|
||||||
<!-- <vue-plyr>
|
<!-- <vue-plyr>
|
||||||
<div class="plyr__video-embed"> -->
|
<div class="plyr__video-embed"> -->
|
||||||
<iframe
|
<!-- <iframe
|
||||||
v-if="!opened_concernement.opened_doleance || opened_concernement.opened_doleance.field === 'leprobleme' || opened_concernement.opened_doleance.field === 'lenquete'"
|
v-if="!opened_concernement.opened_doleance || opened_concernement.opened_doleance.field === 'leprobleme' || opened_concernement.opened_doleance.field === 'lenquete'"
|
||||||
src="https://www.youtube.com/embed/_Uogb4tJ9c4?amp;iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1"
|
src="https://www.youtube.com/embed/_Uogb4tJ9c4?amp;iv_load_policy=3&modestbranding=1&playsinline=1&showinfo=0&rel=0&enablejsapi=1"
|
||||||
allowfullscreen
|
allowfullscreen
|
||||||
allowtransparency
|
allowtransparency
|
||||||
frameborder="0"
|
frameborder="0"
|
||||||
></iframe>
|
></iframe> -->
|
||||||
<!-- </div>
|
<!-- </div>
|
||||||
</vue-plyr> -->
|
</vue-plyr> -->
|
||||||
</template>
|
</template>
|
||||||
|
@ -211,8 +211,10 @@ export default {
|
|||||||
...mapActions(ConcernementsStore, ['setActiveRevision',
|
...mapActions(ConcernementsStore, ['setActiveRevision',
|
||||||
'setDetailsZoomValue',
|
'setDetailsZoomValue',
|
||||||
'loadConcernements',
|
'loadConcernements',
|
||||||
|
'setConcernementIsUpdating',
|
||||||
'reloadConcernements',
|
'reloadConcernements',
|
||||||
'reloadConcernementEntites',
|
'reloadConcernementEntites',
|
||||||
|
'reloadConcernementField',
|
||||||
'reloadProximites'
|
'reloadProximites'
|
||||||
]),
|
]),
|
||||||
...mapActions(UserStore, ['getUserEntitees']),
|
...mapActions(UserStore, ['getUserEntitees']),
|
||||||
@ -258,6 +260,22 @@ export default {
|
|||||||
this.headerreduced = false;
|
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){
|
onContentEditableFocusOut(e){
|
||||||
console.log('onContentEditableFocusOut', e);
|
console.log('onContentEditableFocusOut', e);
|
||||||
let new_field_content = e.target.innerText;
|
let new_field_content = e.target.innerText;
|
||||||
@ -513,7 +531,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<CartoucheLayout ref="cartouche_layout" :cid="cid" @main_scrolled="onMainScrolled">
|
<CartoucheLayout ref="cartouche_layout" :cid="cid" :eid="eid" @main_scrolled="onMainScrolled">
|
||||||
<template v-slot:header>
|
<template v-slot:header>
|
||||||
<div class="entite">
|
<div class="entite">
|
||||||
<!-- TODO update entite with revisions -->
|
<!-- TODO update entite with revisions -->
|
||||||
@ -531,7 +549,8 @@ export default {
|
|||||||
id: this.entite.id,
|
id: this.entite.id,
|
||||||
field: {field_name: 'title', value:'value'}
|
field: {field_name: 'title', value:'value'}
|
||||||
}"
|
}"
|
||||||
v-on:updated="reloadConcernementEntites(cid)"/>
|
v-on:updating="onFieldIsUpdating(cid)"
|
||||||
|
v-on:updated="onFieldUpdated(cid)"/>
|
||||||
|
|
||||||
<!-- proximité -->
|
<!-- proximité -->
|
||||||
<section
|
<section
|
||||||
@ -575,9 +594,9 @@ export default {
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
<section class="entite-params" v-if="entite && entite.can_update">
|
||||||
<!-- active -->
|
<!-- active -->
|
||||||
<CheckboxEditable
|
<CheckboxEditable
|
||||||
v-if="entite && entite.can_update"
|
|
||||||
:checked="this.parag_entite.active"
|
:checked="this.parag_entite.active"
|
||||||
label="Active"
|
label="Active"
|
||||||
:data="{
|
:data="{
|
||||||
@ -589,7 +608,6 @@ export default {
|
|||||||
|
|
||||||
<!-- agissante -->
|
<!-- agissante -->
|
||||||
<CheckboxEditable
|
<CheckboxEditable
|
||||||
v-if="entite && entite.can_update"
|
|
||||||
:checked="entite.agissante"
|
:checked="entite.agissante"
|
||||||
label="Entité action"
|
label="Entité action"
|
||||||
:data="{
|
:data="{
|
||||||
@ -599,8 +617,8 @@ export default {
|
|||||||
field: 'field_entite_agissante'}"
|
field: 'field_entite_agissante'}"
|
||||||
v-on:updated="reloadConcernementEntites(cid)"/>
|
v-on:updated="reloadConcernementEntites(cid)"/>
|
||||||
|
|
||||||
|
<!-- confidentialité -->
|
||||||
<SelectEditable
|
<SelectEditable
|
||||||
v-if="entite && entite.can_update"
|
|
||||||
label="Confidentialité"
|
label="Confidentialité"
|
||||||
:value="entite.confidentialite"
|
:value="entite.confidentialite"
|
||||||
:options="{
|
:options="{
|
||||||
@ -613,6 +631,7 @@ export default {
|
|||||||
nid: this.entite.id,
|
nid: this.entite.id,
|
||||||
field: 'field_confidentialite'}"
|
field: 'field_confidentialite'}"
|
||||||
v-on:updated="reloadConcernementEntites(cid)"/>
|
v-on:updated="reloadConcernementEntites(cid)"/>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@ -635,7 +654,9 @@ export default {
|
|||||||
bundle: 'concernement',
|
bundle: 'concernement',
|
||||||
id: this.concernement.id,
|
id: this.concernement.id,
|
||||||
field: {field_name: 'field_description', value:'value'}
|
field: {field_name: 'field_description', value:'value'}
|
||||||
}" />
|
}"
|
||||||
|
v-on:updating="concernementFieldIsUpdating('description')"
|
||||||
|
v-on:updated="concernementFieldUpdated('description')"/>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
<section v-if="concernement.caillou || concernement.can_update" class="caillou">
|
<section v-if="concernement.caillou || concernement.can_update" class="caillou">
|
||||||
@ -651,7 +672,9 @@ export default {
|
|||||||
bundle: 'concernement',
|
bundle: 'concernement',
|
||||||
id: this.concernement.id,
|
id: this.concernement.id,
|
||||||
field: {field_name: 'field_caillou', value:'value'}
|
field: {field_name: 'field_caillou', value:'value'}
|
||||||
}" />
|
}"
|
||||||
|
v-on:updating="concernementFieldIsUpdating('caillou')"
|
||||||
|
v-on:updated="concernementFieldUpdated('caillou')"/>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
<template v-if="concernement.can_update">
|
<template v-if="concernement.can_update">
|
||||||
@ -666,7 +689,15 @@ export default {
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- entite -->
|
<!-- entite -->
|
||||||
<Entite v-if="entite" :concernement="concernement" :entite="entite" :eid="eid" v-on:reloadEntite="loadEntite"/>
|
<Entite
|
||||||
|
v-if="entite"
|
||||||
|
:concernement="concernement"
|
||||||
|
:entite="entite"
|
||||||
|
:eid="eid"
|
||||||
|
v-on:reloadEntite="loadEntite"/>
|
||||||
|
<!-- v-on:updating="onFieldIsUpdating(cid)"
|
||||||
|
v-on:updated="onFieldUpdated(cid)" -->
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-slot:footer>
|
<template v-slot:footer>
|
||||||
|
@ -29,7 +29,7 @@ export default {
|
|||||||
default : 'Ajouter du texte'
|
default : 'Ajouter du texte'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
emits: ['updated'],
|
emits: ['updating', 'updated'],
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
editor: null,
|
editor: null,
|
||||||
@ -74,6 +74,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
save(content){
|
save(content){
|
||||||
|
this.$emit('updating');
|
||||||
// console.log('save csrf_token', this.csrf_token);
|
// console.log('save csrf_token', this.csrf_token);
|
||||||
const params = {
|
const params = {
|
||||||
type: this.data.bundle,
|
type: this.data.bundle,
|
||||||
|
@ -9,13 +9,14 @@ import { mdiHeadphones } from '@mdi/js';
|
|||||||
import ContentEditable from '@components/editable/ContentEditable.vue';
|
import ContentEditable from '@components/editable/ContentEditable.vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: ['cid'],
|
props: ['cid','eid'],
|
||||||
emits: ['main_scrolled'],
|
emits: ['main_scrolled'],
|
||||||
data(){
|
data(){
|
||||||
return {
|
return {
|
||||||
headphones_path: mdiHeadphones,
|
headphones_path: mdiHeadphones,
|
||||||
mainscrolled: false,
|
mainscrolled: false,
|
||||||
headerreduced: false,
|
headerreduced: false,
|
||||||
|
entite: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
@ -25,18 +26,18 @@ export default {
|
|||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
// console.log('cartouche layout mounted', this);
|
// console.log('cartouche layout mounted', this);
|
||||||
this.$refs.cartouche_main.addEventListener('scroll', (event) => {
|
// this.$refs.cartouche_main.addEventListener('scroll', (event) => {
|
||||||
// console.log('main is scrolling', event);
|
// console.log('main is scrolling', event);
|
||||||
let $main = event.target;
|
// let $main = event.target;
|
||||||
let scrolled = $main.scrollTop > 0;
|
// let scrolled = $main.scrollTop > 0;
|
||||||
this.$emit('main_scrolled', scrolled);
|
// this.$emit('main_scrolled', scrolled);
|
||||||
// TODO how to make this failsafe limit responsive ?
|
// // TODO how to make this failsafe limit responsive ?
|
||||||
if(scrolled && $main.scrollHeight > 900){
|
// if(scrolled && $main.scrollHeight > 900){
|
||||||
this.headerreduced = true;
|
// this.headerreduced = true;
|
||||||
} else {
|
// } else {
|
||||||
this.headerreduced = false;
|
// this.headerreduced = false;
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(ConcernementsStore,['concernementsByID', 'opened_concernement', 'ct_concernement']),
|
...mapState(ConcernementsStore,['concernementsByID', 'opened_concernement', 'ct_concernement']),
|
||||||
@ -51,10 +52,29 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
deep: true
|
deep: true
|
||||||
|
},
|
||||||
|
eid: {
|
||||||
|
handler (n, o) {
|
||||||
|
console.log(`TerrainDeVie watch eid o:${o}, n:${n}`);
|
||||||
|
if (n) {
|
||||||
|
this.entite = true;
|
||||||
|
}else{
|
||||||
|
this.entite = false;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
deep: true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
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: {
|
components: {
|
||||||
SvgIcon,
|
SvgIcon,
|
||||||
@ -66,19 +86,21 @@ export default {
|
|||||||
<template>
|
<template>
|
||||||
<header ref="cartouche_header">
|
<header ref="cartouche_header">
|
||||||
<div class="concernement-cartouche-icons">
|
<div class="concernement-cartouche-icons">
|
||||||
<label :class="{ hidden: headerreduced }">{{ ct_concernement.title.description }}</label>
|
<label class="concernement-label">{{ ct_concernement.title.description }}</label>
|
||||||
|
<!-- :class="{ hidden: headerreduced }" -->
|
||||||
<ContentEditable
|
<ContentEditable
|
||||||
tag="h2"
|
tag="h2"
|
||||||
:value="concernement.title"
|
:value="concernement.title"
|
||||||
:class="{ ellipsed: headerreduced }"
|
:class="{ ellipsed: entite }"
|
||||||
:contenteditable="concernement.can_update"
|
:contenteditable="(concernement.can_update && !entite)"
|
||||||
:data="{
|
:data="{
|
||||||
entitytype: 'node',
|
entitytype: 'node',
|
||||||
bundle: 'concernement',
|
bundle: 'concernement',
|
||||||
id: this.concernement.id,
|
id: this.concernement.id,
|
||||||
field: {field_name: 'title', value:'value'}
|
field: {field_name: 'title', value:'value'}
|
||||||
}" />
|
}"
|
||||||
|
v-on:updating="concernementFieldIsUpdating('title')"
|
||||||
|
v-on:updated="concernementFieldUpdated('title')"/>
|
||||||
|
|
||||||
|
|
||||||
<!-- <nav class="icons">
|
<!-- <nav class="icons">
|
||||||
|
@ -37,7 +37,8 @@ Sentry.init({
|
|||||||
tracesSampleRate: 0.01,
|
tracesSampleRate: 0.01,
|
||||||
normalizeDepth: 10, // Or however deep you want your state context to be.
|
normalizeDepth: 10, // Or however deep you want your state context to be.
|
||||||
environment: "prod",
|
environment: "prod",
|
||||||
release : '1'
|
// release : '1'
|
||||||
|
release: __SENTRY_RELEASE__
|
||||||
});
|
});
|
||||||
|
|
||||||
const pinia = createPinia()
|
const pinia = createPinia()
|
||||||
|
@ -50,6 +50,7 @@ export const ConcernementsStore = defineStore({
|
|||||||
concernements_are_loading: false,
|
concernements_are_loading: false,
|
||||||
concernement_active_revision: null,
|
concernement_active_revision: null,
|
||||||
detailsZoomValue: 1,
|
detailsZoomValue: 1,
|
||||||
|
concernement_is_updating_nid: null
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
|
|
||||||
@ -309,6 +310,9 @@ export const ConcernementsStore = defineStore({
|
|||||||
// console.log(`end of parsing concernements`);
|
// console.log(`end of parsing concernements`);
|
||||||
|
|
||||||
},
|
},
|
||||||
|
setConcernementIsUpdating(nid){
|
||||||
|
this.concernement_is_updating_nid = nid;
|
||||||
|
},
|
||||||
reloadConcernements () {
|
reloadConcernements () {
|
||||||
console.log('reloadConcernements');
|
console.log('reloadConcernements');
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
@ -429,9 +433,36 @@ export const ConcernementsStore = defineStore({
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
reloadConcernementField(nid, field){
|
||||||
|
console.log('reloadConcernementField', nid, field);
|
||||||
|
// let tmp_conc = this.concernementsByID[nid];
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const ast = gql`{
|
||||||
|
concernement(id:${nid}) {
|
||||||
|
id
|
||||||
|
${field}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
GQL.post('', { query: print(ast) })
|
||||||
|
.then(({ data : { data : { concernement } } }) => {
|
||||||
|
console.log(`reloadConcernementField loaded ${field}`, concernement)
|
||||||
|
let tmp_conc = this.concernementsByID[concernement.id];
|
||||||
|
// merge old concernement besoins with new once
|
||||||
|
_merge(tmp_conc, concernement);
|
||||||
|
|
||||||
|
resolve(concernement);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.warn('Issue with reloadConcernementField', error)
|
||||||
|
reject(error);
|
||||||
|
Promise.reject(error)
|
||||||
|
})
|
||||||
|
});
|
||||||
|
},
|
||||||
reloadConcernementBesoins(nid){
|
reloadConcernementBesoins(nid){
|
||||||
let tmp_conc = this.concernementsByID[nid];
|
let tmp_conc = this.concernementsByID[nid];
|
||||||
console.log(`reloadConcernementEntites len: ${tmp_conc.entites.length} revision: ${tmp_conc.revision_id} nid: ${nid}`);
|
// console.log(`reloadConcernementBesoins len: ${tmp_conc.entites.length} revision: ${tmp_conc.revision_id} nid: ${nid}`);
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const ast = gql`{
|
const ast = gql`{
|
||||||
concernement(id:${nid}) {
|
concernement(id:${nid}) {
|
||||||
|
@ -40,7 +40,8 @@ export default {
|
|||||||
...mapState(ConcernementsStore,['map_mode',
|
...mapState(ConcernementsStore,['map_mode',
|
||||||
'opened_concernement',
|
'opened_concernement',
|
||||||
'concernements_loaded',
|
'concernements_loaded',
|
||||||
'allSuperpositions_clustered']),
|
'allSuperpositions_clustered',
|
||||||
|
'concernement_is_updating_nid']),
|
||||||
...mapState(CommonStore,['cartouch_width']),
|
...mapState(CommonStore,['cartouch_width']),
|
||||||
//
|
//
|
||||||
main_cid_eid () {
|
main_cid_eid () {
|
||||||
@ -203,7 +204,20 @@ export default {
|
|||||||
|
|
||||||
},
|
},
|
||||||
closeConcernement(){
|
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.resetConcernementOpened();
|
||||||
|
} else {
|
||||||
|
this.waitForUpdatingEnded();
|
||||||
|
}
|
||||||
|
}, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
@ -216,7 +230,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section v-if="opened_concernement" class="concernement">
|
<section v-if="opened_concernement" class="concernement" :class="{ 'entity-opened': main_cid_eid.eid }">
|
||||||
<TerrainDeVie v-if="map_mode === 'terraindevie' || map_mode === 'action' || map_mode === 'superposition' || map_mode === 'proximite'" :cid="main_cid_eid.cid" :eid="main_cid_eid.eid"/>
|
<TerrainDeVie v-if="map_mode === 'terraindevie' || map_mode === 'action' || map_mode === 'superposition' || map_mode === 'proximite'" :cid="main_cid_eid.cid" :eid="main_cid_eid.eid"/>
|
||||||
<PuissanceAgir v-if="map_mode === 'puissancedagir'" :cid="cid"/>
|
<PuissanceAgir v-if="map_mode === 'puissancedagir'" :cid="cid"/>
|
||||||
<Doleancer v-if="map_mode === 'doleancer'" :cid="cid"/>
|
<Doleancer v-if="map_mode === 'doleancer'" :cid="cid"/>
|
||||||
|
@ -6,9 +6,21 @@ import graphql from '@rollup/plugin-graphql';
|
|||||||
import { viteRequire } from 'vite-require'
|
import { viteRequire } from 'vite-require'
|
||||||
import svgLoader from 'vite-svg-loader'
|
import svgLoader from 'vite-svg-loader'
|
||||||
import { sentryVitePlugin } from "@sentry/vite-plugin";
|
import { sentryVitePlugin } from "@sentry/vite-plugin";
|
||||||
|
import { execSync } from 'child_process'
|
||||||
|
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
|
||||||
|
// Get short Git commit hash
|
||||||
|
function getGitCommitHash() {
|
||||||
|
try {
|
||||||
|
return execSync('git rev-parse --short HEAD').toString().trim()
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Could not retrieve Git commit hash')
|
||||||
|
return 'unknown'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const release = `ouatterrir@${getGitCommitHash()}`
|
||||||
|
|
||||||
// https://vitejs.dev/config/
|
// https://vitejs.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [vue({
|
plugins: [vue({
|
||||||
@ -22,7 +34,10 @@ export default defineConfig({
|
|||||||
org: "figures-libres",
|
org: "figures-libres",
|
||||||
project: "atlas-atterrissage.com",
|
project: "atlas-atterrissage.com",
|
||||||
authToken: process.env.AUTH_TOKEN,
|
authToken: process.env.AUTH_TOKEN,
|
||||||
release: "ouatterrir",
|
release: {
|
||||||
|
// name: "ouatterrir",
|
||||||
|
name: release
|
||||||
|
},
|
||||||
url: "https://frontlog.figli.io",
|
url: "https://frontlog.figli.io",
|
||||||
})
|
})
|
||||||
],
|
],
|
||||||
@ -56,4 +71,7 @@ export default defineConfig({
|
|||||||
esbuild: {
|
esbuild: {
|
||||||
drop: ['console', 'debugger'],
|
drop: ['console', 'debugger'],
|
||||||
},
|
},
|
||||||
|
define: {
|
||||||
|
__SENTRY_RELEASE__: JSON.stringify(release),
|
||||||
|
}
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user