Balance Admin: Load all balances

This commit is contained in:
Ferdinand Thiessen 2021-01-29 23:29:38 +01:00
parent c9d8365def
commit 008d40b56a
2 changed files with 32 additions and 18 deletions

View File

@ -11,25 +11,24 @@
</template> </template>
<script lang="ts"> <script lang="ts">
// TODO: Load all users / balances
// TODO: Fill usefull data // TODO: Fill usefull data
import { computed, defineComponent } from '@vue/composition-api'; import { ref, defineComponent, onMounted } from '@vue/composition-api';
import { StateInterfaceBalance } from '../store/balance'; import { StateInterfaceBalance, BalancesResponse } from '../store/balance';
import { Store } from 'vuex'; import { Store } from 'vuex';
export default defineComponent({ export default defineComponent({
// name: 'PageName' // name: 'PageName'
setup(_, { root }) { setup(_, { root }) {
const store = <Store<StateInterfaceBalance>>root.$store; const store = <Store<StateInterfaceBalance>>root.$store;
const rows = computed(() => { onMounted(
const fo: Array<{ userid: string; balance: number }> = []; () =>
store.state.balance.balances.forEach((value, key) => void store
fo.push(Object.assign(value, { userid: key })) .dispatch('balance/getBalances')
); .then((balances: Array<BalancesResponse>) => rows.value.push(...balances))
return fo; );
});
const rows = ref(new Array<BalancesResponse>());
const columns = [ const columns = [
{ {
@ -41,16 +40,22 @@ export default defineComponent({
sortable: true sortable: true
}, },
{ {
name: 'balance', name: 'credit',
label: 'Kontostand', label: 'Haben',
field: 'balance', field: 'credit',
format: (val: number) => val.toFixed(2) format: (val: number) => val.toFixed(2)
}, },
{ {
name: 'limit', name: 'debit',
label: 'Limit', label: 'Soll',
field: 'limit', field: 'debit',
format: (val: number) => (val === null ? 'keins' : val) format: (val: number) => val.toFixed(2)
},
{
name: 'balance',
label: 'Kontostand',
format: (_: undefined, row: { debit: number; credit: number }) =>
(row.credit - row.debit).toFixed(2)
} }
]; ];
return { rows, columns }; return { rows, columns };

View File

@ -9,6 +9,10 @@ interface BalanceResponse {
debit: number; debit: number;
} }
export interface BalancesResponse extends BalanceResponse {
userid: string;
}
export interface TransactionsResponse { export interface TransactionsResponse {
transactions: Array<FG.Transaction>; transactions: Array<FG.Transaction>;
count?: number; count?: number;
@ -122,6 +126,11 @@ const actions: ActionTree<BalanceInterface, StateInterface> = {
}) })
.finally(() => commit('setLoading', false)); .finally(() => commit('setLoading', false));
}, },
getBalances() {
return axios.get('/balance').then(({ data }: AxiosResponse<Array<BalancesResponse>>) => {
return data;
});
},
getTransactions( getTransactions(
{ commit, rootState }, { commit, rootState },
payload: { payload: {