update Kit view to work with url params

This commit is contained in:
axolotle
2021-07-09 14:35:59 +02:00
parent 3accfb5b66
commit 16a1db76fb
4 changed files with 73 additions and 11 deletions
+13 -2
View File
@@ -1,5 +1,9 @@
<template> <template>
<b-overlay :show="filteredNodes === undefined" class="kit-list" z-index="0"> <b-overlay
:show="filteredNodes === undefined"
class="kit-list"
z-index="0" spinner-variant="kit"
>
<div class="kit-list-wrapper"> <div class="kit-list-wrapper">
<header class="kit-list-header"> <header class="kit-list-header">
<div class="kit-list-header-intro" v-html="intro" /> <div class="kit-list-header-intro" v-html="intro" />
@@ -12,7 +16,7 @@
v-for="node in filteredNodes" :key="'kit-' + node.id" v-for="node in filteredNodes" :key="'kit-' + node.id"
:node="node" :node="node"
mode="card" mode="card"
@click.native.capture="$emit('open-node', node.id)" @click.native.capture="openNode(node.id)"
/> />
</div> </div>
</div> </div>
@@ -55,7 +59,14 @@ export default {
} }
}, },
methods: {
openNode (id) {
this.$store.dispatch('OPEN_KIT_NODE', id)
}
},
async created () { async created () {
this.$store.dispatch('INIT_KIT')
this.$store.dispatch('QUERY_PAGE', 'kit').then(page => { this.$store.dispatch('QUERY_PAGE', 'kit').then(page => {
this.intro = page.content this.intro = page.content
}) })
+34 -4
View File
@@ -1,16 +1,25 @@
<template> <template>
<div class="kit-view"> <div class="kit-view bg-kit">
<node-view <node-view
v-if="sheet"
:node="sheet" :node="sheet"
mode="view" mode="view"
show-origin show-origin
@close-node="$emit('close-node', $event)" @close-node="closeNode()"
@open-node="$emit('open-node', $event)" @open-node="openLibrary"
/>
<b-overlay
:show="!sheet"
spinner-variant="light"
no-wrap
/> />
</div> </div>
</template> </template>
<script> <script>
import { mapGetters } from 'vuex'
import { NodeView } from '@/components/nodes' import { NodeView } from '@/components/nodes'
@@ -22,13 +31,34 @@ export default {
}, },
props: { props: {
sheet: { type: Object, default: undefined } id: { type: [Number, String], default: undefined }
},
computed: {
...mapGetters(['sheet'])
},
methods: {
closeNode () {
this.$store.dispatch('CLOSE_KIT_NODE')
},
openLibrary (ids) {
this.$store.dispatch('OPEN_NODE', ids)
}
},
created () {
this.$store.dispatch('INIT_KIT_VIEW', parseInt(this.id))
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.kit-view { .kit-view {
height: 100%;
width: 100%;
.node-view { .node-view {
min-height: 100%; min-height: 100%;
&-header-wrapper, &-header-wrapper,
+8 -1
View File
@@ -32,10 +32,17 @@ export default [
} }
}, },
{
name: 'kit-view',
path: '/kit/:id',
props: true,
component: () => import(/* webpackChunkName: "kit" */ '@/pages/kit/KitView')
},
{ {
name: 'kit', name: 'kit',
path: '/kit', path: '/kit',
component: () => import(/* webpackChunkName: "kit" */ '@/pages/Kit') component: () => import(/* webpackChunkName: "kit" */ '@/pages/kit/KitList')
}, },
{ {
+18 -4
View File
@@ -1,3 +1,6 @@
import router from '@/router'
export default { export default {
state: { state: {
sheet: null sheet: null
@@ -10,18 +13,29 @@ export default {
}, },
actions: { actions: {
'INIT_KIT' ({ state, commit, dispatch, getters }) { async 'INIT_KIT' ({ state, commit, dispatch, getters }) {
const ids = dispatch('GET_ALL_NODES_IDS', { variant: 'kit', dataLevel: 'partial' }) const ids = await dispatch('GET_ALL_NODES_IDS', { variant: 'kit', dataLevel: 'partial' })
return dispatch('GET_NODES', { ids, dataLevel: 'partial' }) return dispatch('GET_NODES', { ids, dataLevel: 'partial' })
}, },
async 'OPEN_KIT_NODE' ({ state, commit, dispatch }, id) { async 'INIT_KIT_VIEW' ({ state, commit, dispatch, getters }, id) {
await dispatch('INIT_KIT')
const node = await dispatch('GET_NODE', { id, dataLevel: 'full' })
commit('SET_KIT_SHEET', id) commit('SET_KIT_SHEET', id)
commit('ADD_HISTORY_ENTRIES', [id]) commit('ADD_HISTORY_ENTRIES', [id])
return dispatch('GET_NODE', { id, dataLevel: 'full' }) return node
},
async 'OPEN_KIT_NODE' ({ state, commit, dispatch }, id) {
if (router.currentRoute.name !== 'kit-view') {
router.push({ name: 'kit-view', params: { id } })
} else {
router.push({ params: { id } })
}
}, },
'CLOSE_KIT_NODE' ({ state, commit }) { 'CLOSE_KIT_NODE' ({ state, commit }) {
router.push({ name: 'kit' })
commit('SET_KIT_SHEET', null) commit('SET_KIT_SHEET', null)
} }
}, },