Make UI work for problematic and filtered transactions
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing

This commit is contained in:
Jan Bader 2022-04-24 20:12:41 +00:00
parent 03ea4a31ad
commit ebc34d7031
2 changed files with 18 additions and 7 deletions

View File

@ -40,21 +40,30 @@ const filters = ref({
});
watch(() => filters.value.AccountID + filters.value.PayeeID + filters.value.CategoryID, function() {
if(!hasFilters.value)
return;
transactions.GetFilteredTransactions(filters.value.AccountID, filters.value.CategoryID, filters.value.PayeeID);
})
const hasFilters = computed(() => filters.value.AccountID != null || filters.value.PayeeID != null || filters.value.CategoryID);
const transactionsList = computed(() => {
if (hasFilters.value){
return transactions.FilteredTransactionsList;
}
return transactions.ProblematicTransactionsList;
})
</script>
<template>
<div class="grid grid-cols-[1fr_auto]">
<div>
<h1 class="inline">
Problematic Transactions
{{ hasFilters ? "Filtered" : "Problematic" }} Transactions
</h1>
</div>
</div>
<div>
<h1>Filters</h1>
Account:
<Autocomplete v-model:text="filters.Account" v-model:id="filters.AccountID" model="accounts" class="inline-block" /><br>
Payee:
@ -73,7 +82,7 @@ watch(() => filters.value.AccountID + filters.value.PayeeID + filters.value.Cate
<td class="text-right">Amount</td>
</tr>
<TransactionRow
v-for="(transaction, index) in transactions.FilteredTransactionsList"
v-for="(transaction, index) in transactionsList"
:key="transaction.ID"
:with-account="true"
:transactionid="transaction.ID"

View File

@ -86,8 +86,9 @@ export const useTransactionsStore = defineStore("budget/transactions", {
const budgetStore = useBudgetsStore();
const result = await GET("/budget/" + budgetStore.CurrentBudgetID + "/problematic-transactions");
const response = await result.json();
this.AddTransactions(response.Transactions);
this.ProblematicTransactions = [...response.Transactions.map((x : Transaction) => x.ID)];
const transactions = response.Transactions ?? [];
this.AddTransactions(transactions);
this.ProblematicTransactions = [...transactions?.map((x : Transaction) => x.ID)];
},
async GetFilteredTransactions(accountID : string | null, categoryID : string | null, payeeID : string | null) {
const budgetStore = useBudgetsStore();
@ -98,8 +99,9 @@ export const useTransactionsStore = defineStore("budget/transactions", {
});
const result = await POST("/budget/" + budgetStore.CurrentBudgetID + "/filtered-transactions", payload);
const response = await result.json();
this.AddTransactions(response.Transactions);
this.FilteredTransactions = [...response.Transactions.map((x : Transaction) => x.ID)];
const transactions = response.Transactions ?? [];
this.AddTransactions(transactions);
this.FilteredTransactions = [...transactions.map((x : Transaction) => x.ID)];
},
async SubmitReconcilation(reconciliationTransactionAmount: number) {
const accountsStore = useAccountStore();