support changing default account/transaction category filter in statistics page

This commit is contained in:
MaysWind
2021-02-06 01:02:16 +08:00
parent 3a825154e2
commit 5bcf85b812
7 changed files with 64 additions and 10 deletions
+6
View File
@@ -19,6 +19,8 @@ const defaultSettings = {
defaultChartType: statisticsConstants.defaultChartType, defaultChartType: statisticsConstants.defaultChartType,
defaultChartDataType: statisticsConstants.defaultChartDataType, defaultChartDataType: statisticsConstants.defaultChartDataType,
defaultDataRangeType: statisticsConstants.defaultDataRangeType, defaultDataRangeType: statisticsConstants.defaultDataRangeType,
defaultAccountFilter: {},
defaultTransactionCategoryFilter: {},
sortingType: statisticsConstants.defaultSortingType sortingType: statisticsConstants.defaultSortingType
}, },
animate: true, animate: true,
@@ -134,6 +136,10 @@ export default {
setStatisticsDefaultChartDataType: value => setSubOption('statistics', 'defaultChartDataType', value), setStatisticsDefaultChartDataType: value => setSubOption('statistics', 'defaultChartDataType', value),
getStatisticsDefaultDateRange: () => getSubOption('statistics', 'defaultDataRangeType'), getStatisticsDefaultDateRange: () => getSubOption('statistics', 'defaultDataRangeType'),
setStatisticsDefaultDateRange: value => setSubOption('statistics', 'defaultDataRangeType', value), setStatisticsDefaultDateRange: value => setSubOption('statistics', 'defaultDataRangeType', value),
getStatisticsDefaultAccountFilter: () => getSubOption('statistics', 'defaultAccountFilter'),
setStatisticsDefaultAccountFilter: value => setSubOption('statistics', 'defaultAccountFilter', value),
getStatisticsDefaultTransactionCategoryFilter: () => getSubOption('statistics', 'defaultTransactionCategoryFilter'),
setStatisticsDefaultTransactionCategoryFilter: value => setSubOption('statistics', 'defaultTransactionCategoryFilter', value),
getStatisticsSortingType: () => getSubOption('statistics', 'sortingType'), getStatisticsSortingType: () => getSubOption('statistics', 'sortingType'),
setStatisticsSortingType: value => setSubOption('statistics', 'sortingType', value), setStatisticsSortingType: value => setSubOption('statistics', 'sortingType', value),
isEnableAnimate: () => getOption('animate'), isEnableAnimate: () => getOption('animate'),
+2
View File
@@ -669,6 +669,8 @@ export default {
'Default Chart Type': 'Default Chart Type', 'Default Chart Type': 'Default Chart Type',
'Default Chart Data Type': 'Default Chart Data Type', 'Default Chart Data Type': 'Default Chart Data Type',
'Default Date Range': 'Default Date Range', 'Default Date Range': 'Default Date Range',
'Default Account Filter': 'Default Account Filter',
'Default Transaction Category Filter': 'Default Transaction Category Filter',
'Sort By': 'Sort By', 'Sort By': 'Sort By',
'By Amount': 'By Amount', 'By Amount': 'By Amount',
'By Display Order': 'By Display Order', 'By Display Order': 'By Display Order',
+2
View File
@@ -669,6 +669,8 @@ export default {
'Default Chart Type': '默认图表类型', 'Default Chart Type': '默认图表类型',
'Default Chart Data Type': '默认图表数据类型', 'Default Chart Data Type': '默认图表数据类型',
'Default Date Range': '默认时间范围', 'Default Date Range': '默认时间范围',
'Default Account Filter': '默认账号过滤',
'Default Transaction Category Filter': '默认交易分类过滤',
'Sort By': '排序方式', 'Sort By': '排序方式',
'By Amount': '金额', 'By Amount': '金额',
'By Display Order': '显示顺序', 'By Display Order': '显示顺序',
@@ -2,7 +2,7 @@
<f7-page> <f7-page>
<f7-navbar> <f7-navbar>
<f7-nav-left :back-link="$t('Back')"></f7-nav-left> <f7-nav-left :back-link="$t('Back')"></f7-nav-left>
<f7-nav-title :title="$t('Filter Accounts')"></f7-nav-title> <f7-nav-title :title="$t(title)"></f7-nav-title>
<f7-nav-right> <f7-nav-right>
<f7-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link> <f7-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link>
<f7-link :text="$t('Save')" @click="save"></f7-link> <f7-link :text="$t('Save')" @click="save"></f7-link>
@@ -104,11 +104,19 @@ export default {
data: function () { data: function () {
return { return {
loading: true, loading: true,
modifyDefault: false,
filterAccountIds: {}, filterAccountIds: {},
showMoreActionSheet: false showMoreActionSheet: false
} }
}, },
computed: { computed: {
title() {
if (this.modifyDefault) {
return 'Default Account Filter';
} else {
return 'Filter Accounts';
}
},
allAccountCategories() { allAccountCategories() {
return this.$constants.account.allCategories; return this.$constants.account.allCategories;
}, },
@@ -118,8 +126,11 @@ export default {
}, },
created() { created() {
const self = this; const self = this;
const query = self.$f7route.query;
const router = self.$f7router; const router = self.$f7router;
self.modifyDefault = !!query.modifyDefault;
self.$store.dispatch('loadAllAccounts', { self.$store.dispatch('loadAllAccounts', {
force: false force: false
}).then(() => { }).then(() => {
@@ -136,7 +147,11 @@ export default {
allAccountIds[account.id] = false; allAccountIds[account.id] = false;
} }
self.filterAccountIds = self.$utilities.copyObjectTo(self.$store.state.transactionStatisticsFilter.filterAccountIds, allAccountIds) if (self.modifyDefault) {
self.filterAccountIds = self.$utilities.copyObjectTo(self.$settings.getStatisticsDefaultAccountFilter(), allAccountIds);
} else {
self.filterAccountIds = self.$utilities.copyObjectTo(self.$store.state.transactionStatisticsFilter.filterAccountIds, allAccountIds);
}
}).catch(error => { }).catch(error => {
self.logining = false; self.logining = false;
@@ -163,9 +178,13 @@ export default {
} }
} }
self.$store.dispatch('updateTransactionStatisticsFilter', { if (self.modifyDefault) {
filterAccountIds: filteredAccountIds self.$settings.setStatisticsDefaultAccountFilter(filteredAccountIds);
}); } else {
self.$store.dispatch('updateTransactionStatisticsFilter', {
filterAccountIds: filteredAccountIds
});
}
router.back(); router.back();
}, },
@@ -2,7 +2,7 @@
<f7-page> <f7-page>
<f7-navbar> <f7-navbar>
<f7-nav-left :back-link="$t('Back')"></f7-nav-left> <f7-nav-left :back-link="$t('Back')"></f7-nav-left>
<f7-nav-title :title="$t('Filter Transaction Categories')"></f7-nav-title> <f7-nav-title :title="$t(title)"></f7-nav-title>
<f7-nav-right> <f7-nav-right>
<f7-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link> <f7-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link>
<f7-link :text="$t('Save')" @click="save"></f7-link> <f7-link :text="$t('Save')" @click="save"></f7-link>
@@ -109,19 +109,30 @@ export default {
data: function () { data: function () {
return { return {
loading: true, loading: true,
modifyDefault: false,
filterCategoryIds: {}, filterCategoryIds: {},
showMoreActionSheet: false showMoreActionSheet: false
} }
}, },
computed: { computed: {
title() {
if (this.modifyDefault) {
return 'Default Transaction Category Filter';
} else {
return 'Filter Transaction Categories';
}
},
allTransactionCategories: function () { allTransactionCategories: function () {
return this.$store.state.allTransactionCategories; return this.$store.state.allTransactionCategories;
} }
}, },
created() { created() {
const self = this; const self = this;
const query = self.$f7route.query;
const router = self.$f7router; const router = self.$f7router;
self.modifyDefault = !!query.modifyDefault;
self.$store.dispatch('loadAllCategories', { self.$store.dispatch('loadAllCategories', {
force: false force: false
}).then(() => { }).then(() => {
@@ -138,7 +149,11 @@ export default {
allCategoryIds[category.id] = false; allCategoryIds[category.id] = false;
} }
self.filterCategoryIds = self.$utilities.copyObjectTo(self.$store.state.transactionStatisticsFilter.filterCategoryIds, allCategoryIds) if (self.modifyDefault) {
self.filterCategoryIds = self.$utilities.copyObjectTo(self.$settings.getStatisticsDefaultTransactionCategoryFilter(), allCategoryIds);
} else {
self.filterCategoryIds = self.$utilities.copyObjectTo(self.$store.state.transactionStatisticsFilter.filterCategoryIds, allCategoryIds);
}
}).catch(error => { }).catch(error => {
self.logining = false; self.logining = false;
@@ -165,9 +180,13 @@ export default {
} }
} }
self.$store.dispatch('updateTransactionStatisticsFilter', { if (self.modifyDefault) {
filterCategoryIds: filteredCategoryIds self.$settings.setStatisticsDefaultTransactionCategoryFilter(filteredCategoryIds);
}); } else {
self.$store.dispatch('updateTransactionStatisticsFilter', {
filterCategoryIds: filteredCategoryIds
});
}
router.back(); router.back();
}, },
+4
View File
@@ -34,6 +34,10 @@
</select> </select>
</f7-list-item> </f7-list-item>
<f7-list-item :title="$t('Default Account Filter')" link="/statistic/filter/account?modifyDefault=1"></f7-list-item>
<f7-list-item :title="$t('Default Transaction Category Filter')" link="/statistic/filter/category?modifyDefault=1"></f7-list-item>
<f7-list-item <f7-list-item
:title="$t('Sort By')" :title="$t('Sort By')"
smart-select :smart-select-params="{ openIn: 'sheet', closeOnSelect: true, sheetCloseLinkText: $t('Done'), scrollToSelectedItem: true }"> smart-select :smart-select-params="{ openIn: 'sheet', closeOnSelect: true, sheetCloseLinkText: $t('Done'), scrollToSelectedItem: true }">
@@ -401,6 +401,8 @@ export default {
endTime: dateRange ? dateRange.maxTime : undefined, endTime: dateRange ? dateRange.maxTime : undefined,
chartType: defaultChartType, chartType: defaultChartType,
chartDataType: defaultChartDataType, chartDataType: defaultChartDataType,
filterAccountIds: self.$settings.getStatisticsDefaultAccountFilter() || {},
filterCategoryIds: self.$settings.getStatisticsDefaultTransactionCategoryFilter() || {},
}); });
Promise.all([ Promise.all([