add shuffle mecanism to LibraryMap

This commit is contained in:
axolotle
2021-06-29 19:10:46 +02:00
parent 28d1f32579
commit 3507c9a7ce
7 changed files with 77 additions and 23 deletions
+26 -9
View File
@@ -6,6 +6,7 @@ import {
parseNodesQueryParams,
getUniqueNodesIds,
getRelatedNodesIds,
getRandomIds,
buildTree
} from '@/store/utils.js'
@@ -13,6 +14,7 @@ import {
export default {
state: {
trees: {},
randomNodes: undefined,
nodebook: undefined,
// LibraryOptions options
@@ -89,6 +91,10 @@ export default {
state.nodeDepartId = id
},
'SET_RANDOM_NODES' (state, ids) {
state.randomNodes = ids
},
'SET_SEARCH' (state, str) {
state.search = str
}
@@ -114,14 +120,8 @@ export default {
},
async 'INIT_LIBRARY_MAP' ({ state, commit, dispatch }) {
const departIds = await dispatch('INIT_LIBRARY')
const ids = departIds.slice(0, 3)
const departNodes = await dispatch('GET_NODES', { ids, dataLevel: 'partial' })
const relatedIds = getRelatedNodesIds(departNodes, ids)
const relatedNodes = await dispatch('GET_NODES', { ids: relatedIds, dataLevel: 'partial' })
const nodes = [...departNodes, ...relatedNodes]
commit('SET_TAGS_OPTIONS', nodes)
return nodes
await dispatch('INIT_LIBRARY')
return dispatch('ROLL_RANDOM_NODES')
},
async 'INIT_LIBRARY_LIST' ({ state, commit, dispatch }) {
@@ -186,6 +186,17 @@ export default {
return getters.nodeTree
},
async 'ROLL_RANDOM_NODES' ({ state, rootState, commit, dispatch }) {
commit('SET_RANDOM_NODES', undefined)
const ids = getRandomIds(rootState.ids.depart)
const departNodes = await dispatch('GET_NODES', { ids, dataLevel: 'partial' })
const relatedIds = getRelatedNodesIds(departNodes, ids)
const relatedNodes = await dispatch('GET_NODES', { ids: relatedIds, dataLevel: 'partial' })
const nodes = [...departNodes, ...relatedNodes]
commit('SET_RANDOM_NODES', [...ids, ...relatedIds])
commit('SET_TAGS_OPTIONS', nodes)
},
'UPDATE_QUERY_MODE' (store, mode) {
if (router.currentRoute.query.mode === mode) return
router.push({ query: { mode } })
@@ -255,8 +266,14 @@ export default {
})
},
// LibraryMap
randomNodes: (state, getters, rootState) => {
if (state.randomNodes === undefined) return
return state.randomNodes.map(id => rootState.nodes[id])
},
// LibraryTree
nodeTree: (state, rootState) => {
nodeTree: state => {
return state.trees[state.nodeDepartId] || { nodes: [], links: [] }
},