Select Git revision
build_docker.bash
index.js 2.73 KiB
// SPDX-License-Identifier: Apache-2.0
import { createStore } from "vuex";
import { ApiService } from "@/services/ApiService";
import { collapseExpandTree } from "@/mixins/collapseExpandTree";
const store = createStore({
state: {
treeData: {},
toeList: {},
toeHistory: {},
treeDataListByStateId: [],
},
mutations: {
SAVE_TREE_DATA(state, treeData) {
state.treeData = treeData;
},
SAVE_TOE_LIST(state, toeList) {
state.toeList = toeList;
},
SAVE_TOE_HISTORY(state, toeHistory) {
state.toeHistory = toeHistory;
},
SAVE_TREE_DATA_LIST(state, treeData) {
state.treeDataListByStateId.push(treeData);
},
},
getters: {
treeData: (state) => state.treeData,
toeList: (state) => state.toeList,
toeHistory: (state) => state.toeHistory,
treeByStateId: (state) => (stateId) => {
return state.treeDataListByStateId.find(
(tree) => tree.treeStateId === stateId
);
},
},
actions: {
async getTreeDataByStateId({ commit }, stateId) {
if (!stateId) return;
if (stateId && this.getters.treeByStateId(stateId)) {
return commit("SAVE_TREE_DATA", this.getters.treeByStateId(stateId));
}
ApiService.getTreeByStateId(stateId)
.then((response) => {
collapseExpandTree.methods.collapseAllFromLevel(
response.data.root,
1
);
commit("SAVE_TREE_DATA", response.data);
commit("SAVE_TREE_DATA_LIST", response.data);
})
.catch((err) => {
console.error("Error getting tree by tree state id: " + err);
});
},
async getToeList({ commit }) {
await ApiService.getToeList()
.then((response) => {
commit("SAVE_TOE_LIST", response.data);
})
.catch((err) => {
console.error("Error getting ToE list: " + err);
});
},
async getToeHistory({ commit }, id) {
await ApiService.getToeHistory(id)
.then((response) => {
commit("SAVE_TOE_HISTORY", response.data);
})
.catch((err) => {
console.error("Error getting ToE history: " + err);
});
},
async initToeListAndTree({ dispatch }) {
// TODO: add logic for when there are no trees
await dispatch("getToeList").then(() => {
dispatch("getToeHistory", this.state.toeList[0].toeId).then(() => {
dispatch(
"getTreeDataByStateId",
this.state.toeHistory[0].treeStateId
);
});
});
},
async selectToe({ dispatch }, toeId) {
await dispatch("getToeHistory", toeId).then(() => {
dispatch("getTreeDataByStateId", this.state.toeHistory[0].treeStateId);
});
},
},
});
export default store;