display entites lable on détails zoom

This commit is contained in:
Bachir Soussi Chiadmi 2024-02-07 20:28:54 +01:00
parent f53e08a005
commit 496981832d
3 changed files with 69 additions and 8 deletions

View File

@ -51,6 +51,7 @@ fragment ConcernementFields on Concernement {
actuelfuture actuelfuture
entite { entite {
id id
title
agissante agissante
proximite { proximite {
id id

View File

@ -716,11 +716,22 @@ export default {
// then scale again to new size // then scale again to new size
this.paper_main_object.scale(this.details_zoom_scale); this.paper_main_object.scale(this.details_zoom_scale);
// resize entites (dim them while we zoomin) // resize entites (dim them while we zoomin)
this.paper_main_object.children['entites'].children.forEach((entite) => { this.paper_main_object.children['entites'].children.forEach((child) => {
// revert to the original size (by reverting the previous scale) if(child.name === 'entite'){
entite.scale(1 / prev_entite_s); // revert to the original size (by reverting the previous scale)
// then scale again to new size child.scale(1 / prev_entite_s);
entite.scale(1 / this.details_zoom_scale); // then scale again to new size
child.scale(1 / this.details_zoom_scale);
}else if(child.name === 'entites_labels'){
child.opacity = -2 + this.detailsZoomValue;
child.children.forEach((label) => {
// revert to the original size (by reverting the previous scale)
label.scale(1 / prev_entite_s);
// then scale again to new size
label.scale(1 / this.details_zoom_scale);
// label.children['label_txt'].fontSize = 4 / this.detailsZoomValue;
})
}
}); });
// allow to go through walls if zoomed in // allow to go through walls if zoomed in
@ -912,6 +923,13 @@ export default {
pivot: new paper.Point(this.pos), pivot: new paper.Point(this.pos),
name: 'entites' name: 'entites'
}); });
let g_label = new paper.Group({
pivot: new paper.Point(this.pos),
name: 'entites_labels',
opacity: 0
});
g.addChild(g_label);
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.concernement.active_revision].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]; let entite = this.concernement.revisions_byid[this.concernement.active_revision].entites[i];
@ -937,13 +955,51 @@ export default {
let instance = new paper.SymbolItem(this.paper_symbol_definitions[symbol_name]); let instance = new paper.SymbolItem(this.paper_symbol_definitions[symbol_name]);
instance.name = 'entite'; instance.name = 'entite';
instance.position = new paper.Point([this.pos.x + entite.display.pos.x * this.scale, this.pos.y + entite.display.pos.y * this.scale]); let pos_point = new paper.Point([this.pos.x + entite.display.pos.x * this.scale, this.pos.y + entite.display.pos.y * this.scale]);
instance.position = pos_point;
instance.scale(this.scale); instance.scale(this.scale);
instance.fillColor = '#000'; instance.fillColor = '#000';
instance.item_id = entite.entite ? entite.entite.id : null; instance.item_id = entite.entite ? entite.entite.id : null;
instance.item_type = item_type; instance.item_type = item_type;
instance.is_symbol_instance = true; instance.is_symbol_instance = true;
g.addChild(instance) g.addChild(instance);
// instance.bringToFront();
if (entite.entite && entite.entite.title) {
let pad = 2;
let label_pos = new paper.Point({
x: pos_point.x + pad,
y: pos_point.y - pad*2
});
let label = new paper.Group({
pivot: pos_point,
name: 'label',
});
let title = entite.entite.title;
title = (title.length > 25) ? title.slice(0, 25 - 1) + '…' : title;
let label_txt = new paper.PointText({
pivot: pos_point,
point: label_pos,
content: title,
fillColor: 'black',
fontFamily: 'public_sans',
fontSize: 4,
justification: 'left',
name: 'label_txt'
})
let b = label_txt.bounds;
let label_bg = new paper.Path.Rectangle(b.x - pad, b.y - pad, b.width + pad*2, b.height + pad*2);
label_bg.fillColor = '#fff';
label_bg.opacity = 0.9;
label_bg.name = 'label_bg';
label.addChild(label_bg);
label_txt.insertAbove(label_bg)
// label.sendToBack();
g_label.addChild(label);
}
} }
return g; return g;
}, },
@ -2017,6 +2073,10 @@ export default {
} else { } else {
document.body.style.cursor = "auto"; document.body.style.cursor = "auto";
} }
if (result && (result.item.name === 'label_txt' || result.item.name === 'label_bg')) {
result.item.parent.bringToFront();
}
} }
} }
}.bind(this); }.bind(this);

View File

@ -265,7 +265,7 @@ export default {
></vue-slider> ></vue-slider>
</section> </section>
<section class="details" v-if="details_slider_ops && map_mode === 'terraindevie'"> <section class="details" v-if="details_slider_ops && map_mode === 'terraindevie'">
<label>Details</label> <label>Détails</label>
<!-- <h3>{{ details_value }}</h3> --> <!-- <h3>{{ details_value }}</h3> -->
<vue-slider <vue-slider
ref="details_slider" ref="details_slider"