update tagsOptions depending on current nodes

This commit is contained in:
axolotle
2021-06-29 16:54:20 +02:00
parent c536c37ec2
commit 31339de887
+8 -15
View File
@@ -2,9 +2,6 @@ import Vue from 'vue'
import router from '@/router' import router from '@/router'
import api from '@/api' import api from '@/api'
import {
AllTags
} from '@/api/queries'
import { import {
parseNodesQueryParams, parseNodesQueryParams,
getUniqueNodesIds, getUniqueNodesIds,
@@ -71,7 +68,8 @@ export default {
// │ │├─╯ │ │ │ ││││╰─╮ // │ │├─╯ │ │ │ ││││╰─╮
// ╰─╯╵ ╵ ╶┴╴╰─╯╵╰╯╶─╯ // ╰─╯╵ ╵ ╶┴╴╰─╯╵╰╯╶─╯
'SET_TAGS_OPTIONS' (state, tags) { 'SET_TAGS_OPTIONS' (state, nodes) {
const tags = nodes.reduce((tags, node) => tags.concat(node.tags || []), [])
state.tagsOptions = Array.from(new Set(tags.map(tag => tag.name))) state.tagsOptions = Array.from(new Set(tags.map(tag => tag.name)))
}, },
@@ -104,7 +102,6 @@ export default {
async 'INIT_LIBRARY' ({ state, commit, dispatch, rootState }) { async 'INIT_LIBRARY' ({ state, commit, dispatch, rootState }) {
const departIds = await dispatch('GET_ALL_NODES_IDS', 'depart') const departIds = await dispatch('GET_ALL_NODES_IDS', 'depart')
await dispatch('GET_NODES', { ids: departIds, dataLevel: 'initial' }) await dispatch('GET_NODES', { ids: departIds, dataLevel: 'initial' })
dispatch('GET_ALL_TAGS')
if (state.nodebook && state.nodebook.length) { if (state.nodebook && state.nodebook.length) {
commit('UPDATE_OPTIONS_VISIBILITY', false) commit('UPDATE_OPTIONS_VISIBILITY', false)
} }
@@ -122,12 +119,16 @@ export default {
const departNodes = await dispatch('GET_NODES', { ids, dataLevel: 'partial' }) const departNodes = await dispatch('GET_NODES', { ids, dataLevel: 'partial' })
const relatedIds = getRelatedNodesIds(departNodes, ids) const relatedIds = getRelatedNodesIds(departNodes, ids)
const relatedNodes = await dispatch('GET_NODES', { ids: relatedIds, dataLevel: 'partial' }) const relatedNodes = await dispatch('GET_NODES', { ids: relatedIds, dataLevel: 'partial' })
return [...departNodes, ...relatedNodes] const nodes = [...departNodes, ...relatedNodes]
commit('SET_TAGS_OPTIONS', nodes)
return nodes
}, },
async 'INIT_LIBRARY_LIST' ({ state, commit, dispatch }) { async 'INIT_LIBRARY_LIST' ({ state, commit, dispatch }) {
const departIds = await dispatch('INIT_LIBRARY') const departIds = await dispatch('INIT_LIBRARY')
return dispatch('GET_NODES', { ids: departIds, dataLevel: 'partial' }) const nodes = await dispatch('GET_NODES', { ids: departIds, dataLevel: 'partial' })
commit('SET_TAGS_OPTIONS', nodes)
return nodes
}, },
async 'UPDATE_NODEBOOK' ({ state, commit, dispatch }, query) { async 'UPDATE_NODEBOOK' ({ state, commit, dispatch }, query) {
@@ -171,14 +172,6 @@ export default {
// │ │├─╯ │ │ │ ││││╰─╮ // │ │├─╯ │ │ │ ││││╰─╮
// ╰─╯╵ ╵ ╶┴╴╰─╯╵╰╯╶─╯ // ╰─╯╵ ╵ ╶┴╴╰─╯╵╰╯╶─╯
'GET_ALL_TAGS' ({ state, commit }) {
if (state.tagsOptions.length) return state.tagsOptions
return api.query(AllTags).then(data => {
commit('SET_TAGS_OPTIONS', data.tags)
return state.tagsOptions
})
},
async 'SET_NODE_DEPART_ID' ({ state, rootState, commit, dispatch, getters }, id) { async 'SET_NODE_DEPART_ID' ({ state, rootState, commit, dispatch, getters }, id) {
if (state.nodeDepartId === id) return if (state.nodeDepartId === id) return