Merge modules

This commit is contained in:
Jan Bader 2022-01-25 20:56:32 +00:00
parent ffed94f586
commit 463a52fb19
3 changed files with 60 additions and 78 deletions

View File

@ -1,74 +0,0 @@
import { TITLE } from "../mutation-types";
const budget = {
state () {
return {
Accounts: [],
CurrentAccount: null,
Categories: [],
Transactions: [],
Assignments: []
}
},
mutations: {
setAccounts (state, accounts) {
state.Accounts = accounts;
},
setCurrentAccount(state, account) {
state.CurrentAccount = account;
},
setTransactions(state, transactions){
state.Transactions = transactions;
}
},
getters: {
Accounts(state) {
return state.Accounts || [];
},
CurrentAccount(state) {
return state.CurrentAccount || {};
},
OnBudgetAccounts(state) {
return (state.Accounts || []).filter(x => x.OnBudget);
},
OffBudgetAccounts(state) {
return (state.Accounts || []).filter(x => !x.OnBudget);
},
Transactions(state) {
return (state.Transactions || []);
}
},
actions: {
async fetchBudget ({state, commit, rootState}, budgetid) {
const result = await fetch("/api/v1/budget/" + budgetid, {
headers: {
'Authorization': 'Bearer ' + rootState.Session.Token
}
});
const response = await result.json();
return commit("setAccounts", response.Accounts);
},
async fetchAccount ({state, commit, rootState}, accountid) {
const result = await fetch("/api/v1/account/" + accountid + "/transactions", {
headers: {
'Authorization': 'Bearer ' + rootState.Session.Token
}
});
const response = await result.json();
return commit("setTransactions", response.Transactions);
},
async setCurrentAccount({state, commit, dispatch}, {budgetid, accountid}) {
await dispatch("fetchBudget", budgetid);
for (const element of state.Accounts) {
if(element.ID != accountid)
continue
commit("setCurrentAccount", element);
commit(TITLE, element.Name);
break
}
}
}
}
export default budget

View File

@ -3,6 +3,11 @@ const dashboard = {
return { return {
Budgets: [], Budgets: [],
CurrentBudget: null, CurrentBudget: null,
Accounts: [],
CurrentAccount: null,
Categories: [],
Transactions: [],
Assignments: []
} }
}, },
mutations: { mutations: {
@ -14,6 +19,15 @@ const dashboard = {
}, },
setCurrentBudget(state, budget) { setCurrentBudget(state, budget) {
state.CurrentBudget = budget; state.CurrentBudget = budget;
},
setAccounts (state, accounts) {
state.Accounts = accounts;
},
setCurrentAccount(state, account) {
state.CurrentAccount = account;
},
setTransactions(state, transactions){
state.Transactions = transactions;
} }
}, },
getters: { getters: {
@ -22,6 +36,21 @@ const dashboard = {
}, },
CurrentBudget(state) { CurrentBudget(state) {
return state.CurrentBudget || {}; return state.CurrentBudget || {};
},
Accounts(state) {
return state.Accounts || [];
},
CurrentAccount(state) {
return state.CurrentAccount || {};
},
OnBudgetAccounts(state) {
return (state.Accounts || []).filter(x => x.OnBudget);
},
OffBudgetAccounts(state) {
return (state.Accounts || []).filter(x => !x.OnBudget);
},
Transactions(state) {
return (state.Transactions || []);
} }
}, },
actions: { actions: {
@ -54,6 +83,35 @@ const dashboard = {
commit("setCurrentBudget", element); commit("setCurrentBudget", element);
break break
} }
},
async fetchBudget ({state, commit, rootState}, budgetid) {
const result = await fetch("/api/v1/budget/" + budgetid, {
headers: {
'Authorization': 'Bearer ' + rootState.Session.Token
}
});
const response = await result.json();
return commit("setAccounts", response.Accounts);
},
async fetchAccount ({state, commit, rootState}, accountid) {
const result = await fetch("/api/v1/account/" + accountid + "/transactions", {
headers: {
'Authorization': 'Bearer ' + rootState.Session.Token
}
});
const response = await result.json();
return commit("setTransactions", response.Transactions);
},
async setCurrentAccount({state, commit, dispatch}, {budgetid, accountid}) {
await dispatch("fetchBudget", budgetid);
for (const element of state.Accounts) {
if(element.ID != accountid)
continue
commit("setCurrentAccount", element);
commit(TITLE, element.Name);
break
}
} }
} }
} }

View File

@ -1,6 +1,5 @@
import { createStore } from 'vuex' import { createStore } from 'vuex'
import dashboard from './dashboard/index' import dashboard from './dashboard/index'
import budget from './budget/index'
import { LOGIN_SUCCESS, LOGOUT, TITLE } from './mutation-types' import { LOGIN_SUCCESS, LOGOUT, TITLE } from './mutation-types'
const store = createStore({ const store = createStore({
@ -14,7 +13,7 @@ const store = createStore({
}, },
mutations: { mutations: {
initializeStore(state) { initializeStore(state) {
let store = localStorage.getItem("store"); const store = localStorage.getItem("store");
if(store){ if(store){
this.replaceState( this.replaceState(
Object.assign(state, JSON.parse(store)) Object.assign(state, JSON.parse(store))
@ -32,8 +31,7 @@ const store = createStore({
} }
}, },
modules: { modules: {
dashboard, dashboard
budget
} }
}) })