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:
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user