diff --git a/src/lib/datetime.js b/src/lib/datetime.js index d37cd847..4560f386 100644 --- a/src/lib/datetime.js +++ b/src/lib/datetime.js @@ -258,6 +258,31 @@ export function getShiftedDateRange(minTime, maxTime, scale) { }; } +export function getShiftedDateRangeAndDateType(minTime, maxTime, scale, firstDayOfWeek) { + const newDateRange = getShiftedDateRange(minTime, maxTime, scale); + let newDateType = dateTimeConstants.allDateRanges.Custom.type; + + for (let dateRangeField in dateTimeConstants.allDateRanges) { + if (!Object.prototype.hasOwnProperty.call(dateTimeConstants.allDateRanges, dateRangeField)) { + continue; + } + + const dateRangeType = dateTimeConstants.allDateRanges[dateRangeField]; + const dateRange = getDateRangeByDateType(dateRangeType.type, firstDayOfWeek); + + if (dateRange && dateRange.minTime === newDateRange.minTime && dateRange.maxTime === newDateRange.maxTime) { + newDateType = dateRangeType.type; + break; + } + } + + return { + dateType: newDateType, + minTime: newDateRange.minTime, + maxTime: newDateRange.maxTime + }; +} + export function getDateRangeByDateType(dateType, firstDayOfWeek) { let maxTime = 0; let minTime = 0; diff --git a/src/views/desktop/statistics/TransactionPage.vue b/src/views/desktop/statistics/TransactionPage.vue index 3b2780c8..ec51d8b7 100644 --- a/src/views/desktop/statistics/TransactionPage.vue +++ b/src/views/desktop/statistics/TransactionPage.vue @@ -229,7 +229,7 @@ import datetimeConstants from '@/consts/datetime.js'; import statisticsConstants from '@/consts/statistics.js'; import { getNameByKeyValue, limitText, formatPercent } from '@/lib/common.js' import { - getShiftedDateRange, + getShiftedDateRangeAndDateType, getDateRangeByDateType } from '@/lib/datetime.js'; @@ -518,25 +518,10 @@ export default { return; } - const newDateRange = getShiftedDateRange(startTime, endTime, scale); - let newDateType = this.allDateRanges.Custom.type; - - for (let dateRangeField in this.allDateRanges) { - if (!Object.prototype.hasOwnProperty.call(this.allDateRanges, dateRangeField)) { - continue; - } - - const dateRangeType = this.allDateRanges[dateRangeField]; - const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek); - - if (dateRange && dateRange.minTime === newDateRange.minTime && dateRange.maxTime === newDateRange.maxTime) { - newDateType = dateRangeType.type; - break; - } - } + const newDateRange = getShiftedDateRangeAndDateType(startTime, endTime, scale, this.firstDayOfWeek); this.statisticsStore.updateTransactionStatisticsFilter({ - dateType: newDateType, + dateType: newDateRange.dateType, startTime: newDateRange.minTime, endTime: newDateRange.maxTime }); diff --git a/src/views/mobile/statistics/TransactionPage.vue b/src/views/mobile/statistics/TransactionPage.vue index 9bc6acdf..681135f3 100644 --- a/src/views/mobile/statistics/TransactionPage.vue +++ b/src/views/mobile/statistics/TransactionPage.vue @@ -261,7 +261,7 @@ import datetimeConstants from '@/consts/datetime.js'; import statisticsConstants from '@/consts/statistics.js'; import { getNameByKeyValue, limitText, formatPercent } from '@/lib/common.js' import { - getShiftedDateRange, + getShiftedDateRangeAndDateType, getDateRangeByDateType } from '@/lib/datetime.js'; @@ -527,25 +527,10 @@ export default { return; } - const newDateRange = getShiftedDateRange(startTime, endTime, scale); - let newDateType = this.allDateRanges.Custom.type; - - for (let dateRangeField in this.allDateRanges) { - if (!Object.prototype.hasOwnProperty.call(this.allDateRanges, dateRangeField)) { - continue; - } - - const dateRangeType = this.allDateRanges[dateRangeField]; - const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek); - - if (dateRange && dateRange.minTime === newDateRange.minTime && dateRange.maxTime === newDateRange.maxTime) { - newDateType = dateRangeType.type; - break; - } - } + const newDateRange = getShiftedDateRangeAndDateType(startTime, endTime, scale, this.firstDayOfWeek); this.statisticsStore.updateTransactionStatisticsFilter({ - dateType: newDateType, + dateType: newDateRange.dateType, startTime: newDateRange.minTime, endTime: newDateRange.maxTime });