Преглед изворни кода

update tagsOptions depending on current nodes

axolotle пре 3 година
родитељ
комит
31339de887
1 измењених фајлова са 8 додато и 15 уклоњено
  1. 8 15
      src/store/modules/library.js

+ 8 - 15
src/store/modules/library.js

@@ -2,9 +2,6 @@ import Vue from 'vue'
 import router from '@/router'
 
 import api from '@/api'
-import {
-  AllTags
-} from '@/api/queries'
 import {
   parseNodesQueryParams,
   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)))
     },
 
@@ -104,7 +102,6 @@ export default {
     async 'INIT_LIBRARY' ({ state, commit, dispatch, rootState }) {
       const departIds = await dispatch('GET_ALL_NODES_IDS', 'depart')
       await dispatch('GET_NODES', { ids: departIds, dataLevel: 'initial' })
-      dispatch('GET_ALL_TAGS')
       if (state.nodebook && state.nodebook.length) {
         commit('UPDATE_OPTIONS_VISIBILITY', false)
       }
@@ -122,12 +119,16 @@ export default {
       const departNodes = await dispatch('GET_NODES', { ids, dataLevel: 'partial' })
       const relatedIds = getRelatedNodesIds(departNodes, ids)
       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 }) {
       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) {
@@ -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) {
       if (state.nodeDepartId === id) return