Implement summing per category group
This commit is contained in:
parent
97de326527
commit
b176ce26ba
@ -96,9 +96,13 @@ function assignedChanged(e : Event, category : Category){
|
|||||||
<span class="hidden sm:block text-right">Available</span>
|
<span class="hidden sm:block text-right">Available</span>
|
||||||
<template v-for="group in GroupsForMonth">
|
<template v-for="group in GroupsForMonth">
|
||||||
<a
|
<a
|
||||||
class="text-lg font-bold col-span-2 sm:col-span-4 lg:col-span-5"
|
class="text-lg font-bold"
|
||||||
@click="toggleGroup(group)"
|
@click="toggleGroup(group)"
|
||||||
>{{ (getGroupState(group) ? "−" : "+") + " " + group.Name }}</a>
|
>{{ (getGroupState(group) ? "−" : "+") + " " + group.Name }}</a>
|
||||||
|
<Currency :value="group.AvailableLastMonth" class="hidden lg:block" />
|
||||||
|
<Currency :value="group.Assigned" class="hidden sm:block mx-2 text-right" />
|
||||||
|
<Currency :value="group.Activity" class="hidden sm:block" />
|
||||||
|
<Currency :value="group.Available" />
|
||||||
<template v-for="category in GetCategories(group.Name)" v-if="getGroupState(group)">
|
<template v-for="category in GetCategories(group.Name)" v-if="getGroupState(group)">
|
||||||
<span class="whitespace-nowrap overflow-hidden">{{ category.Name }}</span>
|
<span class="whitespace-nowrap overflow-hidden">{{ category.Name }}</span>
|
||||||
<Currency :value="category.AvailableLastMonth" class="hidden lg:block" />
|
<Currency :value="category.AvailableLastMonth" class="hidden lg:block" />
|
||||||
|
@ -51,7 +51,7 @@ export const useAccountStore = defineStore("budget/account", {
|
|||||||
return [...monthMap?.values() || []];
|
return [...monthMap?.values() || []];
|
||||||
},
|
},
|
||||||
GetCategoryAvailable(state) {
|
GetCategoryAvailable(state) {
|
||||||
return (category : Category) : number => {
|
return (category: Category): number => {
|
||||||
return category.AvailableLastMonth + Number(category.Assigned) + category.Activity;
|
return category.AvailableLastMonth + Number(category.Assigned) + category.Activity;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -62,7 +62,7 @@ export const useAccountStore = defineStore("budget/account", {
|
|||||||
GetIncomeAvailable(state) {
|
GetIncomeAvailable(state) {
|
||||||
return (year: number, month: number) => {
|
return (year: number, month: number) => {
|
||||||
const IncomeCategoryID = this.GetIncomeCategoryID;
|
const IncomeCategoryID = this.GetIncomeCategoryID;
|
||||||
if(IncomeCategoryID == null)
|
if (IncomeCategoryID == null)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
const categories = this.AllCategoriesForMonth(year, month);
|
const categories = this.AllCategoriesForMonth(year, month);
|
||||||
@ -80,13 +80,26 @@ export const useAccountStore = defineStore("budget/account", {
|
|||||||
for (const category of categories) {
|
for (const category of categories) {
|
||||||
if (category.ID == this.GetIncomeCategoryID)
|
if (category.ID == this.GetIncomeCategoryID)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (category.Group != prev)
|
if (prev == undefined || category.Group != prev.Name) {
|
||||||
categoryGroups.push({
|
prev = {
|
||||||
Name: category.Group,
|
Name: category.Group,
|
||||||
Expand: category.Group != "Hidden Categories",
|
Available: this.GetCategoryAvailable(category),
|
||||||
|
AvailableLastMonth: category.AvailableLastMonth,
|
||||||
|
Activity: category.Activity,
|
||||||
|
Assigned: category.Assigned,
|
||||||
|
}
|
||||||
|
categoryGroups.push({
|
||||||
|
...prev,
|
||||||
|
Expand: prev.Name != "Hidden Categories",
|
||||||
});
|
});
|
||||||
prev = category.Group;
|
} else {
|
||||||
|
categoryGroups[categoryGroups.length-1].Available += this.GetCategoryAvailable(category);
|
||||||
|
categoryGroups[categoryGroups.length-1].AvailableLastMonth += category.AvailableLastMonth;
|
||||||
|
categoryGroups[categoryGroups.length-1].Activity += category.Activity;
|
||||||
|
categoryGroups[categoryGroups.length-1].Assigned += category.Assigned;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return categoryGroups;
|
return categoryGroups;
|
||||||
}
|
}
|
||||||
@ -142,7 +155,7 @@ export const useAccountStore = defineStore("budget/account", {
|
|||||||
account.Transactions = transactions;
|
account.Transactions = transactions;
|
||||||
},
|
},
|
||||||
async FetchMonthBudget(budgetid: string, year: number, month: number) {
|
async FetchMonthBudget(budgetid: string, year: number, month: number) {
|
||||||
const result = await GET("/budget/" + budgetid + "/" + year + "/" + (month+1));
|
const result = await GET("/budget/" + budgetid + "/" + year + "/" + (month + 1));
|
||||||
const response = await result.json();
|
const response = await result.json();
|
||||||
if (response.Categories == undefined || response.Categories.length <= 0)
|
if (response.Categories == undefined || response.Categories.length <= 0)
|
||||||
return;
|
return;
|
||||||
@ -153,7 +166,7 @@ export const useAccountStore = defineStore("budget/account", {
|
|||||||
const response = await result.json();
|
const response = await result.json();
|
||||||
useBudgetsStore().MergeBudgetingData(response);
|
useBudgetsStore().MergeBudgetingData(response);
|
||||||
|
|
||||||
if(!isOpen) {
|
if (!isOpen) {
|
||||||
this.Accounts.delete(accountid);
|
this.Accounts.delete(accountid);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user