diff --git a/src/lib/datetime.js b/src/lib/datetime.js index 88bf64d6..7e6b7fcf 100644 --- a/src/lib/datetime.js +++ b/src/lib/datetime.js @@ -366,6 +366,16 @@ export function getShiftedDateRange(minTime, maxTime, scale) { export function getShiftedDateRangeAndDateType(minTime, maxTime, scale, firstDayOfWeek, scene) { const newDateRange = getShiftedDateRange(minTime, maxTime, scale); + const newDateType = getDateTypeByDateRange(newDateRange.minTime, newDateRange.maxTime, firstDayOfWeek, scene); + + return { + dateType: newDateType, + minTime: newDateRange.minTime, + maxTime: newDateRange.maxTime + }; +} + +export function getDateTypeByDateRange(minTime, maxTime, firstDayOfWeek, scene) { let newDateType = dateTimeConstants.allDateRanges.Custom.type; for (let dateRangeField in dateTimeConstants.allDateRanges) { @@ -381,17 +391,13 @@ export function getShiftedDateRangeAndDateType(minTime, maxTime, scale, firstDay const dateRange = getDateRangeByDateType(dateRangeType.type, firstDayOfWeek); - if (dateRange && dateRange.minTime === newDateRange.minTime && dateRange.maxTime === newDateRange.maxTime) { + if (dateRange && dateRange.minTime === minTime && dateRange.maxTime === maxTime) { newDateType = dateRangeType.type; break; } } - return { - dateType: newDateType, - minTime: newDateRange.minTime, - maxTime: newDateRange.maxTime - }; + return newDateType; } export function getDateRangeByDateType(dateType, firstDayOfWeek) { diff --git a/src/views/desktop/statistics/TransactionPage.vue b/src/views/desktop/statistics/TransactionPage.vue index 25d71818..a7de0b18 100644 --- a/src/views/desktop/statistics/TransactionPage.vue +++ b/src/views/desktop/statistics/TransactionPage.vue @@ -274,6 +274,7 @@ import { getYearMonthFirstUnixTime, getYearMonthLastUnixTime, getShiftedDateRangeAndDateType, + getDateTypeByDateRange, getDateRangeByDateType } from '@/lib/datetime.js'; import { isChartDataTypeAvailableForAnalysisType } from '@/lib/statistics.js'; @@ -648,16 +649,20 @@ export default { } if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { + const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); + this.statisticsStore.updateTransactionStatisticsFilter({ - categoricalChartDateType: this.allDateRanges.Custom.type, + categoricalChartDateType: chartDateType, categoricalChartStartTime: startTime, categoricalChartEndTime: endTime }); this.showCustomDateRangeDialog = false; } else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { + const chartDateType = getDateTypeByDateRange(getYearMonthFirstUnixTime(startTime), getYearMonthLastUnixTime(endTime), this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.TrendAnalysis); + this.statisticsStore.updateTransactionStatisticsFilter({ - trendChartDateType: this.allDateRanges.Custom.type, + trendChartDateType: chartDateType, trendChartStartYearMonth: startTime, trendChartEndYearMonth: endTime }); diff --git a/src/views/desktop/transactions/ListPage.vue b/src/views/desktop/transactions/ListPage.vue index 919c602a..75bd8fb1 100644 --- a/src/views/desktop/transactions/ListPage.vue +++ b/src/views/desktop/transactions/ListPage.vue @@ -371,6 +371,7 @@ import { getBrowserTimezoneOffsetMinutes, getActualUnixTimeForStore, getShiftedDateRangeAndDateType, + getDateTypeByDateRange, getDateRangeByDateType, getRecentDateRangeType, isDateRangeMatchOneMonth @@ -797,8 +798,10 @@ export default { return; } + const dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); + this.transactionsStore.updateTransactionListFilter({ - dateType: datetimeConstants.allDateRanges.Custom.type, + dateType: dateType, maxTime: maxTime, minTime: minTime }); diff --git a/src/views/mobile/statistics/TransactionPage.vue b/src/views/mobile/statistics/TransactionPage.vue index db1ec34f..b1b3df82 100644 --- a/src/views/mobile/statistics/TransactionPage.vue +++ b/src/views/mobile/statistics/TransactionPage.vue @@ -261,6 +261,7 @@ import statisticsConstants from '@/consts/statistics.js'; import { getNameByKeyValue, limitText, formatPercent } from '@/lib/common.js' import { getShiftedDateRangeAndDateType, + getDateTypeByDateRange, getDateRangeByDateType } from '@/lib/datetime.js'; import { scrollToSelectedItem } from '@/lib/ui.mobile.js'; @@ -492,8 +493,10 @@ export default { return; } + const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); + this.statisticsStore.updateTransactionStatisticsFilter({ - categoricalChartDateType: this.allDateRanges.Custom.type, + categoricalChartDateType: chartDateType, categoricalChartStartTime: startTime, categoricalChartEndTime: endTime }); diff --git a/src/views/mobile/transactions/ListPage.vue b/src/views/mobile/transactions/ListPage.vue index ebcb6289..2c665e47 100644 --- a/src/views/mobile/transactions/ListPage.vue +++ b/src/views/mobile/transactions/ListPage.vue @@ -439,6 +439,7 @@ import { getBrowserTimezoneOffsetMinutes, getActualUnixTimeForStore, getShiftedDateRangeAndDateType, + getDateTypeByDateRange, getDateRangeByDateType } from '@/lib/datetime.js'; import { categoryTypeToTransactionType, transactionTypeToCategoryType } from '@/lib/category.js'; @@ -720,8 +721,10 @@ export default { return; } + const dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); + this.transactionsStore.updateTransactionListFilter({ - dateType: this.allDateRanges.Custom.type, + dateType: dateType, maxTime: maxTime, minTime: minTime });