summaryrefslogtreecommitdiffstats
path: root/webapp/src/store
diff options
context:
space:
mode:
authorUdo Walter2019-03-30 17:20:14 +0100
committerUdo Walter2019-03-30 17:20:14 +0100
commitf2e328aa4be343458f332eb29dfe9d334b329c11 (patch)
treefed94126069ff058cec8359ec3b2167a9b2c5db5 /webapp/src/store
parent[server] disable sequelize logging; [webapp] group module reload on open; loa... (diff)
downloadbas-f2e328aa4be343458f332eb29dfe9d334b329c11.tar.gz
bas-f2e328aa4be343458f332eb29dfe9d334b329c11.tar.xz
bas-f2e328aa4be343458f332eb29dfe9d334b329c11.zip
[webapp/groups] parents of groups and clients are now clickable
Diffstat (limited to 'webapp/src/store')
-rw-r--r--webapp/src/store/groups.js95
1 files changed, 49 insertions, 46 deletions
diff --git a/webapp/src/store/groups.js b/webapp/src/store/groups.js
index 4b1ec5a..f438b00 100644
--- a/webapp/src/store/groups.js
+++ b/webapp/src/store/groups.js
@@ -26,15 +26,18 @@ export default {
})
state.configNames = names
},
- setActiveTab: (state, index) => { state.activeTab = index },
- setShowAll: (state, { index, value }) => { state.tabChain[index].tabShowAll = value },
- deleteFromTabChain: (state, { index, count }) => { state.tabChain.splice(index, count) },
- setTab: (state, { index, item }) => {
+ setActiveTab (state, index) { state.activeTab = index },
+ setShowAll (state, { index, value }) { state.tabChain[index].tabShowAll = value },
+ deleteFromTabChain (state, { index, count }) { state.tabChain.splice(index, count) },
+ setTab (state, { index, item }) {
if (state.tabChain.length > index + 1 && (state.tabChain[index].tabType !== item.tabType || state.tabChain[index].id !== item.id)) {
state.tabChain = state.tabChain.slice(0, index + 1)
}
state.tabChain.splice(index, 1, item)
},
+ insertTab (state, { index, item }) {
+ state.tabChain.splice(1, index - 1, item)
+ },
setTabLoading (state, index) {
if (state.tabChain.length > index) Vue.set(state.tabChain[index], 'loading', true)
},
@@ -44,7 +47,7 @@ export default {
}
},
actions: {
- loadConfigs (context) {
+ loadConfigList (context) {
axios.get('/api/configurator/configs').then(result => {
context.commit('setConfigList', result.data.map(x => ({ id: x.id, name: x.name || x.id })))
})
@@ -62,56 +65,56 @@ export default {
loadLists (context) {
context.dispatch('loadGroupList')
context.dispatch('loadClientList')
- },
- loadGroup (context, { id, name, tabIndex, switchTab, reload, save, placeholderName }) {
- if (!reload && context.state.tabChain.length > tabIndex && context.state.tabChain[tabIndex].id === id) {
- if (switchTab) context.commit('setActiveTab', tabIndex)
- } else {
- const showAll = context.state.tabChain.length > tabIndex &&
- context.state.tabChain[tabIndex].id === id &&
- context.state.tabChain[tabIndex].tabShowAll
- if (context.state.tabChain.length <= tabIndex || context.state.tabChain[tabIndex].id !== id) {
- context.commit('setTab', { index: tabIndex, item: { id, name, tabType: 'group', tabShowAll: showAll, subgroups: [], clients: [] } })
- }
- if (!save) context.commit('setTabLoading', tabIndex)
- if (switchTab) context.commit('setActiveTab', tabIndex)
- axios.get('/api/groups/' + id + (showAll ? '?all' : '')).then(res => {
- res.data.tabType = 'group'
- res.data.tabShowAll = showAll
- res.data.subgroups = Object.freeze(res.data.subgroups)
- context.commit('setTab', { index: tabIndex, item: res.data })
- }).catch(err => {
- console.log(err)
- if (switchTab) context.commit('setActiveTab', tabIndex - 1)
- context.commit('deleteFromTabChain', { index: tabIndex, count: context.state.tabChain.length - tabIndex })
+ context.dispatch('loadConfigList')
+ },
+ async loadGroup (context, { id, name, tabIndex, switchTab, asParent }) {
+ const tabChain = context.state.tabChain
+ const showAll = tabChain.length > tabIndex && tabChain[tabIndex].id === id && tabChain[tabIndex].tabShowAll
+ const insert = asParent && tabChain.length > tabIndex && tabIndex >= 1 && tabChain[tabIndex - 1].id !== id
+ if (asParent && tabChain.length > tabIndex && tabChain[tabIndex - 1].id === id) tabIndex -= 1
+ if (insert || tabChain.length <= tabIndex || tabChain[tabIndex].id !== id) {
+ if (insert) context.commit('setActiveTab', 2)
+ context.commit(insert ? 'insertTab' : 'setTab', {
+ index: tabIndex,
+ item: { id, name, tabType: 'group', tabShowAll: showAll, subgroups: [], clients: [] }
})
}
+ if (insert) tabIndex = 1
+ context.commit('setTabLoading', tabIndex)
+ const srcTabIndex = context.state.activeTab
+ if (switchTab) context.commit('setActiveTab', tabIndex)
+ try {
+ const res = await axios.get('/api/groups/' + id + (showAll ? '?all' : ''))
+ res.data.tabType = 'group'
+ res.data.tabShowAll = showAll
+ res.data.subgroups = Object.freeze(res.data.subgroups)
+ context.commit('setTab', { index: tabIndex, item: res.data })
+ } catch (e) {
+ if (switchTab) context.commit('setActiveTab', srcTabIndex)
+ context.commit('deleteFromTabChain', { index: tabIndex, count: insert ? 1 : tabChain.length - tabIndex })
+ }
},
- loadClient (context, { id, name, tabIndex, switchTab, reload }) {
- if (!reload && context.state.tabChain.length > tabIndex && context.state.tabChain[tabIndex].id === id) {
- if (switchTab) context.commit('setActiveTab', tabIndex)
- } else {
- if (context.state.tabChain.length <= tabIndex || context.state.tabChain[tabIndex].id !== id) {
- context.commit('setTab', { index: tabIndex, item: { id, name, tabType: 'client' } })
- }
- if (switchTab) context.commit('setActiveTab', tabIndex)
- axios.get('/api/clients/' + id).then(res => {
- res.data.tabType = 'client'
- context.commit('setTab', { index: tabIndex, item: res.data })
- }).catch(err => {
- console.log(err)
- if (switchTab) context.commit('setActiveTab', tabIndex - 1)
- context.commit('deleteFromTabChain', { index: tabIndex, count: context.state.tabChain.length - tabIndex })
- })
+ async loadClient (context, { id, name, tabIndex, switchTab }) {
+ if (context.state.tabChain.length <= tabIndex || context.state.tabChain[tabIndex].id !== id) {
+ context.commit('setTab', { index: tabIndex, item: { id, name, tabType: 'client' } })
+ }
+ const srcTabIndex = context.state.activeTab
+ if (switchTab) context.commit('setActiveTab', tabIndex)
+ try {
+ const res = await axios.get('/api/clients/' + id)
+ res.data.tabType = 'client'
+ context.commit('setTab', { index: tabIndex, item: res.data })
+ } catch (e) {
+ if (switchTab) context.commit('setActiveTab', srcTabIndex)
+ context.commit('deleteFromTabChain', { index: tabIndex, count: context.state.tabChain.length - tabIndex })
}
},
reload (context) {
- context.dispatch('loadConfigs')
context.dispatch('loadLists')
context.state.tabChain.forEach((item, index) => {
if (item.id === 'create') return
- if (item.tabType === 'group') context.dispatch('loadGroup', { id: item.id, tabIndex: index, reload: true, tabShowAll: item.tabShowAll })
- else if (item.tabType === 'client') context.dispatch('loadClient', { id: item.id, tabIndex: index, reload: true })
+ if (item.tabType === 'group') context.dispatch('loadGroup', { id: item.id, tabIndex: index })
+ else if (item.tabType === 'client') context.dispatch('loadClient', { id: item.id, tabIndex: index })
})
},
saveGroup (context, { id, data, parents, ipranges, tabIndex, callback }) {