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,
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'),
+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 Account Filter',
'Default Transaction Category Filter': 'Default Transaction Category Filter',
'Sort By': 'Sort By',
'By Amount': 'By Amount',
'By Display Order': 'By Display Order',
+2
View File
@@ -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': '显示顺序',
@@ -2,7 +2,7 @@
<f7-page>
<f7-navbar>
<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-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link>
<f7-link :text="$t('Save')" @click="save"></f7-link>
@@ -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();
},
@@ -2,7 +2,7 @@
<f7-page>
<f7-navbar>
<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-link icon-f7="ellipsis" @click="showMoreActionSheet = true"></f7-link>
<f7-link :text="$t('Save')" @click="save"></f7-link>
@@ -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();
},
+4
View File
@@ -34,6 +34,10 @@
</select>
</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
:title="$t('Sort By')"
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,
chartType: defaultChartType,
chartDataType: defaultChartDataType,
filterAccountIds: self.$settings.getStatisticsDefaultAccountFilter() || {},
filterCategoryIds: self.$settings.getStatisticsDefaultTransactionCategoryFilter() || {},
});
Promise.all([