started to open concernement on map click

This commit is contained in:
Bachir Soussi Chiadmi 2023-04-05 22:02:19 +02:00
parent 4a7f9282b5
commit d88914c679
11 changed files with 86 additions and 15 deletions

View File

@ -44,7 +44,7 @@ export default {
<h1> <h1>
<router-link :to="{ name: 'home' }"> atterrir</router-link> <router-link :to="{ name: 'home' }"> atterrir</router-link>
</h1> </h1>
<!-- <StaticMenu/> --> <StaticMenu/>
<UserBlock/> <UserBlock/>
</div> </div>
</header> </header>
@ -58,7 +58,7 @@ export default {
:opened="concernement.opened" :opened="concernement.opened"
/> />
</MapConcernements> </MapConcernements>
<div id="content" class="row"> <div id="content">
<RouterView /> <RouterView />
</div> </div>
</div> </div>

View File

@ -1,6 +1,7 @@
fragment ConcernementFields on Concernement { fragment ConcernementFields on Concernement {
id id
texte description
caillou
title title
recit { recit {
file { file {

View File

@ -1,6 +1,8 @@
@use "sass:math";
$pad_btn: 0.5em; $pad_btn: 0.5em;
@mixin btn() { @mixin btn() {
padding: $pad_btn/2 $pad_btn; padding: math.div($pad_btn,2) $pad_btn;
border-radius: 5px; border-radius: 5px;
background-color: $btns_back; background-color: $btns_back;
cursor: pointer; cursor: pointer;

View File

@ -85,14 +85,16 @@ html,body{
} }
} }
>.row{ // >.row{
@include layout-row(); // @include layout-row();
} // }
#content{ #content{
box-sizing: border-box;
position: absolute; position: absolute;
top:0; right:0; top:0; right:0;
height:100vh; height:100vh;
padding: 0.5rem;
} }
} }

View File

@ -69,6 +69,12 @@ body{
} }
#content{ #content{
section.concernement{
background-color: rgba(255, 255, 255, 0.9);
box-sizing: border-box;
width:30em;
height: 100%;
padding: 1rem;
}
} }
} }

View File

@ -79,13 +79,13 @@ export default {
let canvas_h = this.canvasMap.canvas.height = this.canvasMap.canvas.parentElement.clientHeight; let canvas_h = this.canvasMap.canvas.height = this.canvasMap.canvas.parentElement.clientHeight;
// MATTER // MATTER
let wall_w = 5; let wall_w = 100;
Matter.Composite.add(this.world, [ Matter.Composite.add(this.world, [
// walls // walls
Matter.Bodies.rectangle(canvas_w/2, 0, canvas_w, wall_w, { isStatic: true }), // top Matter.Bodies.rectangle(canvas_w/2, -wall_w/2, canvas_w, wall_w, { isStatic: true }), // top
Matter.Bodies.rectangle(canvas_w/2, canvas_h-wall_w, canvas_w, wall_w, { isStatic: true }), // bottom Matter.Bodies.rectangle(canvas_w/2, canvas_h+wall_w/2, canvas_w, wall_w, { isStatic: true }), // bottom
Matter.Bodies.rectangle(0, canvas_h/2, wall_w, canvas_h, { isStatic: true }), // left Matter.Bodies.rectangle(-wall_w/2, canvas_h/2, wall_w, canvas_h, { isStatic: true }), // left
Matter.Bodies.rectangle(canvas_w-wall_w, canvas_h/2, wall_w, canvas_h, { isStatic: true }) // right Matter.Bodies.rectangle(canvas_w+wall_w/2, canvas_h/2, wall_w, canvas_h, { isStatic: true }) // right
]); ]);
// add mouse control // add mouse control

View File

@ -12,6 +12,8 @@ const app = createApp(App)
// https://vuejs.org/guide/components/provide-inject.html#provide // https://vuejs.org/guide/components/provide-inject.html#provide
app.config.unwrapInjectedRef = true; app.config.unwrapInjectedRef = true;
app.use(createPinia()) const pinia = createPinia()
pinia.use( ({store}) => { store.router = router } )
app.use(pinia)
app.use(router) app.use(router)
app.mount('#app') app.mount('#app')

View File

@ -1,6 +1,7 @@
import { createRouter, createWebHistory } from 'vue-router' import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '@views/Home.vue' import HomeView from '@views/Home.vue'
import StaticView from '@views/Static.vue' // import StaticView from '@views/Static.vue'
// import ConcernementView from '@views/Concernement.vue'
const router = createRouter({ const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), history: createWebHistory(import.meta.env.BASE_URL),
@ -18,6 +19,16 @@ const router = createRouter({
// which is lazy-loaded when the route is visited. // which is lazy-loaded when the route is visited.
component: () => import('../views/Static.vue'), component: () => import('../views/Static.vue'),
props: true props: true
},
{
path: '/concernement/:id',
name: 'concernement',
// component: ConcernementView,
// route level code-splitting
// this generates a separate chunk (About.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () => import('../views/Concernement.vue'),
props: true
} }
] ]
}) })

View File

@ -2,6 +2,8 @@ import { defineStore } from 'pinia'
import { print } from 'graphql/language/printer' import { print } from 'graphql/language/printer'
import gql from 'graphql-tag' import gql from 'graphql-tag'
// import REST from '@api/rest-axios' // import REST from '@api/rest-axios'
import GQL from '@api/graphql-axios' import GQL from '@api/graphql-axios'
// import JSONAPI from '@api/json-axios' // import JSONAPI from '@api/json-axios'
@ -47,6 +49,10 @@ export const ConcernementsStore = defineStore({
openCloseConcernement (id, state) { openCloseConcernement (id, state) {
// console.log('openCloseConcernement', id, state); // console.log('openCloseConcernement', id, state);
this.concernementsByID[id].opened = state; this.concernementsByID[id].opened = state;
if (state) {
this.opened = this.concernementsByID[id];
this.router.push({name: 'concernement', params: {id: id}});
}
} }
} }
}) })

View File

@ -0,0 +1,40 @@
<script>
import { mapActions, mapState } from 'pinia'
import { ConcernementsStore } from '@stores/concernements'
export default {
props: ['id'],
// data(){
// return {
// block: null
// }
// },
computed: {
...mapState(ConcernementsStore,['opened'])
},
created () {
// console.log("Concernement view created, id", this.opened.id);
// this.loadStatics()
},
methods: {
// ...mapActions(StaticsStore,['loadStatics'])
},
components: {
}
}
</script>
<template>
<section class="concernement">
<h2>{{ opened.title }}</h2>
<div v-html="opened.description"/>
<div v-html="opened.caillou"/>
</section>
</template>
<style lang="scss" scoped>
</style>

View File

@ -10,6 +10,7 @@ export default defineConfig({
resolve: { resolve: {
alias: { alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)), '@': fileURLToPath(new URL('./src', import.meta.url)),
'@stores': fileURLToPath(new URL('./src/stores', import.meta.url)),
'@components': fileURLToPath(new URL('./src/components', import.meta.url)), '@components': fileURLToPath(new URL('./src/components', import.meta.url)),
'@views': fileURLToPath(new URL('./src/views', import.meta.url)), '@views': fileURLToPath(new URL('./src/views', import.meta.url)),
'@api': fileURLToPath(new URL('./src/api', import.meta.url)) '@api': fileURLToPath(new URL('./src/api', import.meta.url))