use the account / transaction category filter of the statistics page when navigating from the statistics page to the transaction list page

This commit is contained in:
MaysWind
2024-07-07 14:22:03 +08:00
parent dad3f1041e
commit d0e8419b2e
4 changed files with 91 additions and 1 deletions
+29
View File
@@ -228,6 +228,35 @@ export function getAllFilteredAccountsBalance(categorizedAccounts, accountFilter
return ret; return ret;
} }
export function getFinalAccountIdsByFilteredAccountIds(allAccountsMap, filteredAccountIds) {
let finalAccountIds = '';
if (!allAccountsMap) {
return finalAccountIds;
}
for (let accountId in allAccountsMap) {
if (!Object.prototype.hasOwnProperty.call(allAccountsMap, accountId)) {
continue;
}
const account = allAccountsMap[accountId];
if (filteredAccountIds && !isAccountOrSubAccountsAllChecked(account, filteredAccountIds)) {
continue;
}
if (finalAccountIds.length > 0) {
finalAccountIds += ',';
}
finalAccountIds += account.id;
}
return finalAccountIds;
}
export function getUnifiedSelectedAccountsCurrencyOrDefaultCurrency(allAccounts, selectedAccountIds, defaultCurrency) { export function getUnifiedSelectedAccountsCurrencyOrDefaultCurrency(allAccounts, selectedAccountIds, defaultCurrency) {
if (!selectedAccountIds) { if (!selectedAccountIds) {
return defaultCurrency; return defaultCurrency;
+28
View File
@@ -138,6 +138,34 @@ export function allVisiblePrimaryTransactionCategoriesByType(allTransactionCateg
return allVisibleCategories[type.toString()].visibleCategories; return allVisibleCategories[type.toString()].visibleCategories;
} }
export function getFinalCategoryIdsByFilteredCategoryIds(allTransactionCategoriesMap, filteredCategoryIds) {
let finalCategoryIds = '';
if (!allTransactionCategoriesMap) {
return finalCategoryIds;
}
for (let categoryId in allTransactionCategoriesMap) {
if (!Object.prototype.hasOwnProperty.call(allTransactionCategoriesMap, categoryId)) {
continue;
}
const category = allTransactionCategoriesMap[categoryId];
if (filteredCategoryIds && !isCategoryOrSubCategoriesAllChecked(category, filteredCategoryIds)) {
continue;
}
if (finalCategoryIds.length > 0) {
finalCategoryIds += ',';
}
finalCategoryIds += category.id;
}
return finalCategoryIds;
}
export function isSubCategoryIdAvailable(categories, categoryId) { export function isSubCategoryIdAvailable(categories, categoryId) {
if (!categories || !categories.length) { if (!categories || !categories.length) {
return false; return false;
+16
View File
@@ -91,6 +91,22 @@ export function isEquals(obj1, obj2) {
} }
} }
export function isObjectEmpty(obj) {
if (!obj) {
return true;
}
for (let field in obj) {
if (!Object.prototype.hasOwnProperty.call(obj, field)) {
continue;
}
return false;
}
return true;
}
export function getObjectOwnFieldCount(object) { export function getObjectOwnFieldCount(object) {
let count = 0; let count = 0;
+18 -1
View File
@@ -16,13 +16,20 @@ import logger from '@/lib/logger.js';
import { import {
isEquals, isEquals,
isNumber, isNumber,
isObject,
isYearMonth, isYearMonth,
isObject isObjectEmpty
} from '@/lib/common.js'; } from '@/lib/common.js';
import { import {
getYearAndMonthFromUnixTime, getYearAndMonthFromUnixTime,
getDateRangeByDateType getDateRangeByDateType
} from '@/lib/datetime.js'; } from '@/lib/datetime.js';
import {
getFinalAccountIdsByFilteredAccountIds
} from '@/lib/account.js';
import {
getFinalCategoryIdsByFilteredCategoryIds
} from '@/lib/category.js';
import { import {
sortStatisticsItems sortStatisticsItems
} from '@/lib/statistics.js'; } from '@/lib/statistics.js';
@@ -736,6 +743,8 @@ export const useStatisticsStore = defineStore('statistics', {
} }
}, },
getTransactionListPageParams(analysisType, item, dateRange) { getTransactionListPageParams(analysisType, item, dateRange) {
const accountsStore = useAccountsStore();
const transactionCategoriesStore = useTransactionCategoriesStore();
const querys = []; const querys = [];
if (this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeByAccount.type if (this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeByAccount.type
@@ -755,11 +764,19 @@ export const useStatisticsStore = defineStore('statistics', {
|| this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.AccountTotalAssets.type || this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.AccountTotalAssets.type
|| this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.AccountTotalLiabilities.type) { || this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.AccountTotalLiabilities.type) {
querys.push('accountIds=' + item.id); querys.push('accountIds=' + item.id);
if (!isObjectEmpty(this.transactionStatisticsFilter.filterCategoryIds)) {
querys.push('categoryIds=' + getFinalCategoryIdsByFilteredCategoryIds(transactionCategoriesStore.allTransactionCategoriesMap, this.transactionStatisticsFilter.filterCategoryIds));
}
} else if (this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeByPrimaryCategory.type } else if (this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeByPrimaryCategory.type
|| this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeBySecondaryCategory.type || this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.IncomeBySecondaryCategory.type
|| this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.ExpenseByPrimaryCategory.type || this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.ExpenseByPrimaryCategory.type
|| this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.ExpenseBySecondaryCategory.type) { || this.transactionStatisticsFilter.chartDataType === statisticsConstants.allChartDataTypes.ExpenseBySecondaryCategory.type) {
querys.push('categoryIds=' + item.id); querys.push('categoryIds=' + item.id);
if (!isObjectEmpty(this.transactionStatisticsFilter.filterAccountIds)) {
querys.push('accountIds=' + getFinalAccountIdsByFilteredAccountIds(accountsStore.allAccountsMap, this.transactionStatisticsFilter.filterAccountIds));
}
} }
if (analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis if (analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis