add query params to remember opened texts & define what component to append based on those query
This commit is contained in:
+42
-3
@@ -1,11 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<component-debug :component="this">
|
<component-debug :component="this">
|
||||||
|
<div class="py-3">
|
||||||
|
<b-button @click="openText">
|
||||||
|
add text 50
|
||||||
|
</b-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<component :is="mode" />
|
<component :is="mode" />
|
||||||
|
<text-card v-for="group in groups" :key="group.id" :id="group.id" />
|
||||||
</component-debug>
|
</component-debug>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { CardList, CardMap, TreeMap } from './biblio'
|
import { CardList, CardMap, TreeMap, TextCard } from './biblio'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -14,11 +21,43 @@ export default {
|
|||||||
components: {
|
components: {
|
||||||
CardList,
|
CardList,
|
||||||
CardMap,
|
CardMap,
|
||||||
TreeMap
|
TreeMap,
|
||||||
|
TextCard
|
||||||
|
},
|
||||||
|
|
||||||
|
metaInfo () {
|
||||||
|
return {
|
||||||
|
title: this.groups.length ? 'Bibliothèque - ' + this.groups[0].id : 'Bibliothèque',
|
||||||
|
meta: [
|
||||||
|
{ charset: 'utf-8' },
|
||||||
|
{ name: 'viewport', content: 'width=device-width, initial-scale=1' }
|
||||||
|
]
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
props: {
|
props: {
|
||||||
mode: { type: String, required: true }
|
mode: { type: String, required: true },
|
||||||
|
texts: { type: Array, required: true }
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {
|
||||||
|
groups () {
|
||||||
|
return this.texts.map(text => {
|
||||||
|
const [id, ...prod] = text
|
||||||
|
return { id, prod }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
openText () {
|
||||||
|
this.$router.push({
|
||||||
|
query: {
|
||||||
|
mode: this.mode,
|
||||||
|
texts: [...this.texts, [50]]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+7
-8
@@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
{{ text }}
|
<b-button :to="{ name: 'biblio', query }">
|
||||||
|
Biblio
|
||||||
|
</b-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -10,14 +12,11 @@ export default {
|
|||||||
|
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
text: null
|
query: {
|
||||||
|
mode: 'card-list',
|
||||||
|
texts: [[1, 10, 2], [20, 5, 19]]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
created () {
|
|
||||||
this.$store.dispatch('GET_TEXT', { id: 1 }).then(data => {
|
|
||||||
this.text = data.textref
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -17,7 +17,11 @@ export default [
|
|||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
default: ({ query }) => ({
|
default: ({ query }) => ({
|
||||||
mode: query.mode || 'tree-map'
|
mode: query.mode || 'tree-map',
|
||||||
|
// In case of a reload or direct link, vue-router doesn't turn the query string into an array.
|
||||||
|
texts: query.texts && query.texts.length && typeof query.texts[0] === 'string'
|
||||||
|
? query.texts.map(text => text.split(',').map(id => parseInt(id)))
|
||||||
|
: query.texts
|
||||||
}),
|
}),
|
||||||
options: ({ query }) => ({
|
options: ({ query }) => ({
|
||||||
show: !('texts' in query)
|
show: !('texts' in query)
|
||||||
|
|||||||
Reference in New Issue
Block a user