diff --git a/src/assets/main.scss b/src/assets/main.scss
index c3fb230..8442585 100644
--- a/src/assets/main.scss
+++ b/src/assets/main.scss
@@ -10,6 +10,7 @@
body{
background-color: $back;
font-family: 'public_sans';
+ font-weight: 400;
}
#app{
@@ -74,7 +75,7 @@ body{
section.concernement{
background-color: rgba(255, 255, 255, 0.9);
box-sizing: border-box;
- width:30em;
+ width:450px;
height: 100%;
padding: 1rem;
}
@@ -88,6 +89,7 @@ body{
padding: 1em;
h1{
font-size: 1em;
+ font-weight: 400;
}
}
}
diff --git a/src/components/ConcernementMapItem.vue b/src/components/ConcernementMapItem.vue
index 61e3c52..56e6861 100644
--- a/src/components/ConcernementMapItem.vue
+++ b/src/components/ConcernementMapItem.vue
@@ -219,9 +219,13 @@ export default {
this.tween.stop();
}
if (open) {
- // opening
+ // opening tweening
this.tween = new Tween.Tween({s: this.scale, x: this.pos.x, y: this.pos.y})
- .to({s: 5,x: 500, y: 500}, 800)
+ .to({
+ s: 7,
+ x: (this.canvas.width - 450) / 2,
+ y: this.canvas.height / 2
+ }, 800)
.onUpdate((obj) => {
// https://github.com/liabru/matter-js/issues/986#issuecomment-812488873
// revert to the original size (by reverting the previous scale)
@@ -279,47 +283,90 @@ export default {
// }
this.pos = this.body.position;
-
- // exterieur circle
- this.ctx.beginPath();
- this.ctx.lineWidth = 0.5;
- this.ctx.strokeStyle = this.concernement.opened ? "#ff0000" : "#888";
- this.ctx.arc(this.pos.x, this.pos.y, this.ray*this.scale, 0, 2 * Math.PI, false);
- this.ctx.stroke();
+
+ if (this.opened) {
+ // BOUSSOLE
+ // exterieur circle
+ this.ctx.beginPath();
+ this.ctx.lineWidth = 2;
+ this.ctx.strokeStyle = "#fff";
+ this.ctx.arc(this.pos.x, this.pos.y, this.ray*this.scale, 0, 2 * Math.PI, false);
+ // this.ctx.stroke();
- // interieur circle
- this.ctx.beginPath();
- this.ctx.lineWidth = 0.5;
- this.ctx.strokeStyle = "#888";
- this.ctx.arc(this.pos.x, this.pos.y, this.ray/2*this.scale, 0, 2 * Math.PI, false);
- this.ctx.stroke();
+ // interieur circle
+ this.ctx.arc(this.pos.x, this.pos.y, this.ray/2*this.scale, 0, 2 * Math.PI, false);
+ // this.ctx.stroke();
+
+ // axes
+ // vertical
+ this.ctx.moveTo(this.pos.x, this.pos.y - this.ray*this.scale);
+ this.ctx.lineTo(this.pos.x, this.pos.y + this.ray*this.scale);
+ // horizontal
+ this.ctx.moveTo(this.pos.x - this.ray*this.scale, this.pos.y);
+ this.ctx.lineTo(this.pos.x + this.ray*this.scale, this.pos.y);
+ // this.ctx.stroke();
+
+ // fleches
+ // haute
+ this.ctx.moveTo(this.pos.x - (8*this.scale), this.pos.y - this.ray*this.scale + (8*this.scale));
+ this.ctx.lineTo(this.pos.x, this.pos.y - this.ray*this.scale);
+ this.ctx.lineTo(this.pos.x + (8*this.scale), this.pos.y - this.ray*this.scale + (8*this.scale));
+ // milieu
+ this.ctx.moveTo(this.pos.x - (8*this.scale), this.pos.y + (8*this.scale));
+ this.ctx.lineTo(this.pos.x, this.pos.y);
+ this.ctx.lineTo(this.pos.x + (8*this.scale), this.pos.y + (8*this.scale));
+
+ this.ctx.stroke();
+
+ // MOINS - PLUS
+ this.ctx.beginPath();
+ this.ctx.lineWidth = 8;
+ this.ctx.strokeStyle = "#fff";
+ // PLUS
+ // horizontal
+ this.ctx.moveTo(this.pos.x + this.ray*this.scale - (5 * this.scale), this.pos.y - this.ray*this.scale);
+ this.ctx.lineTo(this.pos.x + this.ray*this.scale + (5 * this.scale), this.pos.y - this.ray*this.scale);
+ // vertical
+ this.ctx.moveTo(this.pos.x + this.ray*this.scale, this.pos.y - this.ray*this.scale - (5 * this.scale));
+ this.ctx.lineTo(this.pos.x + this.ray*this.scale, this.pos.y - this.ray*this.scale + (5 * this.scale));
+
+ // MOINS
+ // horizontal
+ this.ctx.moveTo(this.pos.x - this.ray*this.scale - (5 * this.scale), this.pos.y - this.ray*this.scale);
+ this.ctx.lineTo(this.pos.x - this.ray*this.scale + (5 * this.scale), this.pos.y - this.ray*this.scale);
+ // vertical
+
+ this.ctx.stroke();
+ }
// contours
if (this.salientPoints.length > 3) {
+
this.ctx.beginPath();
this.ctx.lineWidth = 1;
this.ctx.strokeStyle = "#000";
this.ctx.fillStyle = "rgba(255,255,255,0.4)";
- this.ctx.moveTo(this.pos.x+this.salientPoints[0].pos.x*this.scale, this.pos.y+this.salientPoints[0].pos.y*this.scale)
+ this.ctx.moveTo(this.pos.x+this.salientPoints[0].pos.x*this.scale*1.15, this.pos.y+this.salientPoints[0].pos.y*this.scale*1.15)
for (let j = 1; j < this.salientPoints.length; j++) {
- this.ctx.lineTo(this.pos.x+this.salientPoints[j].pos.x*this.scale, this.pos.y+this.salientPoints[j].pos.y*this.scale)
+ this.ctx.lineTo(this.pos.x+this.salientPoints[j].pos.x*this.scale*1.15, this.pos.y+this.salientPoints[j].pos.y*this.scale*1.15)
}
- this.ctx.lineTo(this.pos.x+this.salientPoints[0].pos.x*this.scale, this.pos.y+this.salientPoints[0].pos.y*this.scale)
+ this.ctx.lineTo(this.pos.x+this.salientPoints[0].pos.x*this.scale*1.15, this.pos.y+this.salientPoints[0].pos.y*this.scale*1.15)
this.ctx.fill();
this.ctx.stroke();
}
- // place all entities points
- for (let i = 0; i < this.entites.length; i++) {
- let entite = this.entites[i];
- // console.log('entite', entite);
- this.ctx.beginPath();
- this.ctx.arc(this.pos.x+entite.display.pos.x*this.scale, this.pos.y+entite.display.pos.y*this.scale, 2, 0, 2 * Math.PI, false);
- this.ctx.fillStyle = "#F00";
- this.ctx.fill();
+ if (this.opened) {
+ // place all entities points
+ for (let i = 0; i < this.entites.length; i++) {
+ let entite = this.entites[i];
+ // console.log('entite', entite);
+ this.ctx.beginPath();
+ this.ctx.arc(this.pos.x+entite.display.pos.x*this.scale, this.pos.y+entite.display.pos.y*this.scale, 2, 0, 2 * Math.PI, false);
+ this.ctx.fillStyle = "#000";
+ this.ctx.fill();
+ }
}
-
// concernement id @center
this.ctx.beginPath();
// this.ctx.arc(this.pos.x, this.pos.y, 4, 0, 2 * Math.PI, false);
diff --git a/src/components/ConcernementMapPopup.vue b/src/components/ConcernementMapPopup.vue
new file mode 100644
index 0000000..505ff61
--- /dev/null
+++ b/src/components/ConcernementMapPopup.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
diff --git a/src/components/MapConcernements.vue b/src/components/MapConcernements.vue
index 6a70936..7124266 100644
--- a/src/components/MapConcernements.vue
+++ b/src/components/MapConcernements.vue
@@ -30,6 +30,8 @@ Matter.use(MatterAttractors);
import { mapState, mapActions } from 'pinia'
import { ConcernementsStore } from '@/stores/concernements'
+import ConcernementMapPopup from '@components/ConcernementMapPopup.vue';
+
export default {
data() {
return {
@@ -43,7 +45,8 @@ export default {
engine: null,
world: null,
// render: null,
- mouse: null
+ mouse: null,
+ concernementpopupid: null
}
},
provide() {
@@ -55,7 +58,8 @@ export default {
}
},
computed: {
- ...mapState(ConcernementsStore,['concernements'])
+ ...mapState(ConcernementsStore,['concernements']),
+ ...mapState(ConcernementsStore,['concernementsByID'])
},
created() {
// MATTER
@@ -91,6 +95,7 @@ export default {
// add mouse control
// https://github.com/liabru/matter-js/issues/491#issuecomment-331329404
this.mouse = Matter.Mouse.create(this.canvasMap.canvas);
+ this.canvasMap.canvas.addEventListener('mousemove', this.onMouseMove)
this.canvasMap.canvas.addEventListener('click', this.onClick)
this.animate()
@@ -103,6 +108,20 @@ export default {
Matter.Engine.update(this.engine, 1)
window.requestAnimationFrame(this.animate);
},
+ onMouseMove (e) {
+ // check concernement item mouse over
+ const query = Matter.Query.point(Matter.Composite.allBodies(this.world), this.mouse.position)
+ // console.log('mousemove query', query);
+ if (query.length) {
+ if (typeof this.concernementsByID[query[0].id] !== "undefined" && !this.concernementsByID[query[0].id].opened) {
+ this.concernementpopupid = query[0].id;
+ } else {
+ this.concernementpopupid = null;
+ }
+ }else{
+ this.concernementpopupid = null;
+ }
+ },
onClick (e) {
console.log('onClick', this, e);
// get the clicked element from matter
@@ -114,15 +133,21 @@ export default {
// console.log('body id:', elmt.id);
clickedIDs.push(elmt.id);
});
+ // open/close all concernements
this.concernements.forEach((concernement, index) => {
this.openCloseConcernement(concernement.id, clickedIDs.indexOf(concernement.id) !== -1)
});
+ // if no concernement opened retrun to home (closing concernement contents opened)
+ if (!clickedIDs.length) {
+ this.$router.push({name: 'home'});
+ }
}
},
beforeUpdate () {
},
components: {
- MapBackground
+ MapBackground,
+ ConcernementMapPopup
}
}
@@ -161,6 +186,10 @@ export default {
+