migrate consts/datetime.js to ts

This commit is contained in:
MaysWind
2025-01-02 00:31:28 +08:00
parent 5525635df1
commit ad9a390b58
22 changed files with 633 additions and 665 deletions
@@ -59,7 +59,7 @@ import { useTheme } from 'vuetify';
import { mapStores } from 'pinia'; import { mapStores } from 'pinia';
import { useUserStore } from '@/stores/user.js'; import { useUserStore } from '@/stores/user.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRange } from '@/core/datetime.ts';
import { ThemeType } from '@/core/theme.ts'; import { ThemeType } from '@/core/theme.ts';
import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts';
import { import {
@@ -149,12 +149,12 @@ export default {
const presetRanges = []; const presetRanges = [];
[ [
datetimeConstants.allDateRanges.Today, DateRange.Today,
datetimeConstants.allDateRanges.LastSevenDays, DateRange.LastSevenDays,
datetimeConstants.allDateRanges.LastThirtyDays, DateRange.LastThirtyDays,
datetimeConstants.allDateRanges.ThisWeek, DateRange.ThisWeek,
datetimeConstants.allDateRanges.ThisMonth, DateRange.ThisMonth,
datetimeConstants.allDateRanges.ThisYear DateRange.ThisYear
].forEach(dateRangeType => { ].forEach(dateRangeType => {
const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek); const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek);
+4 -4
View File
@@ -10,10 +10,10 @@ import { mapStores } from 'pinia';
import { useSettingsStore } from '@/stores/setting.js'; import { useSettingsStore } from '@/stores/setting.js';
import { useUserStore } from '@/stores/user.js'; import { useUserStore } from '@/stores/user.js';
import { DEFAULT_ICON_COLOR, DEFAULT_CHART_COLORS } from '@/consts/color.ts'; import { DateRangeScene } from '@/core/datetime.ts';
import datetimeConstants from '@/consts/datetime.js';
import statisticsConstants from '@/consts/statistics.js';
import { ThemeType } from '@/core/theme.ts'; import { ThemeType } from '@/core/theme.ts';
import { DEFAULT_ICON_COLOR, DEFAULT_CHART_COLORS } from '@/consts/color.ts';
import statisticsConstants from '@/consts/statistics.js';
import { import {
isArray, isArray,
isNumber isNumber
@@ -376,7 +376,7 @@ export default {
} }
} }
const dateRangeType = getDateTypeByDateRange(minUnixTime, maxUnixTime, this.userStore.currentUserFirstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const dateRangeType = getDateTypeByDateRange(minUnixTime, maxUnixTime, this.userStore.currentUserFirstDayOfWeek, DateRangeScene.Normal);
this.$emit('click', { this.$emit('click', {
itemId: itemId, itemId: itemId,
@@ -56,7 +56,7 @@
import { mapStores } from 'pinia'; import { mapStores } from 'pinia';
import { useUserStore } from '@/stores/user.js'; import { useUserStore } from '@/stores/user.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRange } from '@/core/datetime.ts';
import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts';
import { import {
getCurrentUnixTime, getCurrentUnixTime,
@@ -136,12 +136,12 @@ export default {
const presetRanges = []; const presetRanges = [];
[ [
datetimeConstants.allDateRanges.Today, DateRange.Today,
datetimeConstants.allDateRanges.LastSevenDays, DateRange.LastSevenDays,
datetimeConstants.allDateRanges.LastThirtyDays, DateRange.LastThirtyDays,
datetimeConstants.allDateRanges.ThisWeek, DateRange.ThisWeek,
datetimeConstants.allDateRanges.ThisMonth, DateRange.ThisMonth,
datetimeConstants.allDateRanges.ThisYear DateRange.ThisYear
].forEach(dateRangeType => { ].forEach(dateRangeType => {
const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek); const dateRange = getDateRangeByDateType(dateRangeType.type, this.firstDayOfWeek);
@@ -52,7 +52,6 @@
import { mapStores } from 'pinia'; import { mapStores } from 'pinia';
import { useUserStore } from '@/stores/user.js'; import { useUserStore } from '@/stores/user.js';
import datetimeConstants from '@/consts/datetime.js';
import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts'; import { arrangeArrayWithNewStartIndex } from '@/lib/common.ts';
import { import {
getCurrentUnixTime, getCurrentUnixTime,
@@ -202,19 +201,15 @@ export default {
return getTimeValues(datetime, this.is24Hour, this.isMeridiemIndicatorFirst); return getTimeValues(datetime, this.is24Hour, this.isMeridiemIndicatorFirst);
}, },
getTimePickerColumns() { getTimePickerColumns() {
const self = this;
const ret = []; const ret = [];
if (!self.is24Hour && this.isMeridiemIndicatorFirst) { if (!this.is24Hour && this.isMeridiemIndicatorFirst) {
ret.push({ ret.push(this.$locale.getAllMeridiemIndicators());
values: datetimeConstants.allMeridiemIndicatorsArray,
displayValues: self.$locale.getAllMeridiemIndicatorNames()
});
} }
// Hours // Hours
ret.push({ ret.push({
values: self.generateAllHours() values: this.generateAllHours()
}); });
// Divider // Divider
ret.push({ ret.push({
@@ -223,7 +218,7 @@ export default {
}); });
// Minutes // Minutes
ret.push({ ret.push({
values: self.generateAllMinutesOrSeconds() values: this.generateAllMinutesOrSeconds()
}); });
// Divider // Divider
ret.push({ ret.push({
@@ -232,14 +227,11 @@ export default {
}); });
// Seconds // Seconds
ret.push({ ret.push({
values: self.generateAllMinutesOrSeconds() values: this.generateAllMinutesOrSeconds()
}); });
if (!self.is24Hour && !this.isMeridiemIndicatorFirst) { if (!this.is24Hour && !this.isMeridiemIndicatorFirst) {
ret.push({ ret.push(this.$locale.getAllMeridiemIndicators());
values: datetimeConstants.allMeridiemIndicatorsArray,
displayValues: self.$locale.getAllMeridiemIndicatorNames()
});
} }
return ret; return ret;
+2 -2
View File
@@ -93,8 +93,8 @@ import { mapStores } from 'pinia';
import { useSettingsStore } from '@/stores/setting.js'; import { useSettingsStore } from '@/stores/setting.js';
import { useUserStore } from '@/stores/user.js'; import { useUserStore } from '@/stores/user.js';
import { DateRangeScene } from '@/core/datetime.ts';
import { DEFAULT_ICON_COLOR, DEFAULT_CHART_COLORS } from '@/consts/color.ts'; import { DEFAULT_ICON_COLOR, DEFAULT_CHART_COLORS } from '@/consts/color.ts';
import datetimeConstants from '@/consts/datetime.js';
import statisticsConstants from '@/consts/statistics.js'; import statisticsConstants from '@/consts/statistics.js';
import { isNumber } from '@/lib/common.ts'; import { isNumber } from '@/lib/common.ts';
import { import {
@@ -303,7 +303,7 @@ export default {
} }
} }
const dateRangeType = getDateTypeByDateRange(minUnixTime, maxUnixTime, this.userStore.currentUserFirstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const dateRangeType = getDateTypeByDateRange(minUnixTime, maxUnixTime, this.userStore.currentUserFirstDayOfWeek, DateRangeScene.Normal);
this.$emit('click', { this.$emit('click', {
itemId: itemId, itemId: itemId,
-381
View File
@@ -1,381 +0,0 @@
const allMeridiemIndicators = {
AM: 'AM',
PM: 'PM'
};
const allMeridiemIndicatorsArray = [
allMeridiemIndicators.AM,
allMeridiemIndicators.PM
];
const allMonthsArray = [
'January',
'February',
'March',
'April',
'May',
'June',
'July',
'August',
'September',
'October',
'November',
'December'
];
const allWeekDays = {
Sunday: {
type: 0,
name: 'Sunday'
},
Monday: {
type: 1,
name: 'Monday'
},
Tuesday: {
type: 2,
name: 'Tuesday'
},
Wednesday: {
type: 3,
name: 'Wednesday'
},
Thursday: {
type: 4,
name: 'Thursday'
},
Friday: {
type: 5,
name: 'Friday'
},
Saturday: {
type: 6,
name: 'Saturday'
}
};
const allWeekDaysArray = [
allWeekDays.Sunday,
allWeekDays.Monday,
allWeekDays.Tuesday,
allWeekDays.Wednesday,
allWeekDays.Thursday,
allWeekDays.Friday,
allWeekDays.Saturday
];
const allLongDateFormat = {
YYYYMMDD: {
type: 1,
key: 'yyyy_mm_dd',
isMonthAfterYear: true
},
MMDDYYYY: {
type: 2,
key: 'mm_dd_yyyy',
isMonthAfterYear: false
},
DDMMYYYY: {
type: 3,
key: 'dd_mm_yyyy',
isMonthAfterYear: false
}
};
const allLongDateFormatArray = [
allLongDateFormat.YYYYMMDD,
allLongDateFormat.MMDDYYYY,
allLongDateFormat.DDMMYYYY
];
const allShortDateFormat = {
YYYYMMDD: {
type: 1,
key: 'yyyy_mm_dd',
isMonthAfterYear: true
},
MMDDYYYY: {
type: 2,
key: 'mm_dd_yyyy',
isMonthAfterYear: false
},
DDMMYYYY: {
type: 3,
key: 'dd_mm_yyyy',
isMonthAfterYear: false
}
};
const allShortDateFormatArray = [
allShortDateFormat.YYYYMMDD,
allShortDateFormat.MMDDYYYY,
allShortDateFormat.DDMMYYYY
];
const allLongTimeFormat = {
HHMMSS: {
type: 1,
key: 'hh_mm_ss',
is24HourFormat: true,
isMeridiemIndicatorFirst: null
},
AHHMMSS: {
type: 2,
key: 'a_hh_mm_ss',
is24HourFormat: false,
isMeridiemIndicatorFirst: true
},
HHMMSSA: {
type: 3,
key: 'hh_mm_ss_a',
is24HourFormat: false,
isMeridiemIndicatorFirst: false
}
};
const allLongTimeFormatArray = [
allLongTimeFormat.HHMMSS,
allLongTimeFormat.AHHMMSS,
allLongTimeFormat.HHMMSSA
];
const allShortTimeFormat = {
HHMM: {
type: 1,
key: 'hh_mm',
is24HourFormat: true,
isMeridiemIndicatorFirst: null
},
AHHMM: {
type: 2,
key: 'a_hh_mm',
is24HourFormat: false,
isMeridiemIndicatorFirst: true
},
HHMMA: {
type: 3,
key: 'hh_mm_a',
is24HourFormat: false,
isMeridiemIndicatorFirst: false
}
};
const allShortTimeFormatArray = [
allShortTimeFormat.HHMM,
allShortTimeFormat.AHHMM,
allShortTimeFormat.HHMMA
];
const allDateRangeScenes = {
Normal: 0,
TrendAnalysis: 1
};
const allDateRanges = {
All: {
type: 0,
name: 'All',
availableScenes: {
[allDateRangeScenes.Normal]: true,
[allDateRangeScenes.TrendAnalysis]: true
}
},
Today: {
type: 1,
name: 'Today',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
Yesterday: {
type: 2,
name: 'Yesterday',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
LastSevenDays: {
type: 3,
name: 'Recent 7 days',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
LastThirtyDays: {
type: 4,
name: 'Recent 30 days',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
ThisWeek: {
type: 5,
name: 'This week',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
LastWeek: {
type: 6,
name: 'Last week',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
ThisMonth: {
type: 7,
name: 'This month',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
LastMonth: {
type: 8,
name: 'Last month',
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
ThisYear: {
type: 9,
name: 'This year',
availableScenes: {
[allDateRangeScenes.Normal]: true,
[allDateRangeScenes.TrendAnalysis]: true
}
},
LastYear: {
type: 10,
name: 'Last year',
availableScenes: {
[allDateRangeScenes.Normal]: true,
[allDateRangeScenes.TrendAnalysis]: true
}
},
PreviousBillingCycle: {
type: 51,
name: 'Previous Billing Cycle',
isBillingCycle: true,
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
CurrentBillingCycle: {
type: 52,
name: 'Current Billing Cycle',
isBillingCycle: true,
availableScenes: {
[allDateRangeScenes.Normal]: true
}
},
RecentTwelveMonths: {
type: 101,
name: 'Recent 12 months',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
RecentTwentyFourMonths: {
type: 102,
name: 'Recent 24 months',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
RecentThirtySixMonths: {
type: 103,
name: 'Recent 36 months',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
RecentTwoYears: {
type: 104,
name: 'Recent 2 years',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
RecentThreeYears: {
type: 105,
name: 'Recent 3 years',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
RecentFiveYears: {
type: 106,
name: 'Recent 5 years',
availableScenes: {
[allDateRangeScenes.TrendAnalysis]: true
}
},
Custom: {
type: 255,
name: 'Custom Date',
availableScenes: {
[allDateRangeScenes.Normal]: true,
[allDateRangeScenes.TrendAnalysis]: true
}
}
};
const allDateRangesMap = {
[allDateRanges.All.type]: allDateRanges.All,
[allDateRanges.Today.type]: allDateRanges.Today,
[allDateRanges.Yesterday.type]: allDateRanges.Yesterday,
[allDateRanges.LastSevenDays.type]: allDateRanges.LastSevenDays,
[allDateRanges.LastThirtyDays.type]: allDateRanges.LastThirtyDays,
[allDateRanges.ThisWeek.type]: allDateRanges.ThisWeek,
[allDateRanges.LastWeek.type]: allDateRanges.LastWeek,
[allDateRanges.ThisMonth.type]: allDateRanges.ThisMonth,
[allDateRanges.LastMonth.type]: allDateRanges.LastMonth,
[allDateRanges.ThisYear.type]: allDateRanges.ThisYear,
[allDateRanges.LastYear.type]: allDateRanges.LastYear,
[allDateRanges.PreviousBillingCycle.type]: allDateRanges.PreviousBillingCycle,
[allDateRanges.CurrentBillingCycle.type]: allDateRanges.CurrentBillingCycle,
[allDateRanges.RecentTwentyFourMonths.type]: allDateRanges.RecentTwentyFourMonths,
[allDateRanges.RecentThirtySixMonths.type]: allDateRanges.RecentThirtySixMonths,
[allDateRanges.RecentTwoYears.type]: allDateRanges.RecentTwoYears,
[allDateRanges.RecentThreeYears.type]: allDateRanges.RecentThreeYears,
[allDateRanges.RecentFiveYears.type]: allDateRanges.RecentFiveYears,
[allDateRanges.Custom.type]: allDateRanges.Custom
};
const allBillingCycleDateRangesMap = {
[allDateRanges.PreviousBillingCycle.type]: allDateRanges.PreviousBillingCycle,
[allDateRanges.CurrentBillingCycle.type]: allDateRanges.CurrentBillingCycle
};
const defaultFirstDayOfWeek = allWeekDays.Sunday.type;
const defaultLongDateFormat = allLongDateFormat.YYYYMMDD;
const defaultShortDateFormat = allShortDateFormat.YYYYMMDD;
const defaultLongTimeFormat = allLongTimeFormat.HHMMSS;
const defaultShortTimeFormat = allShortTimeFormat.HHMM;
const defaultDateTimeFormatValue = 0;
export default {
allMeridiemIndicators: allMeridiemIndicators,
allMeridiemIndicatorsArray: allMeridiemIndicatorsArray,
allWeekDays: allWeekDays,
allWeekDaysArray: allWeekDaysArray,
allMonthsArray: allMonthsArray,
allLongDateFormat: allLongDateFormat,
allLongDateFormatArray: allLongDateFormatArray,
allShortDateFormat: allShortDateFormat,
allShortDateFormatArray: allShortDateFormatArray,
allLongTimeFormat: allLongTimeFormat,
allLongTimeFormatArray: allLongTimeFormatArray,
allShortTimeFormat: allShortTimeFormat,
allShortTimeFormatArray: allShortTimeFormatArray,
allDateRangeScenes: allDateRangeScenes,
allDateRanges: allDateRanges,
allDateRangesMap: allDateRangesMap,
allBillingCycleDateRangesMap: allBillingCycleDateRangesMap,
defaultFirstDayOfWeek: defaultFirstDayOfWeek,
defaultLongDateFormat: defaultLongDateFormat,
defaultShortDateFormat: defaultShortDateFormat,
defaultLongTimeFormat: defaultLongTimeFormat,
defaultShortTimeFormat: defaultShortTimeFormat,
defaultDateTimeFormatValue: defaultDateTimeFormatValue,
};
+3 -3
View File
@@ -1,4 +1,4 @@
import datetime from './datetime.js'; import { DateRange } from '@/core/datetime.ts';
const allAnalysisTypes = { const allAnalysisTypes = {
CategoricalAnalysis: 0, CategoricalAnalysis: 0,
@@ -203,8 +203,8 @@ export default {
allChartDataTypes: allChartDataTypes, allChartDataTypes: allChartDataTypes,
allChartDataTypesMap: allChartDataTypesMap, allChartDataTypesMap: allChartDataTypesMap,
defaultChartDataType: defaultChartDataType, defaultChartDataType: defaultChartDataType,
defaultCategoricalChartDataRangeType: datetime.allDateRanges.ThisMonth.type, defaultCategoricalChartDataRangeType: DateRange.ThisMonth.type,
defaultTrendChartDataRangeType: datetime.allDateRanges.ThisYear.type, defaultTrendChartDataRangeType: DateRange.ThisYear.type,
allSortingTypes: allSortingTypes, allSortingTypes: allSortingTypes,
allSortingTypesArray: allSortingTypesArray, allSortingTypesArray: allSortingTypesArray,
defaultSortingType: defaultSortingType, defaultSortingType: defaultSortingType,
+365 -3
View File
@@ -1,3 +1,78 @@
import type { TypeAndName } from '@/core/base.ts';
export class Month {
private static readonly allInstances: Month[] = [];
public static readonly January = new Month(1, 'January');
public static readonly February = new Month(2, 'February');
public static readonly March = new Month(3, 'March');
public static readonly April = new Month(4, 'April');
public static readonly May = new Month(5, 'May');
public static readonly June = new Month(6, 'June');
public static readonly July = new Month(7, 'July');
public static readonly August = new Month(8, 'August');
public static readonly September = new Month(9, 'September');
public static readonly October = new Month(10, 'October');
public static readonly November = new Month(11, 'November');
public static readonly December = new Month(12, 'December');
public readonly month: number;
public readonly name: string;
private constructor(month: number, name: string) {
this.month = month;
this.name = name;
Month.allInstances.push(this);
}
public static values(): Month[] {
return Month.allInstances;
}
public static valueOf(month: number): Month {
return Month.allInstances[month - 1];
}
}
export class WeekDay implements TypeAndName {
private static readonly allInstances: WeekDay[] = [];
private static readonly allInstancesByName: Record<string, WeekDay> = {};
public static readonly Sunday = new WeekDay(0, 'Sunday');
public static readonly Monday = new WeekDay(1, 'Monday');
public static readonly Tuesday = new WeekDay(2, 'Tuesday');
public static readonly Wednesday = new WeekDay(3, 'Wednesday');
public static readonly Thursday = new WeekDay(4, 'Thursday');
public static readonly Friday = new WeekDay(5, 'Friday');
public static readonly Saturday = new WeekDay(6, 'Saturday');
public static readonly DefaultFirstDay = WeekDay.Sunday;
public readonly type: number;
public readonly name: string;
private constructor(type: number, name: string) {
this.type = type;
this.name = name;
WeekDay.allInstances.push(this);
WeekDay.allInstancesByName[name] = this;
}
public static values(): WeekDay[] {
return WeekDay.allInstances;
}
public static valueOf(dayOfWeek: number): WeekDay {
return WeekDay.allInstances[dayOfWeek];
}
public static parse(typeName: string): WeekDay {
return WeekDay.allInstancesByName[typeName];
}
}
export class MeridiemIndicator { export class MeridiemIndicator {
private static readonly allInstances: MeridiemIndicator[] = []; private static readonly allInstances: MeridiemIndicator[] = [];
@@ -5,11 +80,11 @@ export class MeridiemIndicator {
public static readonly PM = new MeridiemIndicator(1, 'PM'); public static readonly PM = new MeridiemIndicator(1, 'PM');
public readonly type: number; public readonly type: number;
public readonly value: string; public readonly name: string;
private constructor(type: number, value: string) { private constructor(type: number, name: string) {
this.type = type; this.type = type;
this.value = value; this.name = name;
MeridiemIndicator.allInstances.push(this); MeridiemIndicator.allInstances.push(this);
} }
@@ -18,3 +93,290 @@ export class MeridiemIndicator {
return MeridiemIndicator.allInstances; return MeridiemIndicator.allInstances;
} }
} }
export const LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE: number = 0;
export interface DateFormat {
readonly type: number;
readonly key: string;
readonly isMonthAfterYear: boolean;
}
type DateFormatTypeName = 'YYYYMMDD' | 'MMDDYYYY' | 'DDMMYYYY';
export class LongDateFormat implements DateFormat {
private static readonly allInstances: LongDateFormat[] = [];
private static readonly allInstancesByType: Record<number, LongDateFormat> = {};
private static readonly allInstancesByTypeName: Record<string, LongDateFormat> = {};
public static readonly YYYYMMDD = new LongDateFormat(1, 'YYYYMMDD', 'yyyy_mm_dd', true);
public static readonly MMDDYYYY = new LongDateFormat(2, 'MMDDYYYY', 'mm_dd_yyyy', false);
public static readonly DDMMYYYY = new LongDateFormat(3, 'DDMMYYYY', 'dd_mm_yyyy', false);
public static readonly Default = LongDateFormat.YYYYMMDD;
public readonly type: number;
public readonly typeName: string;
public readonly key: string;
public readonly isMonthAfterYear: boolean;
private constructor(type: number, typeName: DateFormatTypeName, key: string, isMonthAfterYear: boolean) {
this.type = type;
this.typeName = typeName;
this.key = key;
this.isMonthAfterYear = isMonthAfterYear;
LongDateFormat.allInstances.push(this);
LongDateFormat.allInstancesByType[type] = this;
LongDateFormat.allInstancesByTypeName[typeName] = this;
}
public static values(): LongDateFormat[] {
return LongDateFormat.allInstances;
}
public static all(): Record<DateFormatTypeName, LongDateFormat> {
return LongDateFormat.allInstancesByTypeName;
}
public static valueOf(type: number): LongDateFormat {
return LongDateFormat.allInstancesByType[type];
}
}
export class ShortDateFormat implements DateFormat {
private static readonly allInstances: ShortDateFormat[] = [];
private static readonly allInstancesByType: Record<number, ShortDateFormat> = {};
private static readonly allInstancesByTypeName: Record<string, ShortDateFormat> = {};
public static readonly YYYYMMDD = new ShortDateFormat(1, 'YYYYMMDD', 'yyyy_mm_dd', true);
public static readonly MMDDYYYY = new ShortDateFormat(2, 'MMDDYYYY', 'mm_dd_yyyy', false);
public static readonly DDMMYYYY = new ShortDateFormat(3, 'DDMMYYYY', 'dd_mm_yyyy', false);
public static readonly Default = ShortDateFormat.YYYYMMDD;
public readonly type: number;
public readonly typeName: string;
public readonly key: string;
public readonly isMonthAfterYear: boolean;
private constructor(type: number, typeName: DateFormatTypeName, key: string, isMonthAfterYear: boolean) {
this.type = type;
this.typeName = typeName;
this.key = key;
this.isMonthAfterYear = isMonthAfterYear;
ShortDateFormat.allInstances.push(this);
ShortDateFormat.allInstancesByType[type] = this;
ShortDateFormat.allInstancesByTypeName[typeName] = this;
}
public static values(): ShortDateFormat[] {
return ShortDateFormat.allInstances;
}
public static all(): Record<DateFormatTypeName, ShortDateFormat> {
return ShortDateFormat.allInstancesByTypeName;
}
public static valueOf(type: number): ShortDateFormat {
return ShortDateFormat.allInstancesByType[type];
}
}
export interface TimeFormat {
readonly type: number;
readonly key: string;
readonly is24HourFormat: boolean;
readonly isMeridiemIndicatorFirst: boolean | null;
}
export type LongTimeFormatTypeName = 'HHMMSS' | 'AHHMMSS' | 'HHMMSSA';
export class LongTimeFormat implements TimeFormat {
private static readonly allInstances: LongTimeFormat[] = [];
private static readonly allInstancesByType: Record<number, LongTimeFormat> = {};
private static readonly allInstancesByTypeName: Record<string, LongTimeFormat> = {};
public static readonly HHMMSS = new LongTimeFormat(1, 'HHMMSS', 'hh_mm_ss', true, null);
public static readonly AHHMMSS = new LongTimeFormat(2, 'AHHMMSS', 'a_hh_mm_ss', false, true);
public static readonly HHMMSSA = new LongTimeFormat(3, 'HHMMSSA', 'hh_mm_ss_a', false, false);
public static readonly Default = LongTimeFormat.HHMMSS;
public readonly type: number;
public readonly typeName: string;
public readonly key: string;
public readonly is24HourFormat: boolean;
public readonly isMeridiemIndicatorFirst: boolean | null;
private constructor(type: number, typeName: LongTimeFormatTypeName, key: string, is24HourFormat: boolean, isMeridiemIndicatorFirst: boolean | null) {
this.type = type;
this.typeName = typeName;
this.key = key;
this.is24HourFormat = is24HourFormat;
this.isMeridiemIndicatorFirst = isMeridiemIndicatorFirst;
LongTimeFormat.allInstances.push(this);
LongTimeFormat.allInstancesByType[type] = this;
LongTimeFormat.allInstancesByTypeName[typeName] = this;
}
public static values(): LongTimeFormat[] {
return LongTimeFormat.allInstances;
}
public static all(): Record<LongTimeFormatTypeName, LongTimeFormat> {
return LongTimeFormat.allInstancesByTypeName;
}
public static valueOf(type: number): LongTimeFormat {
return LongTimeFormat.allInstancesByType[type];
}
}
export type ShortTimeFormatTypeName = 'HHMM' | 'AHHMM' | 'HHMMA';
export class ShortTimeFormat implements TimeFormat {
private static readonly allInstances: ShortTimeFormat[] = [];
private static readonly allInstancesByType: Record<number, ShortTimeFormat> = {};
private static readonly allInstancesByTypeName: Record<string, ShortTimeFormat> = {};
public static readonly HHMM = new ShortTimeFormat(1, 'HHMM', 'hh_mm', true, null);
public static readonly AHHMM = new ShortTimeFormat(2, 'AHHMM', 'a_hh_mm', false, true);
public static readonly HHMMA = new ShortTimeFormat(3, 'HHMMA', 'hh_mm_a', false, false);
public static readonly Default = ShortTimeFormat.HHMM;
public readonly type: number;
public readonly typeName: string;
public readonly key: string;
public readonly is24HourFormat: boolean;
public readonly isMeridiemIndicatorFirst: boolean | null;
private constructor(type: number, typeName: ShortTimeFormatTypeName, key: string, is24HourFormat: boolean, isMeridiemIndicatorFirst: boolean | null) {
this.type = type;
this.typeName = typeName;
this.key = key;
this.is24HourFormat = is24HourFormat;
this.isMeridiemIndicatorFirst = isMeridiemIndicatorFirst;
ShortTimeFormat.allInstances.push(this);
ShortTimeFormat.allInstancesByType[type] = this;
ShortTimeFormat.allInstancesByTypeName[typeName] = this;
}
public static values(): ShortTimeFormat[] {
return ShortTimeFormat.allInstances;
}
public static all(): Record<ShortTimeFormatTypeName, ShortTimeFormat> {
return ShortTimeFormat.allInstancesByTypeName;
}
public static valueOf(type: number): ShortTimeFormat {
return ShortTimeFormat.allInstancesByType[type];
}
}
export enum DateRangeScene {
Normal = 0,
TrendAnalysis = 1
}
export type DateRangeTypeName = 'All' |
'Today' | 'Yesterday' |
'LastSevenDays' | 'LastThirtyDays' |
'ThisWeek' | 'LastWeek' |
'ThisMonth' | 'LastMonth' |
'ThisYear' | 'LastYear' |
'PreviousBillingCycle' | 'CurrentBillingCycle' |
'RecentTwelveMonths' | 'RecentTwentyFourMonths' | 'RecentThirtySixMonths' |
'RecentTwoYears' | 'RecentThreeYears' | 'RecentFiveYears' |
'Custom';
export class DateRange implements TypeAndName {
private static readonly allInstances: DateRange[] = [];
private static readonly allInstancesByType: Record<number, DateRange> = {};
private static readonly allInstancesByTypeName: Record<string, DateRange> = {};
// All date range
public static readonly All = new DateRange(0, 'All', 'All', false, DateRangeScene.Normal, DateRangeScene.TrendAnalysis);
// Date ranges for normal scene only
public static readonly Today = new DateRange(1, 'Today', 'Today', false, DateRangeScene.Normal);
public static readonly Yesterday = new DateRange(2, 'Yesterday', 'Yesterday', false, DateRangeScene.Normal);
public static readonly LastSevenDays = new DateRange(3, 'LastSevenDays', 'Recent 7 days', false, DateRangeScene.Normal);
public static readonly LastThirtyDays = new DateRange(4, 'LastThirtyDays', 'Recent 30 days', false, DateRangeScene.Normal);
public static readonly ThisWeek = new DateRange(5, 'ThisWeek', 'This week', false, DateRangeScene.Normal);
public static readonly LastWeek = new DateRange(6, 'LastWeek', 'Last week', false, DateRangeScene.Normal);
public static readonly ThisMonth = new DateRange(7, 'ThisMonth', 'This month', false, DateRangeScene.Normal);
public static readonly LastMonth = new DateRange(8, 'LastMonth', 'Last month', false, DateRangeScene.Normal);
// Date ranges for normal and trend analysis scene
public static readonly ThisYear = new DateRange(9, 'ThisYear', 'This year', false, DateRangeScene.Normal, DateRangeScene.TrendAnalysis);
public static readonly LastYear = new DateRange(10, 'LastYear', 'Last year', false, DateRangeScene.Normal, DateRangeScene.TrendAnalysis);
// Billing cycle date ranges for normal scene only
public static readonly PreviousBillingCycle = new DateRange(51, 'PreviousBillingCycle', 'Previous Billing Cycle', true, DateRangeScene.Normal);
public static readonly CurrentBillingCycle = new DateRange(52, 'CurrentBillingCycle', 'Current Billing Cycle', true, DateRangeScene.Normal);
// Date ranges for trend analysis scene only
public static readonly RecentTwelveMonths = new DateRange(101, 'RecentTwelveMonths', 'Recent 12 months', false, DateRangeScene.TrendAnalysis);
public static readonly RecentTwentyFourMonths = new DateRange(102, 'RecentTwentyFourMonths', 'Recent 24 months', false, DateRangeScene.TrendAnalysis);
public static readonly RecentThirtySixMonths = new DateRange(103, 'RecentThirtySixMonths', 'Recent 36 months', false, DateRangeScene.TrendAnalysis);
public static readonly RecentTwoYears = new DateRange(104, 'RecentTwoYears', 'Recent 2 years', false, DateRangeScene.TrendAnalysis);
public static readonly RecentThreeYears = new DateRange(105, 'RecentThreeYears', 'Recent 3 years', false, DateRangeScene.TrendAnalysis);
public static readonly RecentFiveYears = new DateRange(106, 'RecentFiveYears', 'Recent 5 years', false, DateRangeScene.TrendAnalysis);
// Custom date range
public static readonly Custom = new DateRange(255, 'Custom', 'Custom Date', false, DateRangeScene.Normal, DateRangeScene.TrendAnalysis);
public readonly type: number;
public readonly name: string;
public readonly isBillingCycle: boolean;
private readonly availableScenes: Record<number, boolean>;
private constructor(type: number, typeName: DateRangeTypeName, name: string, isBillingCycle: boolean, ...availableScenes: DateRangeScene[]) {
this.type = type;
this.name = name;
this.isBillingCycle = isBillingCycle;
this.availableScenes = {};
if (availableScenes) {
for (const scene of availableScenes) {
this.availableScenes[scene] = true;
}
}
DateRange.allInstances.push(this);
DateRange.allInstancesByType[type] = this;
DateRange.allInstancesByTypeName[typeName] = this;
}
public isAvailableForScene(scene: DateRangeScene): boolean {
return this.availableScenes[scene] || false;
}
public static values(): DateRange[] {
return DateRange.allInstances;
}
public static all(): Record<DateRangeTypeName, DateRange> {
return DateRange.allInstancesByTypeName;
}
public static valueOf(type: number): DateRange {
return DateRange.allInstancesByType[type];
}
public static isAvailableForScene(type: number, scene: DateRangeScene): boolean {
const dateRange = DateRange.allInstancesByType[type];
return dateRange?.isAvailableForScene(scene) || false;
}
public static isBillingCycle(type: number): boolean {
const dateRange = DateRange.allInstancesByType[type];
return dateRange?.isBillingCycle || false;
}
}
+54 -57
View File
@@ -1,6 +1,6 @@
import moment from 'moment'; import moment from 'moment';
import dateTimeConstants from '@/consts/datetime.js'; import { Month, WeekDay, MeridiemIndicator, DateRangeScene, DateRange, LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE } from '@/core/datetime.ts';
import { isObject, isString, isNumber } from './common.ts'; import { isObject, isString, isNumber } from './common.ts';
export function isYearMonthValid(year, month) { export function isYearMonthValid(year, month) {
@@ -198,16 +198,16 @@ export function getDay(date) {
export function getDayOfWeekName(date) { export function getDayOfWeekName(date) {
const dayOfWeek = moment(date).days(); const dayOfWeek = moment(date).days();
return dateTimeConstants.allWeekDaysArray[dayOfWeek].name; return WeekDay.valueOf(dayOfWeek).name;
} }
export function getMonthName(date) { export function getMonthName(date) {
const dayOfWeek = moment(date).month(); const month = moment(date).month();
return dateTimeConstants.allMonthsArray[dayOfWeek]; return Month.valueOf(month + 1).name;
} }
export function getAMOrPM(hour) { export function getAMOrPM(hour) {
return isPM(hour) ? dateTimeConstants.allMeridiemIndicators.PM : dateTimeConstants.allMeridiemIndicators.AM; return isPM(hour) ? MeridiemIndicator.PM.name : MeridiemIndicator.AM.name;
} }
export function getUnixTimeBeforeUnixTime(unixTime, amount, unit) { export function getUnixTimeBeforeUnixTime(unixTime, amount, unit) {
@@ -429,9 +429,9 @@ export function getAllMonthsStartAndEndUnixTimes(startYearMonth, endYearMonth) {
} }
export function getDateTimeFormatType(allFormatMap, allFormatArray, localeDefaultFormatTypeName, systemDefaultFormatType, formatTypeValue) { export function getDateTimeFormatType(allFormatMap, allFormatArray, localeDefaultFormatTypeName, systemDefaultFormatType, formatTypeValue) {
if (formatTypeValue > dateTimeConstants.defaultDateTimeFormatValue && allFormatArray[formatTypeValue - 1] && allFormatArray[formatTypeValue - 1].key) { if (formatTypeValue > LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE && allFormatArray[formatTypeValue - 1] && allFormatArray[formatTypeValue - 1].key) {
return allFormatArray[formatTypeValue - 1]; return allFormatArray[formatTypeValue - 1];
} else if (formatTypeValue === dateTimeConstants.defaultDateTimeFormatValue && allFormatMap[localeDefaultFormatTypeName] && allFormatMap[localeDefaultFormatTypeName].key) { } else if (formatTypeValue === LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE && allFormatMap[localeDefaultFormatTypeName] && allFormatMap[localeDefaultFormatTypeName].key) {
return allFormatMap[localeDefaultFormatTypeName]; return allFormatMap[localeDefaultFormatTypeName];
} else { } else {
return systemDefaultFormatType; return systemDefaultFormatType;
@@ -489,12 +489,12 @@ export function getShiftedDateRangeAndDateType(minTime, maxTime, scale, firstDay
} }
export function getShiftedDateRangeAndDateTypeForBillingCycle(minTime, maxTime, scale, firstDayOfWeek, scene, statementDate) { export function getShiftedDateRangeAndDateTypeForBillingCycle(minTime, maxTime, scale, firstDayOfWeek, scene, statementDate) {
if (!statementDate || !dateTimeConstants.allDateRanges.PreviousBillingCycle.availableScenes[scene] || !dateTimeConstants.allDateRanges.CurrentBillingCycle.availableScenes[scene]) { if (!statementDate || !DateRange.PreviousBillingCycle.isAvailableForScene(scene) || !DateRange.CurrentBillingCycle.isAvailableForScene(scene)) {
return null; return null;
} }
const previousBillingCycleRange = getDateRangeByBillingCycleDateType(dateTimeConstants.allDateRanges.PreviousBillingCycle.type, firstDayOfWeek, statementDate); const previousBillingCycleRange = getDateRangeByBillingCycleDateType(DateRange.PreviousBillingCycle.type, firstDayOfWeek, statementDate);
const currentBillingCycleRange = getDateRangeByBillingCycleDateType(dateTimeConstants.allDateRanges.CurrentBillingCycle.type, firstDayOfWeek, statementDate); const currentBillingCycleRange = getDateRangeByBillingCycleDateType(DateRange.CurrentBillingCycle.type, firstDayOfWeek, statementDate);
if (previousBillingCycleRange && getUnixTimeBeforeUnixTime(previousBillingCycleRange.maxTime, 1, 'months') === maxTime && getUnixTimeBeforeUnixTime(previousBillingCycleRange.minTime, 1, 'months') === minTime && scale === 1) { if (previousBillingCycleRange && getUnixTimeBeforeUnixTime(previousBillingCycleRange.maxTime, 1, 'months') === maxTime && getUnixTimeBeforeUnixTime(previousBillingCycleRange.minTime, 1, 'months') === minTime && scale === 1) {
return previousBillingCycleRange; return previousBillingCycleRange;
@@ -510,23 +510,20 @@ export function getShiftedDateRangeAndDateTypeForBillingCycle(minTime, maxTime,
} }
export function getDateTypeByDateRange(minTime, maxTime, firstDayOfWeek, scene) { export function getDateTypeByDateRange(minTime, maxTime, firstDayOfWeek, scene) {
let newDateType = dateTimeConstants.allDateRanges.Custom.type; const allDateRanges = DateRange.values();
let newDateType = DateRange.Custom.type;
for (let dateRangeField in dateTimeConstants.allDateRanges) { for (let i = 0; i < allDateRanges.length; i++) {
if (!Object.prototype.hasOwnProperty.call(dateTimeConstants.allDateRanges, dateRangeField)) { const dateRange = allDateRanges[i];
if (!dateRange.isAvailableForScene(scene)) {
continue; continue;
} }
const dateRangeType = dateTimeConstants.allDateRanges[dateRangeField]; const range = getDateRangeByDateType(dateRange.type, firstDayOfWeek);
if (!dateRangeType.availableScenes[scene]) { if (range && range.minTime === minTime && range.maxTime === maxTime) {
continue; newDateType = dateRange.type;
}
const dateRange = getDateRangeByDateType(dateRangeType.type, firstDayOfWeek);
if (dateRange && dateRange.minTime === minTime && dateRange.maxTime === maxTime) {
newDateType = dateRangeType.type;
break; break;
} }
} }
@@ -535,12 +532,12 @@ export function getDateTypeByDateRange(minTime, maxTime, firstDayOfWeek, scene)
} }
export function getDateTypeByBillingCycleDateRange(minTime, maxTime, firstDayOfWeek, scene, statementDate) { export function getDateTypeByBillingCycleDateRange(minTime, maxTime, firstDayOfWeek, scene, statementDate) {
if (!statementDate || !dateTimeConstants.allDateRanges.PreviousBillingCycle.availableScenes[scene] || !dateTimeConstants.allDateRanges.CurrentBillingCycle.availableScenes[scene]) { if (!statementDate || !DateRange.PreviousBillingCycle.isAvailableForScene(scene) || !DateRange.CurrentBillingCycle.isAvailableForScene(scene)) {
return null; return null;
} }
const previousBillingCycleRange = getDateRangeByBillingCycleDateType(dateTimeConstants.allDateRanges.PreviousBillingCycle.type, firstDayOfWeek, statementDate); const previousBillingCycleRange = getDateRangeByBillingCycleDateType(DateRange.PreviousBillingCycle.type, firstDayOfWeek, statementDate);
const currentBillingCycleRange = getDateRangeByBillingCycleDateType(dateTimeConstants.allDateRanges.CurrentBillingCycle.type, firstDayOfWeek, statementDate); const currentBillingCycleRange = getDateRangeByBillingCycleDateType(DateRange.CurrentBillingCycle.type, firstDayOfWeek, statementDate);
if (previousBillingCycleRange && previousBillingCycleRange.maxTime === maxTime && previousBillingCycleRange.minTime === minTime) { if (previousBillingCycleRange && previousBillingCycleRange.maxTime === maxTime && previousBillingCycleRange.minTime === minTime) {
return previousBillingCycleRange.dateType; return previousBillingCycleRange.dateType;
@@ -555,55 +552,55 @@ export function getDateRangeByDateType(dateType, firstDayOfWeek) {
let maxTime = 0; let maxTime = 0;
let minTime = 0; let minTime = 0;
if (dateType === dateTimeConstants.allDateRanges.All.type) { // All if (dateType === DateRange.All.type) { // All
maxTime = 0; maxTime = 0;
minTime = 0; minTime = 0;
} else if (dateType === dateTimeConstants.allDateRanges.Today.type) { // Today } else if (dateType === DateRange.Today.type) { // Today
maxTime = getTodayLastUnixTime(); maxTime = getTodayLastUnixTime();
minTime = getTodayFirstUnixTime(); minTime = getTodayFirstUnixTime();
} else if (dateType === dateTimeConstants.allDateRanges.Yesterday.type) { // Yesterday } else if (dateType === DateRange.Yesterday.type) { // Yesterday
maxTime = getUnixTimeBeforeUnixTime(getTodayLastUnixTime(), 1, 'days'); maxTime = getUnixTimeBeforeUnixTime(getTodayLastUnixTime(), 1, 'days');
minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 1, 'days'); minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 1, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.LastSevenDays.type) { // Last 7 days } else if (dateType === DateRange.LastSevenDays.type) { // Last 7 days
maxTime = getTodayLastUnixTime(); maxTime = getTodayLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 6, 'days'); minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 6, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.LastThirtyDays.type) { // Last 30 days } else if (dateType === DateRange.LastThirtyDays.type) { // Last 30 days
maxTime = getTodayLastUnixTime(); maxTime = getTodayLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 29, 'days'); minTime = getUnixTimeBeforeUnixTime(getTodayFirstUnixTime(), 29, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.ThisWeek.type) { // This week } else if (dateType === DateRange.ThisWeek.type) { // This week
maxTime = getThisWeekLastUnixTime(firstDayOfWeek); maxTime = getThisWeekLastUnixTime(firstDayOfWeek);
minTime = getThisWeekFirstUnixTime(firstDayOfWeek); minTime = getThisWeekFirstUnixTime(firstDayOfWeek);
} else if (dateType === dateTimeConstants.allDateRanges.LastWeek.type) { // Last week } else if (dateType === DateRange.LastWeek.type) { // Last week
maxTime = getUnixTimeBeforeUnixTime(getThisWeekLastUnixTime(firstDayOfWeek), 7, 'days'); maxTime = getUnixTimeBeforeUnixTime(getThisWeekLastUnixTime(firstDayOfWeek), 7, 'days');
minTime = getUnixTimeBeforeUnixTime(getThisWeekFirstUnixTime(firstDayOfWeek), 7, 'days'); minTime = getUnixTimeBeforeUnixTime(getThisWeekFirstUnixTime(firstDayOfWeek), 7, 'days');
} else if (dateType === dateTimeConstants.allDateRanges.ThisMonth.type) { // This month } else if (dateType === DateRange.ThisMonth.type) { // This month
maxTime = getThisMonthLastUnixTime(); maxTime = getThisMonthLastUnixTime();
minTime = getThisMonthFirstUnixTime(); minTime = getThisMonthFirstUnixTime();
} else if (dateType === dateTimeConstants.allDateRanges.LastMonth.type) { // Last month } else if (dateType === DateRange.LastMonth.type) { // Last month
maxTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 1, 'seconds'); maxTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 1, 'seconds');
minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 1, 'months'); minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 1, 'months');
} else if (dateType === dateTimeConstants.allDateRanges.ThisYear.type) { // This year } else if (dateType === DateRange.ThisYear.type) { // This year
maxTime = getThisYearLastUnixTime(); maxTime = getThisYearLastUnixTime();
minTime = getThisYearFirstUnixTime(); minTime = getThisYearFirstUnixTime();
} else if (dateType === dateTimeConstants.allDateRanges.LastYear.type) { // Last year } else if (dateType === DateRange.LastYear.type) { // Last year
maxTime = getUnixTimeBeforeUnixTime(getThisYearLastUnixTime(), 1, 'years'); maxTime = getUnixTimeBeforeUnixTime(getThisYearLastUnixTime(), 1, 'years');
minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 1, 'years'); minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 1, 'years');
} else if (dateType === dateTimeConstants.allDateRanges.RecentTwelveMonths.type) { // Recent 12 months } else if (dateType === DateRange.RecentTwelveMonths.type) { // Recent 12 months
maxTime = getThisMonthLastUnixTime(); maxTime = getThisMonthLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 11, 'months'); minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 11, 'months');
} else if (dateType === dateTimeConstants.allDateRanges.RecentTwentyFourMonths.type) { // Recent 24 months } else if (dateType === DateRange.RecentTwentyFourMonths.type) { // Recent 24 months
maxTime = getThisMonthLastUnixTime(); maxTime = getThisMonthLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 23, 'months'); minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 23, 'months');
} else if (dateType === dateTimeConstants.allDateRanges.RecentThirtySixMonths.type) { // Recent 36 months } else if (dateType === DateRange.RecentThirtySixMonths.type) { // Recent 36 months
maxTime = getThisMonthLastUnixTime(); maxTime = getThisMonthLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 35, 'months'); minTime = getUnixTimeBeforeUnixTime(getThisMonthFirstUnixTime(), 35, 'months');
} else if (dateType === dateTimeConstants.allDateRanges.RecentTwoYears.type) { // Recent 2 years } else if (dateType === DateRange.RecentTwoYears.type) { // Recent 2 years
maxTime = getThisYearLastUnixTime(); maxTime = getThisYearLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 1, 'years'); minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 1, 'years');
} else if (dateType === dateTimeConstants.allDateRanges.RecentThreeYears.type) { // Recent 3 years } else if (dateType === DateRange.RecentThreeYears.type) { // Recent 3 years
maxTime = getThisYearLastUnixTime(); maxTime = getThisYearLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 2, 'years'); minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 2, 'years');
} else if (dateType === dateTimeConstants.allDateRanges.RecentFiveYears.type) { // Recent 5 years } else if (dateType === DateRange.RecentFiveYears.type) { // Recent 5 years
maxTime = getThisYearLastUnixTime(); maxTime = getThisYearLastUnixTime();
minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 4, 'years'); minTime = getUnixTimeBeforeUnixTime(getThisYearFirstUnixTime(), 4, 'years');
} else { } else {
@@ -621,7 +618,7 @@ export function getDateRangeByBillingCycleDateType(dateType, firstDayOfWeek, sta
let maxTime = 0; let maxTime = 0;
let minTime = 0; let minTime = 0;
if (dateType === dateTimeConstants.allDateRanges.PreviousBillingCycle.type || dateType === dateTimeConstants.allDateRanges.CurrentBillingCycle.type) { // Previous Billing Cycle | Current Billing Cycle if (dateType === DateRange.PreviousBillingCycle.type || dateType === DateRange.CurrentBillingCycle.type) { // Previous Billing Cycle | Current Billing Cycle
if (statementDate) { if (statementDate) {
if (getCurrentDay() <= statementDate) { if (getCurrentDay() <= statementDate) {
maxTime = getThisMonthSpecifiedDayLastUnixTime(statementDate); maxTime = getThisMonthSpecifiedDayLastUnixTime(statementDate);
@@ -631,17 +628,17 @@ export function getDateRangeByBillingCycleDateType(dateType, firstDayOfWeek, sta
minTime = getUnixTimeAfterUnixTime(getThisMonthSpecifiedDayFirstUnixTime(statementDate), 1, 'days'); minTime = getUnixTimeAfterUnixTime(getThisMonthSpecifiedDayFirstUnixTime(statementDate), 1, 'days');
} }
if (dateType === dateTimeConstants.allDateRanges.PreviousBillingCycle.type) { if (dateType === DateRange.PreviousBillingCycle.type) {
maxTime = getUnixTimeBeforeUnixTime(maxTime, 1, 'months'); maxTime = getUnixTimeBeforeUnixTime(maxTime, 1, 'months');
minTime = getUnixTimeBeforeUnixTime(minTime, 1, 'months'); minTime = getUnixTimeBeforeUnixTime(minTime, 1, 'months');
} }
} else { } else {
let fallbackDateRange = null; let fallbackDateRange = null;
if (dateType === dateTimeConstants.allDateRanges.CurrentBillingCycle.type) { // same as This Month if (dateType === DateRange.CurrentBillingCycle.type) { // same as This Month
fallbackDateRange = getDateRangeByDateType(dateTimeConstants.allDateRanges.ThisMonth.type, firstDayOfWeek); fallbackDateRange = getDateRangeByDateType(DateRange.ThisMonth.type, firstDayOfWeek);
} else if (dateType === dateTimeConstants.allDateRanges.PreviousBillingCycle.type) { // same as Last Month } else if (dateType === DateRange.PreviousBillingCycle.type) { // same as Last Month
fallbackDateRange = getDateRangeByDateType(dateTimeConstants.allDateRanges.LastMonth.type, firstDayOfWeek); fallbackDateRange = getDateRangeByDateType(DateRange.LastMonth.type, firstDayOfWeek);
} }
if (fallbackDateRange) { if (fallbackDateRange) {
@@ -672,14 +669,14 @@ export function getRecentMonthDateRanges(monthCount) {
} }
let maxTime = getUnixTimeBeforeUnixTime(getUnixTimeAfterUnixTime(minTime, 1, 'months'), 1, 'seconds'); let maxTime = getUnixTimeBeforeUnixTime(getUnixTimeAfterUnixTime(minTime, 1, 'months'), 1, 'seconds');
let dateType = dateTimeConstants.allDateRanges.Custom.type; let dateType = DateRange.Custom.type;
let year = getYear(parseDateFromUnixTime(minTime)); let year = getYear(parseDateFromUnixTime(minTime));
let month = getMonth(parseDateFromUnixTime(minTime)); let month = getMonth(parseDateFromUnixTime(minTime));
if (i === 0) { if (i === 0) {
dateType = dateTimeConstants.allDateRanges.ThisMonth.type; dateType = DateRange.ThisMonth.type;
} else if (i === 1) { } else if (i === 1) {
dateType = dateTimeConstants.allDateRanges.LastMonth.type; dateType = DateRange.LastMonth.type;
} }
recentDateRanges.push({ recentDateRanges.push({
@@ -707,17 +704,17 @@ export function getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, dateT
export function getRecentDateRangeType(allRecentMonthDateRanges, dateType, minTime, maxTime, firstDayOfWeek) { export function getRecentDateRangeType(allRecentMonthDateRanges, dateType, minTime, maxTime, firstDayOfWeek) {
let dateRange = getDateRangeByDateType(dateType, firstDayOfWeek); let dateRange = getDateRangeByDateType(dateType, firstDayOfWeek);
if (dateRange && dateRange.dateType === dateTimeConstants.allDateRanges.All.type) { if (dateRange && dateRange.dateType === DateRange.All.type) {
return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, dateTimeConstants.allDateRanges.All.type); return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, DateRange.All.type);
} }
if (!dateRange && (!maxTime || !minTime)) { if (!dateRange && (!maxTime || !minTime)) {
return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, dateTimeConstants.allDateRanges.Custom.type); return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, DateRange.Custom.type);
} }
if (!dateRange) { if (!dateRange) {
dateRange = { dateRange = {
dateType: dateTimeConstants.allDateRanges.Custom.type, dateType: DateRange.Custom.type,
maxTime: maxTime, maxTime: maxTime,
minTime: minTime minTime: minTime
}; };
@@ -731,7 +728,7 @@ export function getRecentDateRangeType(allRecentMonthDateRanges, dateType, minTi
} }
} }
return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, dateTimeConstants.allDateRanges.Custom.type); return getRecentDateRangeTypeByDateType(allRecentMonthDateRanges, DateRange.Custom.type);
} }
export function getTimeValues(date, is24Hour, isMeridiemIndicatorFirst) { export function getTimeValues(date, is24Hour, isMeridiemIndicatorFirst) {
@@ -779,7 +776,7 @@ export function getCombinedDateAndTimeValues(date, timeValues, is24Hour, isMerid
hours = 0; hours = 0;
} }
if (meridiemIndicator === dateTimeConstants.allMeridiemIndicators.PM) { if (meridiemIndicator === MeridiemIndicator.PM.name) {
hours += 12; hours += 12;
} }
} }
+113 -113
View File
@@ -2,6 +2,7 @@ import moment from 'moment-timezone';
import { defaultLanguage, allLanguages } from '@/locales/index.ts'; import { defaultLanguage, allLanguages } from '@/locales/index.ts';
import { Month, WeekDay, MeridiemIndicator, LongDateFormat, ShortDateFormat, LongTimeFormat, ShortTimeFormat, DateRangeScene, DateRange, LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE } from '@/core/datetime.ts';
import { TimezoneTypeForStatistics } from '@/core/timezone.ts'; import { TimezoneTypeForStatistics } from '@/core/timezone.ts';
import { CurrencyDisplayType, CurrencySortingType } from '@/core/currency.ts'; import { CurrencyDisplayType, CurrencySortingType } from '@/core/currency.ts';
import { PresetAmountColor } from '@/core/color.ts'; import { PresetAmountColor } from '@/core/color.ts';
@@ -11,7 +12,6 @@ import { TransactionEditScopeType, TransactionTagFilterType } from '@/core/trans
import { ScheduledTemplateFrequencyType } from '@/core/template.ts'; import { ScheduledTemplateFrequencyType } from '@/core/template.ts';
import numeralConstants from '@/consts/numeral.js'; import numeralConstants from '@/consts/numeral.js';
import datetimeConstants from '@/consts/datetime.js';
import { UTC_TIMEZONE, ALL_TIMEZONES } from '@/consts/timezone.ts'; import { UTC_TIMEZONE, ALL_TIMEZONES } from '@/consts/timezone.ts';
import { ALL_CURRENCIES } from '@/consts/currency.ts'; import { ALL_CURRENCIES } from '@/consts/currency.ts';
import { SUPPORTED_IMPORT_FILE_TYPES } from '@/consts/file.ts'; import { SUPPORTED_IMPORT_FILE_TYPES } from '@/consts/file.ts';
@@ -24,7 +24,6 @@ import {
isString, isString,
isNumber, isNumber,
isBoolean, isBoolean,
getNameByKeyValue,
copyObjectTo, copyObjectTo,
copyArrayTo copyArrayTo
} from './common.ts'; } from './common.ts';
@@ -247,90 +246,102 @@ function getCurrencyUnitName(currencyCode, isPlural, translateFn) {
return ''; return '';
} }
function getAllMeridiemIndicatorNames(translateFn) { function getAllMeridiemIndicators(translateFn) {
const allMeridiemIndicatorNames = []; const allMeridiemIndicators = MeridiemIndicator.values();
const meridiemIndicatorNames = [];
const localizedMeridiemIndicatorNames = [];
for (let i = 0; i < datetimeConstants.allMeridiemIndicatorsArray.length; i++) { for (let i = 0; i < allMeridiemIndicators.length; i++) {
const indicatorName = datetimeConstants.allMeridiemIndicatorsArray[i]; const indicator = allMeridiemIndicators[i];
allMeridiemIndicatorNames.push(translateFn(`datetime.${indicatorName}.content`));
meridiemIndicatorNames.push(indicator.name);
localizedMeridiemIndicatorNames.push(translateFn(`datetime.${indicator.name}.content`));
} }
return allMeridiemIndicatorNames; return {
values: meridiemIndicatorNames,
displayValues: localizedMeridiemIndicatorNames
};
} }
function getAllLongMonthNames(translateFn) { function getAllLongMonthNames(translateFn) {
const allMonthNames = []; const ret = [];
const allMonths = Month.values();
for (let i = 0; i < datetimeConstants.allMonthsArray.length; i++) { for (let i = 0; i < allMonths.length; i++) {
const monthName = datetimeConstants.allMonthsArray[i]; const month = allMonths[i];
allMonthNames.push(translateFn(`datetime.${monthName}.long`)); ret.push(translateFn(`datetime.${month.name}.long`));
} }
return allMonthNames; return ret;
} }
function getAllShortMonthNames(translateFn) { function getAllShortMonthNames(translateFn) {
const allMonthNames = []; const ret = [];
const allMonths = Month.values();
for (let i = 0; i < datetimeConstants.allMonthsArray.length; i++) { for (let i = 0; i < allMonths.length; i++) {
const monthName = datetimeConstants.allMonthsArray[i]; const month = allMonths[i];
allMonthNames.push(translateFn(`datetime.${monthName}.short`)); ret.push(translateFn(`datetime.${month.name}.short`));
} }
return allMonthNames; return ret;
} }
function getAllLongWeekdayNames(translateFn) { function getAllLongWeekdayNames(translateFn) {
const allWeekNames = []; const ret = [];
const allWeekDays = WeekDay.values();
for (let i = 0; i < datetimeConstants.allWeekDaysArray.length; i++) { for (let i = 0; i < allWeekDays.length; i++) {
const weekDay = datetimeConstants.allWeekDaysArray[i]; const weekDay = allWeekDays[i];
allWeekNames.push(translateFn(`datetime.${weekDay.name}.long`)); ret.push(translateFn(`datetime.${weekDay.name}.long`));
} }
return allWeekNames; return ret;
} }
function getAllShortWeekdayNames(translateFn) { function getAllShortWeekdayNames(translateFn) {
const allWeekNames = []; const ret = [];
const allWeekDays = WeekDay.values();
for (let i = 0; i < datetimeConstants.allWeekDaysArray.length; i++) { for (let i = 0; i < allWeekDays.length; i++) {
const weekDay = datetimeConstants.allWeekDaysArray[i]; const weekDay = allWeekDays[i];
allWeekNames.push(translateFn(`datetime.${weekDay.name}.short`)); ret.push(translateFn(`datetime.${weekDay.name}.short`));
} }
return allWeekNames; return ret;
} }
function getAllMinWeekdayNames(translateFn) { function getAllMinWeekdayNames(translateFn) {
const allWeekNames = []; const ret = [];
const allWeekDays = WeekDay.values();
for (let i = 0; i < datetimeConstants.allWeekDaysArray.length; i++) { for (let i = 0; i < allWeekDays.length; i++) {
const weekDay = datetimeConstants.allWeekDaysArray[i]; const weekDay = allWeekDays[i];
allWeekNames.push(translateFn(`datetime.${weekDay.name}.min`)); ret.push(translateFn(`datetime.${weekDay.name}.min`));
} }
return allWeekNames; return ret;
} }
function getAllLongDateFormats(translateFn) { function getAllLongDateFormats(translateFn) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
return getDateTimeFormats(translateFn, datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, 'format.longDate', defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat); return getDateTimeFormats(translateFn, LongDateFormat.all(), LongDateFormat.values(), 'format.longDate', defaultLongDateFormatTypeName, LongDateFormat.Default);
} }
function getAllShortDateFormats(translateFn) { function getAllShortDateFormats(translateFn) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
return getDateTimeFormats(translateFn, datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, 'format.shortDate', defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat); return getDateTimeFormats(translateFn, ShortDateFormat.all(), ShortDateFormat.values(), 'format.shortDate', defaultShortDateFormatTypeName, ShortDateFormat.Default);
} }
function getAllLongTimeFormats(translateFn) { function getAllLongTimeFormats(translateFn) {
const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat'); const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat');
return getDateTimeFormats(translateFn, datetimeConstants.allLongTimeFormat, datetimeConstants.allLongTimeFormatArray, 'format.longTime', defaultLongTimeFormatTypeName, datetimeConstants.defaultLongTimeFormat); return getDateTimeFormats(translateFn, LongTimeFormat.values(), LongTimeFormat.values(), 'format.longTime', defaultLongTimeFormatTypeName, LongTimeFormat.Default);
} }
function getAllShortTimeFormats(translateFn) { function getAllShortTimeFormats(translateFn) {
const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat'); const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat');
return getDateTimeFormats(translateFn, datetimeConstants.allShortTimeFormat, datetimeConstants.allShortTimeFormatArray, 'format.shortTime', defaultShortTimeFormatTypeName, datetimeConstants.defaultShortTimeFormat); return getDateTimeFormats(translateFn, ShortTimeFormat.values(), ShortTimeFormat.values(), 'format.shortTime', defaultShortTimeFormatTypeName, ShortTimeFormat.Default);
} }
function getMonthShortName(monthName, translateFn) { function getMonthShortName(monthName, translateFn) {
@@ -380,96 +391,89 @@ function getMultiMonthdayShortNames(monthDays, translateFn) {
function getMultiWeekdayLongNames(weekdayTypes, firstDayOfWeek, translateFn) { function getMultiWeekdayLongNames(weekdayTypes, firstDayOfWeek, translateFn) {
const weekdayTypesMap = {}; const weekdayTypesMap = {};
const finalWeekdayTypes = [];
if (!isNumber(firstDayOfWeek)) { if (!isNumber(firstDayOfWeek)) {
firstDayOfWeek = datetimeConstants.allWeekDays.Sunday.type; firstDayOfWeek = WeekDay.DefaultFirstDay.type;
} }
for (let i = 0; i < weekdayTypes.length; i++) { for (let i = 0; i < weekdayTypes.length; i++) {
weekdayTypesMap[weekdayTypes[i]] = true; weekdayTypesMap[weekdayTypes[i]] = true;
} }
for (let i = firstDayOfWeek; i < datetimeConstants.allWeekDaysArray.length; i++) { const allWeekDays = getAllWeekDays(firstDayOfWeek, translateFn);
const weekDay = datetimeConstants.allWeekDaysArray[i]; const finalWeekdayNames = [];
for (let i = 0; i < allWeekDays.length; i++) {
const weekDay = allWeekDays[i];
if (weekdayTypesMap[weekDay.type]) { if (weekdayTypesMap[weekDay.type]) {
finalWeekdayTypes.push(weekDay.type); finalWeekdayNames.push(weekDay.displayName);
} }
} }
for (let i = 0; i < firstDayOfWeek; i++) { return joinMultiText(finalWeekdayNames, translateFn);
const weekDay = datetimeConstants.allWeekDaysArray[i];
if (weekdayTypesMap[weekDay.type]) {
finalWeekdayTypes.push(weekDay.type);
}
}
const allWeekDays = getAllWeekDays(null, translateFn)
return joinMultiText(finalWeekdayTypes.map(type => getNameByKeyValue(allWeekDays, type, 'type', 'displayName')), translateFn);
} }
function getI18nLongDateFormat(translateFn, formatTypeValue) { function getI18nLongDateFormat(translateFn, formatTypeValue) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, 'format.longDate', defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, LongDateFormat.all(), LongDateFormat.values(), 'format.longDate', defaultLongDateFormatTypeName, LongDateFormat.Default, formatTypeValue);
} }
function getI18nShortDateFormat(translateFn, formatTypeValue) { function getI18nShortDateFormat(translateFn, formatTypeValue) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, 'format.shortDate', defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, ShortDateFormat.all(), ShortDateFormat.values(), 'format.shortDate', defaultShortDateFormatTypeName, ShortDateFormat.Default, formatTypeValue);
} }
function getI18nLongYearFormat(translateFn, formatTypeValue) { function getI18nLongYearFormat(translateFn, formatTypeValue) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, 'format.longYear', defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, LongDateFormat.all(), LongDateFormat.values(), 'format.longYear', defaultLongDateFormatTypeName, LongDateFormat.Default, formatTypeValue);
} }
function getI18nShortYearFormat(translateFn, formatTypeValue) { function getI18nShortYearFormat(translateFn, formatTypeValue) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, 'format.shortYear', defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, ShortDateFormat.all(), ShortDateFormat.values(), 'format.shortYear', defaultShortDateFormatTypeName, ShortDateFormat.Default, formatTypeValue);
} }
function getI18nLongYearMonthFormat(translateFn, formatTypeValue) { function getI18nLongYearMonthFormat(translateFn, formatTypeValue) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, 'format.longYearMonth', defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, LongDateFormat.all(), LongDateFormat.values(), 'format.longYearMonth', defaultLongDateFormatTypeName, LongDateFormat.Default, formatTypeValue);
} }
function getI18nShortYearMonthFormat(translateFn, formatTypeValue) { function getI18nShortYearMonthFormat(translateFn, formatTypeValue) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, 'format.shortYearMonth', defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, ShortDateFormat.all(), ShortDateFormat.values(), 'format.shortYearMonth', defaultShortDateFormatTypeName, ShortDateFormat.Default, formatTypeValue);
} }
function getI18nLongMonthDayFormat(translateFn, formatTypeValue) { function getI18nLongMonthDayFormat(translateFn, formatTypeValue) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, 'format.longMonthDay', defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, LongDateFormat.all(), LongDateFormat.values(), 'format.longMonthDay', defaultLongDateFormatTypeName, LongDateFormat.Default, formatTypeValue);
} }
function getI18nShortMonthDayFormat(translateFn, formatTypeValue) { function getI18nShortMonthDayFormat(translateFn, formatTypeValue) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, 'format.shortMonthDay', defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat, formatTypeValue); return getDateTimeFormat(translateFn, ShortDateFormat.all(), ShortDateFormat.values(), 'format.shortMonthDay', defaultShortDateFormatTypeName, ShortDateFormat.Default, formatTypeValue);
} }
function isLongDateMonthAfterYear(translateFn, formatTypeValue) { function isLongDateMonthAfterYear(translateFn, formatTypeValue) {
const defaultLongDateFormatTypeName = translateFn('default.longDateFormat'); const defaultLongDateFormatTypeName = translateFn('default.longDateFormat');
const type = getDateTimeFormatType(datetimeConstants.allLongDateFormat, datetimeConstants.allLongDateFormatArray, defaultLongDateFormatTypeName, datetimeConstants.defaultLongDateFormat, formatTypeValue); const type = getDateTimeFormatType(LongDateFormat.all(), LongDateFormat.values(), defaultLongDateFormatTypeName, LongDateFormat.Default, formatTypeValue);
return type.isMonthAfterYear; return type.isMonthAfterYear;
} }
function isShortDateMonthAfterYear(translateFn, formatTypeValue) { function isShortDateMonthAfterYear(translateFn, formatTypeValue) {
const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat'); const defaultShortDateFormatTypeName = translateFn('default.shortDateFormat');
const type = getDateTimeFormatType(datetimeConstants.allShortDateFormat, datetimeConstants.allShortDateFormatArray, defaultShortDateFormatTypeName, datetimeConstants.defaultShortDateFormat, formatTypeValue); const type = getDateTimeFormatType(ShortDateFormat.all(), ShortDateFormat.values(), defaultShortDateFormatTypeName, ShortDateFormat.Default, formatTypeValue);
return type.isMonthAfterYear; return type.isMonthAfterYear;
} }
function getI18nLongTimeFormat(translateFn, formatTypeValue) { function getI18nLongTimeFormat(translateFn, formatTypeValue) {
const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat'); const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allLongTimeFormat, datetimeConstants.allLongTimeFormatArray, 'format.longTime', defaultLongTimeFormatTypeName, datetimeConstants.defaultLongTimeFormat, formatTypeValue); return getDateTimeFormat(translateFn, LongTimeFormat.values(), LongTimeFormat.values(), 'format.longTime', defaultLongTimeFormatTypeName, LongTimeFormat.Default, formatTypeValue);
} }
function getI18nShortTimeFormat(translateFn, formatTypeValue) { function getI18nShortTimeFormat(translateFn, formatTypeValue) {
const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat'); const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat');
return getDateTimeFormat(translateFn, datetimeConstants.allShortTimeFormat, datetimeConstants.allShortTimeFormatArray, 'format.shortTime', defaultShortTimeFormatTypeName, datetimeConstants.defaultShortTimeFormat, formatTypeValue); return getDateTimeFormat(translateFn, ShortTimeFormat.values(), ShortTimeFormat.values(), 'format.shortTime', defaultShortTimeFormatTypeName, ShortTimeFormat.Default, formatTypeValue);
} }
function formatYearQuarter(translateFn, year, quarter) { function formatYearQuarter(translateFn, year, quarter) {
@@ -485,35 +489,35 @@ function formatYearQuarter(translateFn, year, quarter) {
function isLongTime24HourFormat(translateFn, formatTypeValue) { function isLongTime24HourFormat(translateFn, formatTypeValue) {
const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat'); const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat');
const type = getDateTimeFormatType(datetimeConstants.allLongTimeFormat, datetimeConstants.allLongTimeFormatArray, defaultLongTimeFormatTypeName, datetimeConstants.defaultLongTimeFormat, formatTypeValue); const type = getDateTimeFormatType(LongTimeFormat.values(), LongTimeFormat.values(), defaultLongTimeFormatTypeName, LongTimeFormat.Default, formatTypeValue);
return type.is24HourFormat; return type.is24HourFormat;
} }
function isLongTimeMeridiemIndicatorFirst(translateFn, formatTypeValue) { function isLongTimeMeridiemIndicatorFirst(translateFn, formatTypeValue) {
const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat'); const defaultLongTimeFormatTypeName = translateFn('default.longTimeFormat');
const type = getDateTimeFormatType(datetimeConstants.allLongTimeFormat, datetimeConstants.allLongTimeFormatArray, defaultLongTimeFormatTypeName, datetimeConstants.defaultLongTimeFormat, formatTypeValue); const type = getDateTimeFormatType(LongTimeFormat.values(), LongTimeFormat.values(), defaultLongTimeFormatTypeName, LongTimeFormat.Default, formatTypeValue);
return type.isMeridiemIndicatorFirst; return type.isMeridiemIndicatorFirst;
} }
function isShortTime24HourFormat(translateFn, formatTypeValue) { function isShortTime24HourFormat(translateFn, formatTypeValue) {
const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat'); const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat');
const type = getDateTimeFormatType(datetimeConstants.allShortTimeFormat, datetimeConstants.allShortTimeFormatArray, defaultShortTimeFormatTypeName, datetimeConstants.defaultShortTimeFormat, formatTypeValue); const type = getDateTimeFormatType(ShortTimeFormat.values(), ShortTimeFormat.values(), defaultShortTimeFormatTypeName, ShortTimeFormat.Default, formatTypeValue);
return type.is24HourFormat; return type.is24HourFormat;
} }
function isShortTimeMeridiemIndicatorFirst(translateFn, formatTypeValue) { function isShortTimeMeridiemIndicatorFirst(translateFn, formatTypeValue) {
const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat'); const defaultShortTimeFormatTypeName = translateFn('default.shortTimeFormat');
const type = getDateTimeFormatType(datetimeConstants.allShortTimeFormat, datetimeConstants.allShortTimeFormatArray, defaultShortTimeFormatTypeName, datetimeConstants.defaultShortTimeFormat, formatTypeValue); const type = getDateTimeFormatType(ShortTimeFormat.values(), ShortTimeFormat.values(), defaultShortTimeFormatTypeName, ShortTimeFormat.Default, formatTypeValue);
return type.isMeridiemIndicatorFirst; return type.isMeridiemIndicatorFirst;
} }
function getDateTimeFormats(translateFn, allFormatMap, allFormatArray, localeFormatPathPrefix, localeDefaultFormatTypeName, systemDefaultFormatType) { function getDateTimeFormats(translateFn, allFormatMap, allFormatArray, localeFormatPathPrefix, localeDefaultFormatTypeName, systemDefaultFormatType) {
const defaultFormat = getDateTimeFormat(translateFn, allFormatMap, allFormatArray, const defaultFormat = getDateTimeFormat(translateFn, allFormatMap, allFormatArray,
localeFormatPathPrefix, localeDefaultFormatTypeName, systemDefaultFormatType, datetimeConstants.defaultDateTimeFormatValue); localeFormatPathPrefix, localeDefaultFormatTypeName, systemDefaultFormatType, LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE);
const ret = []; const ret = [];
ret.push({ ret.push({
type: datetimeConstants.defaultDateTimeFormatValue, type: LANGUAGE_DEFAULT_DATE_TIME_FORMAT_VALUE,
format: defaultFormat, format: defaultFormat,
displayName: `${translateFn('Language Default')} (${formatCurrentTime(defaultFormat)})` displayName: `${translateFn('Language Default')} (${formatCurrentTime(defaultFormat)})`
}); });
@@ -635,68 +639,66 @@ function getAllCurrencies(translateFn) {
} }
function getAllWeekDays(firstDayOfWeek, translateFn) { function getAllWeekDays(firstDayOfWeek, translateFn) {
const allWeekDays = []; const ret = [];
const allWeekDays = WeekDay.values();
if (!isNumber(firstDayOfWeek)) { if (!isNumber(firstDayOfWeek)) {
firstDayOfWeek = datetimeConstants.allWeekDays.Sunday.type; firstDayOfWeek = WeekDay.DefaultFirstDay.type;
} }
for (let i = firstDayOfWeek; i < datetimeConstants.allWeekDaysArray.length; i++) { for (let i = firstDayOfWeek; i < allWeekDays.length; i++) {
const weekDay = datetimeConstants.allWeekDaysArray[i]; const weekDay = allWeekDays[i];
allWeekDays.push({ ret.push({
type: weekDay.type, type: weekDay.type,
displayName: translateFn(`datetime.${weekDay.name}.long`) displayName: translateFn(`datetime.${weekDay.name}.long`)
}); });
} }
for (let i = 0; i < firstDayOfWeek; i++) { for (let i = 0; i < firstDayOfWeek; i++) {
const weekDay = datetimeConstants.allWeekDaysArray[i]; const weekDay = allWeekDays[i];
allWeekDays.push({ ret.push({
type: weekDay.type, type: weekDay.type,
displayName: translateFn(`datetime.${weekDay.name}.long`) displayName: translateFn(`datetime.${weekDay.name}.long`)
}); });
} }
return allWeekDays; return ret;
} }
function getAllDateRanges(scene, includeCustom, includeBillingCycle, translateFn) { function getAllDateRanges(scene, includeCustom, includeBillingCycle, translateFn) {
const allDateRanges = []; const ret = [];
const allDateRanges = DateRange.values();
for (let dateRangeField in datetimeConstants.allDateRanges) { for (let i = 0; i < allDateRanges.length; i++) {
if (!Object.prototype.hasOwnProperty.call(datetimeConstants.allDateRanges, dateRangeField)) { const dateRange = allDateRanges[i];
if (!dateRange.isAvailableForScene(scene)) {
continue; continue;
} }
const dateRangeType = datetimeConstants.allDateRanges[dateRangeField]; if (dateRange.isBillingCycle) {
if (!dateRangeType.availableScenes[scene]) {
continue;
}
if (dateRangeType.isBillingCycle) {
if (includeBillingCycle) { if (includeBillingCycle) {
allDateRanges.push({ ret.push({
type: dateRangeType.type, type: dateRange.type,
displayName: translateFn(dateRangeType.name), displayName: translateFn(dateRange.name),
isBillingCycle: dateRangeType.isBillingCycle isBillingCycle: dateRange.isBillingCycle
}); });
} }
continue; continue;
} }
if (includeCustom || dateRangeType.type !== datetimeConstants.allDateRanges.Custom.type) { if (includeCustom || dateRange.type !== DateRange.Custom.type) {
allDateRanges.push({ ret.push({
type: dateRangeType.type, type: dateRange.type,
displayName: translateFn(dateRangeType.name) displayName: translateFn(dateRange.name)
}); });
} }
} }
return allDateRanges; return ret;
} }
function getAllRecentMonthDateRanges(userStore, includeAll, includeCustom, translateFn) { function getAllRecentMonthDateRanges(userStore, includeAll, includeCustom, translateFn) {
@@ -705,7 +707,7 @@ function getAllRecentMonthDateRanges(userStore, includeAll, includeCustom, trans
if (includeAll) { if (includeAll) {
allRecentMonthDateRanges.push({ allRecentMonthDateRanges.push({
dateType: datetimeConstants.allDateRanges.All.type, dateType: DateRange.All.type,
minTime: 0, minTime: 0,
maxTime: 0, maxTime: 0,
displayName: translateFn('All') displayName: translateFn('All')
@@ -728,7 +730,7 @@ function getAllRecentMonthDateRanges(userStore, includeAll, includeCustom, trans
if (includeCustom) { if (includeCustom) {
allRecentMonthDateRanges.push({ allRecentMonthDateRanges.push({
dateType: datetimeConstants.allDateRanges.Custom.type, dateType: DateRange.Custom.type,
minTime: 0, minTime: 0,
maxTime: 0, maxTime: 0,
displayName: translateFn('Custom Date') displayName: translateFn('Custom Date')
@@ -739,18 +741,16 @@ function getAllRecentMonthDateRanges(userStore, includeAll, includeCustom, trans
} }
function getDateRangeDisplayName(userStore, dateType, startTime, endTime, translateFn) { function getDateRangeDisplayName(userStore, dateType, startTime, endTime, translateFn) {
if (dateType === datetimeConstants.allDateRanges.All.type) { if (dateType === DateRange.All.type) {
return translateFn(datetimeConstants.allDateRanges.All.name); return translateFn(DateRange.All.name);
} }
for (let dateRangeField in datetimeConstants.allDateRanges) { const allDateRanges = DateRange.values();
if (!Object.prototype.hasOwnProperty.call(datetimeConstants.allDateRanges, dateRangeField)) {
continue;
}
const dateRange = datetimeConstants.allDateRanges[dateRangeField]; for (let i = 0; i < allDateRanges.length; i++) {
const dateRange = allDateRanges[i];
if (dateRange && dateRange.type !== datetimeConstants.allDateRanges.Custom.type && dateRange.type === dateType && dateRange.name) { if (dateRange && dateRange.type !== DateRange.Custom.type && dateRange.type === dateType && dateRange.name) {
return translateFn(dateRange.name); return translateFn(dateRange.name);
} }
} }
@@ -1560,9 +1560,9 @@ function setLanguage(i18nGlobal, locale, force) {
weekdaysMin : getAllMinWeekdayNames(i18nGlobal.t), weekdaysMin : getAllMinWeekdayNames(i18nGlobal.t),
meridiem: function (hours) { meridiem: function (hours) {
if (isPM(hours)) { if (isPM(hours)) {
return i18nGlobal.t(`datetime.${datetimeConstants.allMeridiemIndicators.PM}.content`); return i18nGlobal.t(`datetime.${MeridiemIndicator.PM.name}.content`);
} else { } else {
return i18nGlobal.t(`datetime.${datetimeConstants.allMeridiemIndicators.AM}.content`); return i18nGlobal.t(`datetime.${MeridiemIndicator.AM.name}.content`);
} }
} }
}); });
@@ -1572,10 +1572,10 @@ function setLanguage(i18nGlobal, locale, force) {
const defaultCurrency = getDefaultCurrency(i18nGlobal.t); const defaultCurrency = getDefaultCurrency(i18nGlobal.t);
const defaultFirstDayOfWeekName = getDefaultFirstDayOfWeek(i18nGlobal.t); const defaultFirstDayOfWeekName = getDefaultFirstDayOfWeek(i18nGlobal.t);
let defaultFirstDayOfWeek = datetimeConstants.defaultFirstDayOfWeek; let defaultFirstDayOfWeek = WeekDay.DefaultFirstDay.type;
if (datetimeConstants.allWeekDays[defaultFirstDayOfWeekName]) { if (WeekDay.parse(defaultFirstDayOfWeekName)) {
defaultFirstDayOfWeek = datetimeConstants.allWeekDays[defaultFirstDayOfWeekName].type; defaultFirstDayOfWeek = WeekDay.parse(defaultFirstDayOfWeekName).type;
} }
return { return {
@@ -1666,7 +1666,7 @@ export function i18nFunctions(i18nGlobal) {
getDefaultCurrency: () => getDefaultCurrency(i18nGlobal.t), getDefaultCurrency: () => getDefaultCurrency(i18nGlobal.t),
getDefaultFirstDayOfWeek: () => getDefaultFirstDayOfWeek(i18nGlobal.t), getDefaultFirstDayOfWeek: () => getDefaultFirstDayOfWeek(i18nGlobal.t),
getCurrencyName: (currencyCode) => getCurrencyName(currencyCode, i18nGlobal.t), getCurrencyName: (currencyCode) => getCurrencyName(currencyCode, i18nGlobal.t),
getAllMeridiemIndicatorNames: () => getAllMeridiemIndicatorNames(i18nGlobal.t), getAllMeridiemIndicators: () => getAllMeridiemIndicators(i18nGlobal.t),
getAllLongMonthNames: () => getAllLongMonthNames(i18nGlobal.t), getAllLongMonthNames: () => getAllLongMonthNames(i18nGlobal.t),
getAllShortMonthNames: () => getAllShortMonthNames(i18nGlobal.t), getAllShortMonthNames: () => getAllShortMonthNames(i18nGlobal.t),
getAllLongWeekdayNames: () => getAllLongWeekdayNames(i18nGlobal.t), getAllLongWeekdayNames: () => getAllLongWeekdayNames(i18nGlobal.t),
+2 -2
View File
@@ -1,7 +1,7 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { WeekDay } from '@/core/datetime.ts';
import { DEFAULT_CURRENCY_CODE } from '@/consts/currency.ts'; import { DEFAULT_CURRENCY_CODE } from '@/consts/currency.ts';
import datetimeConstants from '@/consts/datetime.js';
import * as settings from '@/lib/settings.js'; import * as settings from '@/lib/settings.js';
export const useSettingsStore = defineStore('settings', { export const useSettingsStore = defineStore('settings', {
@@ -37,7 +37,7 @@ export const useSettingsStore = defineStore('settings', {
}, },
localeDefaultSettings: { localeDefaultSettings: {
currency: DEFAULT_CURRENCY_CODE, currency: DEFAULT_CURRENCY_CODE,
firstDayOfWeek: datetimeConstants.defaultFirstDayOfWeek firstDayOfWeek: WeekDay.DefaultFirstDay.type
} }
}), }),
actions: { actions: {
+8 -10
View File
@@ -6,9 +6,9 @@ import { useAccountsStore } from './account.js';
import { useTransactionCategoriesStore } from './transactionCategory.js'; import { useTransactionCategoriesStore } from './transactionCategory.js';
import { useExchangeRatesStore } from './exchangeRates.js'; import { useExchangeRatesStore } from './exchangeRates.js';
import { DateRangeScene, DateRange } from '@/core/datetime';
import { CategoryType } from '@/core/category.ts'; import { CategoryType } from '@/core/category.ts';
import { TransactionTagFilterType } from '@/core/transaction.ts'; import { TransactionTagFilterType } from '@/core/transaction.ts';
import datetimeConstants from '@/consts/datetime.js';
import statisticsConstants from '@/consts/statistics.js'; import statisticsConstants from '@/consts/statistics.js';
import { DEFAULT_ACCOUNT_ICON, DEFAULT_CATEGORY_ICON } from '@/consts/icon.ts'; import { DEFAULT_ACCOUNT_ICON, DEFAULT_CATEGORY_ICON } from '@/consts/icon.ts';
import { DEFAULT_ACCOUNT_COLOR, DEFAULT_CATEGORY_COLOR } from '@/consts/color.ts'; import { DEFAULT_ACCOUNT_COLOR, DEFAULT_CATEGORY_COLOR } from '@/consts/color.ts';
@@ -605,13 +605,12 @@ export const useStatisticsStore = defineStore('statistics', {
let categoricalChartDateTypeValid = true; let categoricalChartDateTypeValid = true;
if (!datetimeConstants.allDateRangesMap[this.transactionStatisticsFilter.categoricalChartDateType] || if (!DateRange.isAvailableForScene(this.transactionStatisticsFilter.categoricalChartDateType, DateRangeScene.Normal)) {
!datetimeConstants.allDateRangesMap[this.transactionStatisticsFilter.categoricalChartDateType].availableScenes[datetimeConstants.allDateRangeScenes.Normal]) {
this.transactionStatisticsFilter.categoricalChartDateType = statisticsConstants.defaultCategoricalChartDataRangeType; this.transactionStatisticsFilter.categoricalChartDateType = statisticsConstants.defaultCategoricalChartDataRangeType;
categoricalChartDateTypeValid = false; categoricalChartDateTypeValid = false;
} }
if (categoricalChartDateTypeValid && this.transactionStatisticsFilter.categoricalChartDateType === datetimeConstants.allDateRanges.Custom.type) { if (categoricalChartDateTypeValid && this.transactionStatisticsFilter.categoricalChartDateType === DateRange.Custom.type) {
if (filter && isInteger(filter.categoricalChartStartTime)) { if (filter && isInteger(filter.categoricalChartStartTime)) {
this.transactionStatisticsFilter.categoricalChartStartTime = filter.categoricalChartStartTime; this.transactionStatisticsFilter.categoricalChartStartTime = filter.categoricalChartStartTime;
} else { } else {
@@ -648,13 +647,12 @@ export const useStatisticsStore = defineStore('statistics', {
let trendChartDateTypeValid = true; let trendChartDateTypeValid = true;
if (!datetimeConstants.allDateRangesMap[this.transactionStatisticsFilter.trendChartDateType] || if (!DateRange.isAvailableForScene(this.transactionStatisticsFilter.trendChartDateType, DateRangeScene.TrendAnalysis)) {
!datetimeConstants.allDateRangesMap[this.transactionStatisticsFilter.trendChartDateType].availableScenes[datetimeConstants.allDateRangeScenes.TrendAnalysis]) {
this.transactionStatisticsFilter.trendChartDateType = statisticsConstants.defaultTrendChartDataRangeType; this.transactionStatisticsFilter.trendChartDateType = statisticsConstants.defaultTrendChartDataRangeType;
trendChartDateTypeValid = false; trendChartDateTypeValid = false;
} }
if (trendChartDateTypeValid && this.transactionStatisticsFilter.trendChartDateType === datetimeConstants.allDateRanges.Custom.type) { if (trendChartDateTypeValid && this.transactionStatisticsFilter.trendChartDateType === DateRange.Custom.type) {
if (filter && isYearMonth(filter.trendChartStartYearMonth)) { if (filter && isYearMonth(filter.trendChartStartYearMonth)) {
this.transactionStatisticsFilter.trendChartStartYearMonth = filter.trendChartStartYearMonth; this.transactionStatisticsFilter.trendChartStartYearMonth = filter.trendChartStartYearMonth;
} else { } else {
@@ -792,7 +790,7 @@ export const useStatisticsStore = defineStore('statistics', {
querys.push('chartType=' + this.transactionStatisticsFilter.categoricalChartType); querys.push('chartType=' + this.transactionStatisticsFilter.categoricalChartType);
querys.push('chartDateType=' + this.transactionStatisticsFilter.categoricalChartDateType); querys.push('chartDateType=' + this.transactionStatisticsFilter.categoricalChartDateType);
if (this.transactionStatisticsFilter.categoricalChartDateType === datetimeConstants.allDateRanges.Custom.type) { if (this.transactionStatisticsFilter.categoricalChartDateType === DateRange.Custom.type) {
querys.push('startTime=' + this.transactionStatisticsFilter.categoricalChartStartTime); querys.push('startTime=' + this.transactionStatisticsFilter.categoricalChartStartTime);
querys.push('endTime=' + this.transactionStatisticsFilter.categoricalChartEndTime); querys.push('endTime=' + this.transactionStatisticsFilter.categoricalChartEndTime);
} }
@@ -800,7 +798,7 @@ export const useStatisticsStore = defineStore('statistics', {
querys.push('chartType=' + this.transactionStatisticsFilter.trendChartType); querys.push('chartType=' + this.transactionStatisticsFilter.trendChartType);
querys.push('chartDateType=' + this.transactionStatisticsFilter.trendChartDateType); querys.push('chartDateType=' + this.transactionStatisticsFilter.trendChartDateType);
if (this.transactionStatisticsFilter.trendChartDateType === datetimeConstants.allDateRanges.Custom.type) { if (this.transactionStatisticsFilter.trendChartDateType === DateRange.Custom.type) {
querys.push('startTime=' + this.transactionStatisticsFilter.trendChartStartYearMonth); querys.push('startTime=' + this.transactionStatisticsFilter.trendChartStartYearMonth);
querys.push('endTime=' + this.transactionStatisticsFilter.trendChartEndYearMonth); querys.push('endTime=' + this.transactionStatisticsFilter.trendChartEndYearMonth);
} }
@@ -896,7 +894,7 @@ export const useStatisticsStore = defineStore('statistics', {
&& this.transactionStatisticsFilter.chartDataType !== statisticsConstants.allChartDataTypes.AccountTotalLiabilities.type) { && this.transactionStatisticsFilter.chartDataType !== statisticsConstants.allChartDataTypes.AccountTotalLiabilities.type) {
querys.push('dateType=' + this.transactionStatisticsFilter.categoricalChartDateType); querys.push('dateType=' + this.transactionStatisticsFilter.categoricalChartDateType);
if (this.transactionStatisticsFilter.categoricalChartDateType === datetimeConstants.allDateRanges.Custom.type) { if (this.transactionStatisticsFilter.categoricalChartDateType === DateRange.Custom.type) {
querys.push('minTime=' + this.transactionStatisticsFilter.categoricalChartStartTime); querys.push('minTime=' + this.transactionStatisticsFilter.categoricalChartStartTime);
querys.push('maxTime=' + this.transactionStatisticsFilter.categoricalChartEndTime); querys.push('maxTime=' + this.transactionStatisticsFilter.categoricalChartEndTime);
} }
+7 -7
View File
@@ -8,10 +8,10 @@ import { useOverviewStore } from './overview.js';
import { useStatisticsStore } from './statistics.js'; import { useStatisticsStore } from './statistics.js';
import { useExchangeRatesStore } from './exchangeRates.js'; import { useExchangeRatesStore } from './exchangeRates.js';
import { DateRange } from '@/core/datetime.ts';
import { CategoryType } from '@/core/category.ts'; import { CategoryType } from '@/core/category.ts';
import { TransactionType, TransactionTagFilterType } from '@/core/transaction.ts'; import { TransactionType, TransactionTagFilterType } from '@/core/transaction.ts';
import { TRANSACTION_MIN_AMOUNT, TRANSACTION_MAX_AMOUNT } from '@/consts/transaction.ts'; import { TRANSACTION_MIN_AMOUNT, TRANSACTION_MAX_AMOUNT } from '@/consts/transaction.ts';
import datetimeConstants from '@/consts/datetime.js';
import userState from '@/lib/userstate.js'; import userState from '@/lib/userstate.js';
import services from '@/lib/services.js'; import services from '@/lib/services.js';
import logger from '@/lib/logger.js'; import logger from '@/lib/logger.js';
@@ -368,7 +368,7 @@ export const useTransactionsStore = defineStore('transactions', {
state: () => ({ state: () => ({
transactionDraft: userState.getUserTransactionDraft(), transactionDraft: userState.getUserTransactionDraft(),
transactionsFilter: { transactionsFilter: {
dateType: datetimeConstants.allDateRanges.All.type, dateType: DateRange.All.type,
maxTime: 0, maxTime: 0,
minTime: 0, minTime: 0,
type: 0, type: 0,
@@ -666,7 +666,7 @@ export const useTransactionsStore = defineStore('transactions', {
this.transactionListStateInvalid = invalidState; this.transactionListStateInvalid = invalidState;
}, },
resetTransactions() { resetTransactions() {
this.transactionsFilter.dateType = datetimeConstants.allDateRanges.All.type; this.transactionsFilter.dateType = DateRange.All.type;
this.transactionsFilter.maxTime = 0; this.transactionsFilter.maxTime = 0;
this.transactionsFilter.minTime = 0; this.transactionsFilter.minTime = 0;
this.transactionsFilter.type = 0; this.transactionsFilter.type = 0;
@@ -689,7 +689,7 @@ export const useTransactionsStore = defineStore('transactions', {
if (filter && isNumber(filter.dateType)) { if (filter && isNumber(filter.dateType)) {
this.transactionsFilter.dateType = filter.dateType; this.transactionsFilter.dateType = filter.dateType;
} else { } else {
this.transactionsFilter.dateType = datetimeConstants.allDateRanges.All.type; this.transactionsFilter.dateType = DateRange.All.type;
} }
if (filter && isNumber(filter.maxTime)) { if (filter && isNumber(filter.maxTime)) {
@@ -776,9 +776,9 @@ export const useTransactionsStore = defineStore('transactions', {
} }
if (filter && isString(filter.accountIds) && this.transactionsFilter.accountIds !== filter.accountIds) { if (filter && isString(filter.accountIds) && this.transactionsFilter.accountIds !== filter.accountIds) {
if (datetimeConstants.allBillingCycleDateRangesMap[this.transactionsFilter.dateType] && if (DateRange.isBillingCycle(this.transactionsFilter.dateType) &&
(!accountsStore.getAccountStatementDate(filter.accountIds) || accountsStore.getAccountStatementDate(filter.accountIds) !== accountsStore.getAccountStatementDate(this.transactionsFilter.accountIds))) { (!accountsStore.getAccountStatementDate(filter.accountIds) || accountsStore.getAccountStatementDate(filter.accountIds) !== accountsStore.getAccountStatementDate(this.transactionsFilter.accountIds))) {
this.transactionsFilter.dateType = datetimeConstants.allDateRanges.Custom.type; this.transactionsFilter.dateType = DateRange.Custom.type;
} }
this.transactionsFilter.accountIds = filter.accountIds; this.transactionsFilter.accountIds = filter.accountIds;
@@ -833,7 +833,7 @@ export const useTransactionsStore = defineStore('transactions', {
querys.push('dateType=' + this.transactionsFilter.dateType); querys.push('dateType=' + this.transactionsFilter.dateType);
if (datetimeConstants.allBillingCycleDateRangesMap[this.transactionsFilter.dateType] || this.transactionsFilter.dateType === datetimeConstants.allDateRanges.Custom.type) { if (DateRange.isBillingCycle(this.transactionsFilter.dateType) || this.transactionsFilter.dateType === DateRange.Custom.type) {
querys.push('maxTime=' + this.transactionsFilter.maxTime); querys.push('maxTime=' + this.transactionsFilter.maxTime);
querys.push('minTime=' + this.transactionsFilter.minTime); querys.push('minTime=' + this.transactionsFilter.minTime);
} }
+3 -3
View File
@@ -196,7 +196,7 @@ import { useUserStore } from '@/stores/user.js';
import { useAccountsStore } from '@/stores/account.js'; import { useAccountsStore } from '@/stores/account.js';
import { useOverviewStore } from '@/stores/overview.js'; import { useOverviewStore } from '@/stores/overview.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRange } from '@/core/datetime.ts';
import { ThemeType } from '@/core/theme.ts'; import { ThemeType } from '@/core/theme.ts';
import { import {
formatUnixTime, formatUnixTime,
@@ -260,7 +260,7 @@ export default {
return this.userStore.currentUserDefaultCurrency; return this.userStore.currentUserDefaultCurrency;
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
allAccounts() { allAccounts() {
return this.accountsStore.allAccounts; return this.accountsStore.allAccounts;
@@ -389,7 +389,7 @@ export default {
const maxTime = getUnixTimeBeforeUnixTime(getUnixTimeAfterUnixTime(minTime, 1, 'months'), 1, 'seconds'); const maxTime = getUnixTimeBeforeUnixTime(getUnixTimeAfterUnixTime(minTime, 1, 'months'), 1, 'seconds');
const type = e.transactionType; const type = e.transactionType;
this.$router.push(`/transaction/list?type=${type}&dateType=${datetimeConstants.allDateRanges.Custom.type}&maxTime=${maxTime}&minTime=${minTime}`); this.$router.push(`/transaction/list?type=${type}&dateType=${DateRange.Custom.type}&maxTime=${maxTime}&minTime=${minTime}`);
}, },
getDisplayCurrency(value, currencyCode) { getDisplayCurrency(value, currencyCode) {
return this.$locale.formatAmountWithCurrency(this.settingsStore, this.userStore, value, currencyCode); return this.$locale.formatAmountWithCurrency(this.settingsStore, this.userStore, value, currencyCode);
@@ -128,7 +128,7 @@
import { mapStores } from 'pinia'; import { mapStores } from 'pinia';
import { useSettingsStore } from '@/stores/setting.js'; import { useSettingsStore } from '@/stores/setting.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRangeScene } from '@/core/datetime.ts';
import statisticsConstants from '@/consts/statistics.js'; import statisticsConstants from '@/consts/statistics.js';
import AccountFilterSettingsCard from '@/views/desktop/common/cards/AccountFilterSettingsCard.vue'; import AccountFilterSettingsCard from '@/views/desktop/common/cards/AccountFilterSettingsCard.vue';
@@ -154,13 +154,13 @@ export default {
return this.$locale.getAllCategoricalChartTypes(); return this.$locale.getAllCategoricalChartTypes();
}, },
allCategoricalChartDateRanges() { allCategoricalChartDateRanges() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, false); return this.$locale.getAllDateRanges(DateRangeScene.Normal, false);
}, },
allTrendChartTypes() { allTrendChartTypes() {
return this.$locale.getAllTrendChartTypes(); return this.$locale.getAllTrendChartTypes();
}, },
allTrendChartDateRanges() { allTrendChartDateRanges() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.TrendAnalysis, false); return this.$locale.getAllDateRanges(DateRangeScene.TrendAnalysis, false);
}, },
defaultChartDataType: { defaultChartDataType: {
get: function () { get: function () {
@@ -323,9 +323,9 @@ import { useAccountsStore } from '@/stores/account.js';
import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js'; import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js';
import { useStatisticsStore } from '@/stores/statistics.js'; import { useStatisticsStore } from '@/stores/statistics.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRangeScene, DateRange } from '@/core/datetime.ts';
import statisticsConstants from '@/consts/statistics.js';
import { ThemeType } from '@/core/theme.ts'; import { ThemeType } from '@/core/theme.ts';
import statisticsConstants from '@/consts/statistics.js';
import { import {
isDefined, isDefined,
limitText, limitText,
@@ -525,13 +525,13 @@ export default {
return this.$locale.getAllStatisticsDateAggregationTypes(); return this.$locale.getAllStatisticsDateAggregationTypes();
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
allDateRangesArray() { allDateRangesArray() {
if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, true); return this.$locale.getAllDateRanges(DateRangeScene.Normal, true);
} else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.TrendAnalysis, true); return this.$locale.getAllDateRanges(DateRangeScene.TrendAnalysis, true);
} else { } else {
return []; return [];
} }
@@ -670,7 +670,7 @@ export default {
if (filter.categoricalChartDateType !== self.query.categoricalChartDateType) { if (filter.categoricalChartDateType !== self.query.categoricalChartDateType) {
needReload = true; needReload = true;
} else if (filter.categoricalChartDateType === datetimeConstants.allDateRanges.Custom.type) { } else if (filter.categoricalChartDateType === DateRange.Custom.type) {
if (filter.categoricalChartStartTime !== self.query.categoricalChartStartTime if (filter.categoricalChartStartTime !== self.query.categoricalChartStartTime
|| filter.categoricalChartEndTime !== self.query.categoricalChartEndTime) { || filter.categoricalChartEndTime !== self.query.categoricalChartEndTime) {
needReload = true; needReload = true;
@@ -689,7 +689,7 @@ export default {
if (filter.trendChartDateType !== self.query.trendChartDateType) { if (filter.trendChartDateType !== self.query.trendChartDateType) {
needReload = true; needReload = true;
} else if (filter.trendChartDateType === datetimeConstants.allDateRanges.Custom.type) { } else if (filter.trendChartDateType === DateRange.Custom.type) {
if (filter.trendChartStartYearMonth !== self.query.trendChartStartYearMonth if (filter.trendChartStartYearMonth !== self.query.trendChartStartYearMonth
|| filter.trendChartEndYearMonth !== self.query.trendChartEndYearMonth) { || filter.trendChartEndYearMonth !== self.query.trendChartEndYearMonth) {
needReload = true; needReload = true;
@@ -913,7 +913,7 @@ export default {
let changed = false; let changed = false;
if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, DateRangeScene.Normal);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
categoricalChartDateType: chartDateType, categoricalChartDateType: chartDateType,
@@ -923,7 +923,7 @@ export default {
this.showCustomDateRangeDialog = false; this.showCustomDateRangeDialog = false;
} else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
const chartDateType = getDateTypeByDateRange(getYearMonthFirstUnixTime(startTime), getYearMonthLastUnixTime(endTime), this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.TrendAnalysis); const chartDateType = getDateTypeByDateRange(getYearMonthFirstUnixTime(startTime), getYearMonthLastUnixTime(endTime), this.firstDayOfWeek, DateRangeScene.TrendAnalysis);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
trendChartDateType: chartDateType, trendChartDateType: chartDateType,
@@ -970,7 +970,7 @@ export default {
let changed = false; let changed = false;
if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
const newDateRange = getShiftedDateRangeAndDateType(this.query.categoricalChartStartTime, this.query.categoricalChartEndTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const newDateRange = getShiftedDateRangeAndDateType(this.query.categoricalChartStartTime, this.query.categoricalChartEndTime, scale, this.firstDayOfWeek, DateRangeScene.Normal);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
categoricalChartDateType: newDateRange.dateType, categoricalChartDateType: newDateRange.dateType,
@@ -978,7 +978,7 @@ export default {
categoricalChartEndTime: newDateRange.maxTime categoricalChartEndTime: newDateRange.maxTime
}); });
} else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.queryAnalysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
const newDateRange = getShiftedDateRangeAndDateType(getYearMonthFirstUnixTime(this.query.trendChartStartYearMonth), getYearMonthLastUnixTime(this.query.trendChartEndYearMonth), scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.TrendAnalysis); const newDateRange = getShiftedDateRangeAndDateType(getYearMonthFirstUnixTime(this.query.trendChartStartYearMonth), getYearMonthLastUnixTime(this.query.trendChartEndYearMonth), scale, this.firstDayOfWeek, DateRangeScene.TrendAnalysis);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
trendChartDateType: newDateRange.dateType, trendChartDateType: newDateRange.dateType,
+12 -12
View File
@@ -595,11 +595,11 @@ import { useTransactionTagsStore } from '@/stores/transactionTag.js';
import { useTransactionsStore } from '@/stores/transaction.js'; import { useTransactionsStore } from '@/stores/transaction.js';
import { useTransactionTemplatesStore } from '@/stores/transactionTemplate.js'; import { useTransactionTemplatesStore } from '@/stores/transactionTemplate.js';
import { DateRangeScene, DateRange } from '@/core/datetime.ts';
import { AccountType } from '@/core/account.ts'; import { AccountType } from '@/core/account.ts';
import { TransactionType, TransactionTagFilterType } from '@/core/transaction.ts'; import { TransactionType, TransactionTagFilterType } from '@/core/transaction.ts';
import { TemplateType } from '@/core/template.ts'; import { TemplateType } from '@/core/template.ts';
import numeralConstants from '@/consts/numeral.js'; import numeralConstants from '@/consts/numeral.js';
import datetimeConstants from '@/consts/datetime.js';
import { isString, isNumber, getNameByKeyValue } from '@/lib/common.ts'; import { isString, isNumber, getNameByKeyValue } from '@/lib/common.ts';
import logger from '@/lib/logger.js'; import logger from '@/lib/logger.js';
import { import {
@@ -746,10 +746,10 @@ export default {
return this.userStore.currentUserFirstDayOfWeek; return this.userStore.currentUserFirstDayOfWeek;
}, },
allDateRangesArray() { allDateRangesArray() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, true, !!this.accountsStore.getAccountStatementDate(this.query.accountIds)); return this.$locale.getAllDateRanges(DateRangeScene.Normal, true, !!this.accountsStore.getAccountStatementDate(this.query.accountIds));
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
recentDateRangeType: { recentDateRangeType: {
get: function () { get: function () {
@@ -1118,7 +1118,7 @@ export default {
let dateRange = getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined, this.firstDayOfWeek); let dateRange = getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined, this.firstDayOfWeek);
if (!dateRange && if (!dateRange &&
(datetimeConstants.allBillingCycleDateRangesMap[query.dateType] || query.dateType === datetimeConstants.allDateRanges.Custom.type.toString()) && (DateRange.isBillingCycle(query.dateType) || query.dateType === DateRange.Custom.type.toString()) &&
parseInt(query.maxTime) > 0 && parseInt(query.minTime) > 0) { parseInt(query.maxTime) > 0 && parseInt(query.minTime) > 0) {
dateRange = { dateRange = {
dateType: parseInt(query.dateType), dateType: parseInt(query.dateType),
@@ -1208,18 +1208,18 @@ export default {
}); });
}, },
shiftDateRange(startTime, endTime, scale) { shiftDateRange(startTime, endTime, scale) {
if (this.recentDateRangeType === datetimeConstants.allDateRanges.All.type) { if (this.recentDateRangeType === DateRange.All.type) {
return; return;
} }
let newDateRange = null; let newDateRange = null;
if (datetimeConstants.allBillingCycleDateRangesMap[this.query.dateType] || this.query.dateType === this.allDateRanges.Custom.type) { if (DateRange.isBillingCycle(this.query.dateType) || this.query.dateType === this.allDateRanges.Custom.type) {
newDateRange = getShiftedDateRangeAndDateTypeForBillingCycle(startTime, endTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds)); newDateRange = getShiftedDateRangeAndDateTypeForBillingCycle(startTime, endTime, scale, this.firstDayOfWeek, DateRangeScene.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds));
} }
if (!newDateRange) { if (!newDateRange) {
newDateRange = getShiftedDateRangeAndDateType(startTime, endTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); newDateRange = getShiftedDateRangeAndDateType(startTime, endTime, scale, this.firstDayOfWeek, DateRangeScene.Normal);
} }
const changed = this.transactionsStore.updateTransactionListFilter({ const changed = this.transactionsStore.updateTransactionListFilter({
@@ -1237,14 +1237,14 @@ export default {
}, },
changeDateFilter(dateRange) { changeDateFilter(dateRange) {
if (isNumber(dateRange)) { if (isNumber(dateRange)) {
if (datetimeConstants.allBillingCycleDateRangesMap[dateRange]) { if (DateRange.isBillingCycle(dateRange)) {
dateRange = getDateRangeByBillingCycleDateType(dateRange, this.firstDayOfWeek, this.accountsStore.getAccountStatementDate(this.query.accountIds)); dateRange = getDateRangeByBillingCycleDateType(dateRange, this.firstDayOfWeek, this.accountsStore.getAccountStatementDate(this.query.accountIds));
} else { } else {
dateRange = getDateRangeByDateType(dateRange, this.firstDayOfWeek); dateRange = getDateRangeByDateType(dateRange, this.firstDayOfWeek);
} }
} }
if (dateRange.dateType === datetimeConstants.allDateRanges.Custom.type && if (dateRange.dateType === DateRange.Custom.type &&
!dateRange.minTime && !dateRange.maxTime) { // Custom !dateRange.minTime && !dateRange.maxTime) { // Custom
if (!this.query.minTime || !this.query.maxTime) { if (!this.query.minTime || !this.query.maxTime) {
this.customMaxDatetime = getActualUnixTimeForStore(getCurrentUnixTime(), this.currentTimezoneOffsetMinutes, getBrowserTimezoneOffsetMinutes()); this.customMaxDatetime = getActualUnixTimeForStore(getCurrentUnixTime(), this.currentTimezoneOffsetMinutes, getBrowserTimezoneOffsetMinutes());
@@ -1280,10 +1280,10 @@ export default {
return; return;
} }
let dateType = getDateTypeByBillingCycleDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds)); let dateType = getDateTypeByBillingCycleDateRange(minTime, maxTime, this.firstDayOfWeek, DateRangeScene.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds));
if (!dateType) { if (!dateType) {
dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, DateRangeScene.Normal);
} }
if (this.query.dateType === dateType && this.query.maxTime === maxTime && this.query.minTime === minTime) { if (this.query.dateType === dateType && this.query.maxTime === maxTime && this.query.minTime === minTime) {
@@ -337,7 +337,7 @@ import { useUserStore } from '@/stores/user.js';
import { useAccountsStore } from '@/stores/account.js'; import { useAccountsStore } from '@/stores/account.js';
import { useOverviewStore } from '@/stores/overview.js'; import { useOverviewStore } from '@/stores/overview.js';
import datetimeConstants from '@/consts/datetime.js'; import { WeekDay } from '@/core/datetime.ts';
import { SUPPORTED_IMAGE_EXTENSIONS } from '@/consts/file.ts'; import { SUPPORTED_IMAGE_EXTENSIONS } from '@/consts/file.ts';
import { getNameByKeyValue } from '@/lib/common.ts'; import { getNameByKeyValue } from '@/lib/common.ts';
import { generateRandomUUID } from '@/lib/misc.ts'; import { generateRandomUUID } from '@/lib/misc.ts';
@@ -354,7 +354,7 @@ export default {
data() { data() {
const self = this; const self = this;
const defaultFirstDayOfWeekName = self.$locale.getDefaultFirstDayOfWeek(); const defaultFirstDayOfWeekName = self.$locale.getDefaultFirstDayOfWeek();
const defaultFirstDayOfWeek = datetimeConstants.allWeekDays[defaultFirstDayOfWeekName] ? datetimeConstants.allWeekDays[defaultFirstDayOfWeekName].type : datetimeConstants.defaultFirstDayOfWeek; const defaultFirstDayOfWeek = WeekDay.parse(defaultFirstDayOfWeekName) ? WeekDay.parse(defaultFirstDayOfWeekName).type : WeekDay.DefaultFirstDay.type;
return { return {
newProfile: { newProfile: {
+2 -2
View File
@@ -207,7 +207,7 @@ import { useUserStore } from '@/stores/user.js';
import { useTransactionTemplatesStore } from '@/stores/transactionTemplate.js'; import { useTransactionTemplatesStore } from '@/stores/transactionTemplate.js';
import { useOverviewStore } from '@/stores/overview.js'; import { useOverviewStore } from '@/stores/overview.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRange } from '@/core/datetime.ts';
import { TemplateType } from '@/core/template.ts'; import { TemplateType } from '@/core/template.ts';
import { formatUnixTime } from '@/lib/datetime.js'; import { formatUnixTime } from '@/lib/datetime.js';
@@ -239,7 +239,7 @@ export default {
return allTemplates[TemplateType.Normal.type] || []; return allTemplates[TemplateType.Normal.type] || [];
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
displayDateRange() { displayDateRange() {
const self = this; const self = this;
+3 -3
View File
@@ -91,7 +91,7 @@
import { mapStores } from 'pinia'; import { mapStores } from 'pinia';
import { useSettingsStore } from '@/stores/setting.js'; import { useSettingsStore } from '@/stores/setting.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRangeScene } from '@/core/datetime.ts';
import statisticsConstants from '@/consts/statistics.js'; import statisticsConstants from '@/consts/statistics.js';
export default { export default {
@@ -110,13 +110,13 @@ export default {
return this.$locale.getAllCategoricalChartTypes(); return this.$locale.getAllCategoricalChartTypes();
}, },
allCategoricalChartDateRanges() { allCategoricalChartDateRanges() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, false); return this.$locale.getAllDateRanges(DateRangeScene.Normal, false);
}, },
allTrendChartTypes() { allTrendChartTypes() {
return this.$locale.getAllTrendChartTypes(); return this.$locale.getAllTrendChartTypes();
}, },
allTrendChartDateRanges() { allTrendChartDateRanges() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.TrendAnalysis, false); return this.$locale.getAllDateRanges(DateRangeScene.TrendAnalysis, false);
}, },
defaultChartDataType: { defaultChartDataType: {
get: function () { get: function () {
@@ -331,7 +331,7 @@ import { useAccountsStore } from '@/stores/account.js';
import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js'; import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js';
import { useStatisticsStore } from '@/stores/statistics.js'; import { useStatisticsStore } from '@/stores/statistics.js';
import datetimeConstants from '@/consts/datetime.js'; import { DateRangeScene, DateRange } from '@/core/datetime.ts';
import statisticsConstants from '@/consts/statistics.js'; import statisticsConstants from '@/consts/statistics.js';
import { getNameByKeyValue, limitText } from '@/lib/common.ts'; import { getNameByKeyValue, limitText } from '@/lib/common.ts';
import { formatPercent } from '@/lib/numeral.js'; import { formatPercent } from '@/lib/numeral.js';
@@ -458,13 +458,13 @@ export default {
return this.$locale.getAllStatisticsDateAggregationTypes(); return this.$locale.getAllStatisticsDateAggregationTypes();
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
allDateRangesArray() { allDateRangesArray() {
if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, true); return this.$locale.getAllDateRanges(DateRangeScene.Normal, true);
} else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.TrendAnalysis, true); return this.$locale.getAllDateRanges(DateRangeScene.TrendAnalysis, true);
} else { } else {
return []; return [];
} }
@@ -711,7 +711,7 @@ export default {
let changed = false; let changed = false;
if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const chartDateType = getDateTypeByDateRange(startTime, endTime, this.firstDayOfWeek, DateRangeScene.Normal);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
categoricalChartDateType: chartDateType, categoricalChartDateType: chartDateType,
@@ -721,7 +721,7 @@ export default {
this.showCustomDateRangeSheet = false; this.showCustomDateRangeSheet = false;
} else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
const chartDateType = getDateTypeByDateRange(getYearMonthFirstUnixTime(startTime), getYearMonthLastUnixTime(endTime), this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.TrendAnalysis); const chartDateType = getDateTypeByDateRange(getYearMonthFirstUnixTime(startTime), getYearMonthLastUnixTime(endTime), this.firstDayOfWeek, DateRangeScene.TrendAnalysis);
this.statisticsStore.updateTransactionStatisticsFilter({ this.statisticsStore.updateTransactionStatisticsFilter({
trendChartDateType: chartDateType, trendChartDateType: chartDateType,
@@ -766,7 +766,7 @@ export default {
let changed = false; let changed = false;
if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) { if (this.analysisType === statisticsConstants.allAnalysisTypes.CategoricalAnalysis) {
const newDateRange = getShiftedDateRangeAndDateType(query.categoricalChartStartTime, query.categoricalChartEndTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); const newDateRange = getShiftedDateRangeAndDateType(query.categoricalChartStartTime, query.categoricalChartEndTime, scale, this.firstDayOfWeek, DateRangeScene.Normal);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
categoricalChartDateType: newDateRange.dateType, categoricalChartDateType: newDateRange.dateType,
@@ -774,7 +774,7 @@ export default {
categoricalChartEndTime: newDateRange.maxTime categoricalChartEndTime: newDateRange.maxTime
}); });
} else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) { } else if (this.analysisType === statisticsConstants.allAnalysisTypes.TrendAnalysis) {
const newDateRange = getShiftedDateRangeAndDateType(getYearMonthFirstUnixTime(query.trendChartStartYearMonth), getYearMonthLastUnixTime(query.trendChartEndYearMonth), scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.TrendAnalysis); const newDateRange = getShiftedDateRangeAndDateType(getYearMonthFirstUnixTime(query.trendChartStartYearMonth), getYearMonthLastUnixTime(query.trendChartEndYearMonth), scale, this.firstDayOfWeek, DateRangeScene.TrendAnalysis);
changed = this.statisticsStore.updateTransactionStatisticsFilter({ changed = this.statisticsStore.updateTransactionStatisticsFilter({
trendChartDateType: newDateRange.dateType, trendChartDateType: newDateRange.dateType,
+10 -10
View File
@@ -528,10 +528,10 @@ import { useTransactionCategoriesStore } from '@/stores/transactionCategory.js';
import { useTransactionTagsStore } from '@/stores/transactionTag.js'; import { useTransactionTagsStore } from '@/stores/transactionTag.js';
import { useTransactionsStore } from '@/stores/transaction.js'; import { useTransactionsStore } from '@/stores/transaction.js';
import { DateRangeScene, DateRange } from '@/core/datetime.ts';
import { AccountType } from '@/core/account.ts'; import { AccountType } from '@/core/account.ts';
import { TransactionType } from '@/core/transaction.ts'; import { TransactionType } from '@/core/transaction.ts';
import numeralConstants from '@/consts/numeral.js'; import numeralConstants from '@/consts/numeral.js';
import datetimeConstants from '@/consts/datetime.js';
import { getNameByKeyValue } from '@/lib/common.ts'; import { getNameByKeyValue } from '@/lib/common.ts';
import { import {
getCurrentUnixTime, getCurrentUnixTime,
@@ -737,10 +737,10 @@ export default {
return this.transactionTagsStore.allAvailableTagsCount; return this.transactionTagsStore.allAvailableTagsCount;
}, },
allDateRanges() { allDateRanges() {
return datetimeConstants.allDateRanges; return DateRange.all();
}, },
allDateRangesArray() { allDateRangesArray() {
return this.$locale.getAllDateRanges(datetimeConstants.allDateRangeScenes.Normal, true, !!this.accountsStore.getAccountStatementDate(this.query.accountIds)); return this.$locale.getAllDateRanges(DateRangeScene.Normal, true, !!this.accountsStore.getAccountStatementDate(this.query.accountIds));
}, },
showTotalAmountInTransactionListPage() { showTotalAmountInTransactionListPage() {
return this.settingsStore.appSettings.showTotalAmountInTransactionListPage; return this.settingsStore.appSettings.showTotalAmountInTransactionListPage;
@@ -756,7 +756,7 @@ export default {
let dateRange = getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined, self.firstDayOfWeek); let dateRange = getDateRangeByDateType(query.dateType ? parseInt(query.dateType) : undefined, self.firstDayOfWeek);
if (!dateRange && if (!dateRange &&
(datetimeConstants.allBillingCycleDateRangesMap[query.dateType] || query.dateType === datetimeConstants.allDateRanges.Custom.type.toString()) && (DateRange.isBillingCycle(query.dateType) || query.dateType === DateRange.Custom.type.toString()) &&
parseInt(query.maxTime) > 0 && parseInt(query.minTime) > 0) { parseInt(query.maxTime) > 0 && parseInt(query.minTime) > 0) {
dateRange = { dateRange = {
dateType: parseInt(query.dateType), dateType: parseInt(query.dateType),
@@ -885,7 +885,7 @@ export default {
let dateRange = null; let dateRange = null;
if (datetimeConstants.allBillingCycleDateRangesMap[dateType]) { if (DateRange.isBillingCycle(dateType)) {
dateRange = getDateRangeByBillingCycleDateType(dateType, this.firstDayOfWeek, this.accountsStore.getAccountStatementDate(this.query.accountIds)); dateRange = getDateRangeByBillingCycleDateType(dateType, this.firstDayOfWeek, this.accountsStore.getAccountStatementDate(this.query.accountIds));
} else { } else {
dateRange = getDateRangeByDateType(dateType, this.firstDayOfWeek); dateRange = getDateRangeByDateType(dateType, this.firstDayOfWeek);
@@ -912,10 +912,10 @@ export default {
return; return;
} }
let dateType = getDateTypeByBillingCycleDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds)); let dateType = getDateTypeByBillingCycleDateRange(minTime, maxTime, this.firstDayOfWeek, DateRangeScene.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds));
if (!dateType) { if (!dateType) {
dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); dateType = getDateTypeByDateRange(minTime, maxTime, this.firstDayOfWeek, DateRangeScene.Normal);
} }
const changed = this.transactionsStore.updateTransactionListFilter({ const changed = this.transactionsStore.updateTransactionListFilter({
@@ -1124,12 +1124,12 @@ export default {
let newDateRange = null; let newDateRange = null;
if (datetimeConstants.allBillingCycleDateRangesMap[this.query.dateType] || this.query.dateType === this.allDateRanges.Custom.type) { if (DateRange.isBillingCycle(this.query.dateType) || this.query.dateType === this.allDateRanges.Custom.type) {
newDateRange = getShiftedDateRangeAndDateTypeForBillingCycle(minTime, maxTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds)); newDateRange = getShiftedDateRangeAndDateTypeForBillingCycle(minTime, maxTime, scale, this.firstDayOfWeek, DateRangeScene.Normal, this.accountsStore.getAccountStatementDate(this.query.accountIds));
} }
if (!newDateRange) { if (!newDateRange) {
newDateRange = getShiftedDateRangeAndDateType(minTime, maxTime, scale, this.firstDayOfWeek, datetimeConstants.allDateRangeScenes.Normal); newDateRange = getShiftedDateRangeAndDateType(minTime, maxTime, scale, this.firstDayOfWeek, DateRangeScene.Normal);
} }
const changed = this.transactionsStore.updateTransactionListFilter({ const changed = this.transactionsStore.updateTransactionListFilter({