123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- <script>
- import { mapActions, mapState } from 'pinia'
- import { ConcernementsStore } from '@stores/concernements'
- import { CommonStore } from '@/stores/common'
- import { print } from 'graphql/language/printer'
- import gql from 'graphql-tag'
- import GQL from '@api/graphql-axios'
- import EntiteFields from '@api/gql/entite.fragment.gql'
- import SvgIcon from '@jamescoyle/vue-icon';
- import { mdiArrowUp } from '@mdi/js';
- import TerrainDeVie from '@components/contents/TerrainDeVie.vue';
- import PuissanceAgir from '@components/contents/PuissanceAgir.vue';
- import Doleancer from '@components/contents/Doleancer.vue';
- export default {
- props: ['cid', 'eid'],
- data(){
- return {
- entite: null,
- opened_besoin_id: null,
- arrowup_path: mdiArrowUp
- }
- },
- computed: {
- ...mapState(ConcernementsStore,['map_mode',
- 'opened_concernement',
- 'concernements_loaded',
- 'allSuperpositions_byid']),
- // ...mapState(CommonStore,['hover_elmt']),
- superposition_id () {
- console.log('superposition_id computed');
- if(this.$route.query.superposition_id){
- return this.$route.query.superposition_id
- } else {
- return null;
- }
- },
- superposition () {
- console.log('superposition computed', this.superposition_id);
- if(this.superposition_id){
- let sid = this.$route.query.superposition_id;
- let ids = sid.match(/(\d+)_(\d+)__(\d+)_(\d+)/i)
- let couple_key = `${ids[1]}-${ids[3]}`
- console.log('superposition_id', sid, couple_key, ids);
- if (this.allSuperpositions_byid[couple_key][sid]) {
- let s = this.allSuperpositions_byid[couple_key][sid]
- console.log(s);
- return s;
- }else{
- return null;
- }
- } else {
- return null;
- }
- },
- superposed_cid_eid () {
- if (this.superposition) {
- let r = null;
- this.superposition.forEach(s => {
- if(s.cid !== this.opened_concernement.id){
- r = {
- cid: s.cid,
- eid: s.eid
- }
- }
- });
- console.log('superposed_cid_eid', r);
- return r;
- } else {
- return null
- }
-
- }
- },
- created () {
- console.log(`Concernement view created, id: ${this.cid}, eid: ${this.eid}, opened_concernement:${this.opened_concernement}`);
- console.log('Concernement view created, allSuperpositions_byid', this.allSuperpositions_byid);
- console.log("superposition", this.superposition);
- // when we arrived directly to the url, load the entite
- // this.eid provided by route params
- if (!this.entity && this.eid) {
- this.openEntity();
- }
- },
- watch: {
- concernements_loaded: {
- handler (n, o){
- // console.log(`watch concernements_loaded n: ${n}, opened_concernement:${this.opened_concernement}, id:${this.id}`);
- // when we arrived directly to the url then all concernement are loaded: do open the concernement
- if (!this.opened_concernement) {
- this.openCloseConcernements(parseInt(this.cid))
- }
- },
- deep: true
- },
- eid: {
- handler (n, o){
- if(n){
- this.openEntity()
- }else{
- this.entite = false;
- this.setOpenedEntityId(null);
- }
- },
- deep: true
- }
- },
- methods: {
- ...mapActions(ConcernementsStore,['openCloseConcernements',
- 'setOpenedEntityId',
- 'setMapMode',
- 'resetConcernementOpened']),
- openEntity(){
- this.setOpenedEntityId(parseInt(this.eid))
- this.loadEntite()
- },
- loadEntite(){
- const ast = gql`{
- entite (id: ${this.eid}) {
- ...EntiteFields
- }
- }
- ${EntiteFields}
- `
- console.log('ast', ast);
- GQL.post('', { query: print(ast) })
- .then(({data: { data: { entite }}}) => {
- console.log('load entite loaded', entite)
- this.entite = entite
- })
- .catch(error => {
- console.warn('Issue with load entite', error)
- })
- },
- closeConcernement(){
- this.resetConcernementOpened();
- }
- },
- components: {
- TerrainDeVie,
- PuissanceAgir,
- Doleancer,
- SvgIcon
- }
- }
- </script>
- <template>
- <section v-if="opened_concernement" class="concernement">
- <TerrainDeVie v-if="map_mode === 'terraindevie' || map_mode === 'action'|| map_mode === 'superposition'" :cid="cid" :eid="eid" :entite="entite"/>
- <PuissanceAgir v-if="map_mode === 'puissancedagir'" :id="cid"/>
- <Doleancer v-if="map_mode === 'doleancer'" :id="cid"/>
- </section>
- <section v-if="map_mode === 'superposition' && superposition" class="concernement clone">
- <TerrainDeVie :cid="superposed_cid_eid.cid" :eid="superposed_cid_eid.eid" />
- </section>
- <nav class="close-concernement" @click="closeConcernement">
- <svg class="close-btn" viewbox="0 0 24 24" width="24" height="24" style="--sx: 1; --sy: 1; --r: 0deg;">
- <mask id="arrowMask">
- <rect x="0" y="0" width="24" height="24" fill="white"/>
- <path :d="arrowup_path" fill="black"/>
- </mask>
- <circle cx="12" cy="12" r="12" mask="url(#arrowMask)" fill="white" />
- </svg>
- </nav>
- </template>
- <style lang="scss" scoped>
- nav.close-concernement{
- position: absolute;
- top:65px;
- left: -30px;
- cursor: pointer;
- }
- </style>
|