diff --git a/src/lib/settings.js b/src/lib/settings.js index 5ba09d7e..63a26616 100644 --- a/src/lib/settings.js +++ b/src/lib/settings.js @@ -19,6 +19,8 @@ const defaultSettings = { defaultChartType: statisticsConstants.defaultChartType, defaultChartDataType: statisticsConstants.defaultChartDataType, defaultDataRangeType: statisticsConstants.defaultDataRangeType, + defaultAccountFilter: {}, + defaultTransactionCategoryFilter: {}, sortingType: statisticsConstants.defaultSortingType }, animate: true, @@ -134,6 +136,10 @@ export default { setStatisticsDefaultChartDataType: value => setSubOption('statistics', 'defaultChartDataType', value), getStatisticsDefaultDateRange: () => getSubOption('statistics', 'defaultDataRangeType'), 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'), setStatisticsSortingType: value => setSubOption('statistics', 'sortingType', value), isEnableAnimate: () => getOption('animate'), diff --git a/src/locales/en.js b/src/locales/en.js index 5cb7dec3..a3ece3ef 100644 --- a/src/locales/en.js +++ b/src/locales/en.js @@ -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 Account Filter', + 'Default Transaction Category Filter': 'Default Transaction Category Filter', 'Sort By': 'Sort By', 'By Amount': 'By Amount', 'By Display Order': 'By Display Order', diff --git a/src/locales/zh_Hans.js b/src/locales/zh_Hans.js index bcda7d0b..9af70afc 100644 --- a/src/locales/zh_Hans.js +++ b/src/locales/zh_Hans.js @@ -669,6 +669,8 @@ export default { 'Default Chart Type': '默认图表类型', 'Default Chart Data Type': '默认图表数据类型', 'Default Date Range': '默认时间范围', + 'Default Account Filter': '默认账号过滤', + 'Default Transaction Category Filter': '默认交易分类过滤', 'Sort By': '排序方式', 'By Amount': '金额', 'By Display Order': '显示顺序', diff --git a/src/views/mobile/statistics/AccountFilterSettings.vue b/src/views/mobile/statistics/AccountFilterSettings.vue index dafae06c..34d2c49b 100644 --- a/src/views/mobile/statistics/AccountFilterSettings.vue +++ b/src/views/mobile/statistics/AccountFilterSettings.vue @@ -2,7 +2,7 @@ - + @@ -104,11 +104,19 @@ export default { data: function () { return { loading: true, + modifyDefault: false, filterAccountIds: {}, showMoreActionSheet: false } }, computed: { + title() { + if (this.modifyDefault) { + return 'Default Account Filter'; + } else { + return 'Filter Accounts'; + } + }, allAccountCategories() { return this.$constants.account.allCategories; }, @@ -118,8 +126,11 @@ export default { }, created() { const self = this; + const query = self.$f7route.query; const router = self.$f7router; + self.modifyDefault = !!query.modifyDefault; + self.$store.dispatch('loadAllAccounts', { force: false }).then(() => { @@ -136,7 +147,11 @@ export default { 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 => { self.logining = false; @@ -163,9 +178,13 @@ export default { } } - self.$store.dispatch('updateTransactionStatisticsFilter', { - filterAccountIds: filteredAccountIds - }); + if (self.modifyDefault) { + self.$settings.setStatisticsDefaultAccountFilter(filteredAccountIds); + } else { + self.$store.dispatch('updateTransactionStatisticsFilter', { + filterAccountIds: filteredAccountIds + }); + } router.back(); }, diff --git a/src/views/mobile/statistics/CategoryFilterSettings.vue b/src/views/mobile/statistics/CategoryFilterSettings.vue index e661f557..6b0f7e42 100644 --- a/src/views/mobile/statistics/CategoryFilterSettings.vue +++ b/src/views/mobile/statistics/CategoryFilterSettings.vue @@ -2,7 +2,7 @@ - + @@ -109,19 +109,30 @@ export default { data: function () { return { loading: true, + modifyDefault: false, filterCategoryIds: {}, showMoreActionSheet: false } }, computed: { + title() { + if (this.modifyDefault) { + return 'Default Transaction Category Filter'; + } else { + return 'Filter Transaction Categories'; + } + }, allTransactionCategories: function () { return this.$store.state.allTransactionCategories; } }, created() { const self = this; + const query = self.$f7route.query; const router = self.$f7router; + self.modifyDefault = !!query.modifyDefault; + self.$store.dispatch('loadAllCategories', { force: false }).then(() => { @@ -138,7 +149,11 @@ export default { 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 => { self.logining = false; @@ -165,9 +180,13 @@ export default { } } - self.$store.dispatch('updateTransactionStatisticsFilter', { - filterCategoryIds: filteredCategoryIds - }); + if (self.modifyDefault) { + self.$settings.setStatisticsDefaultTransactionCategoryFilter(filteredCategoryIds); + } else { + self.$store.dispatch('updateTransactionStatisticsFilter', { + filterCategoryIds: filteredCategoryIds + }); + } router.back(); }, diff --git a/src/views/mobile/statistics/Settings.vue b/src/views/mobile/statistics/Settings.vue index dd74a030..33847022 100644 --- a/src/views/mobile/statistics/Settings.vue +++ b/src/views/mobile/statistics/Settings.vue @@ -34,6 +34,10 @@ + + + + diff --git a/src/views/mobile/statistics/Transaction.vue b/src/views/mobile/statistics/Transaction.vue index fc5bfcd7..3f1926fb 100644 --- a/src/views/mobile/statistics/Transaction.vue +++ b/src/views/mobile/statistics/Transaction.vue @@ -401,6 +401,8 @@ export default { endTime: dateRange ? dateRange.maxTime : undefined, chartType: defaultChartType, chartDataType: defaultChartDataType, + filterAccountIds: self.$settings.getStatisticsDefaultAccountFilter() || {}, + filterCategoryIds: self.$settings.getStatisticsDefaultTransactionCategoryFilter() || {}, }); Promise.all([