Merge pull request #8017 from engix-ltd/extend_timewindow_ranges

Add quarter and half year intervals to time window.
This commit is contained in:
Igor Kulikov 2023-03-28 19:26:28 +03:00 committed by GitHub
commit b321f7b6cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 74 additions and 0 deletions

View File

@ -140,6 +140,8 @@ export enum QuickTimeInterval {
PREVIOUS_WEEK = 'PREVIOUS_WEEK',
PREVIOUS_WEEK_ISO = 'PREVIOUS_WEEK_ISO',
PREVIOUS_MONTH = 'PREVIOUS_MONTH',
PREVIOUS_QUARTER = 'PREVIOUS_QUARTER',
PREVIOUS_HALF_YEAR = 'PREVIOUS_HALF_YEAR',
PREVIOUS_YEAR = 'PREVIOUS_YEAR',
CURRENT_HOUR = 'CURRENT_HOUR',
CURRENT_DAY = 'CURRENT_DAY',
@ -150,6 +152,10 @@ export enum QuickTimeInterval {
CURRENT_WEEK_ISO_SO_FAR = 'CURRENT_WEEK_ISO_SO_FAR',
CURRENT_MONTH = 'CURRENT_MONTH',
CURRENT_MONTH_SO_FAR = 'CURRENT_MONTH_SO_FAR',
CURRENT_QUARTER = 'CURRENT_QUARTER',
CURRENT_QUARTER_SO_FAR = 'CURRENT_QUARTER_SO_FAR',
CURRENT_HALF_YEAR = 'CURRENT_HALF_YEAR',
CURRENT_HALF_YEAR_SO_FAR = 'CURRENT_HALF_YEAR_SO_FAR',
CURRENT_YEAR = 'CURRENT_YEAR',
CURRENT_YEAR_SO_FAR = 'CURRENT_YEAR_SO_FAR'
}
@ -161,6 +167,8 @@ export const QuickTimeIntervalTranslationMap = new Map<QuickTimeInterval, string
[QuickTimeInterval.PREVIOUS_WEEK, 'timeinterval.predefined.previous-week'],
[QuickTimeInterval.PREVIOUS_WEEK_ISO, 'timeinterval.predefined.previous-week-iso'],
[QuickTimeInterval.PREVIOUS_MONTH, 'timeinterval.predefined.previous-month'],
[QuickTimeInterval.PREVIOUS_QUARTER, 'timeinterval.predefined.previous-quarter'],
[QuickTimeInterval.PREVIOUS_HALF_YEAR, 'timeinterval.predefined.previous-half-year'],
[QuickTimeInterval.PREVIOUS_YEAR, 'timeinterval.predefined.previous-year'],
[QuickTimeInterval.CURRENT_HOUR, 'timeinterval.predefined.current-hour'],
[QuickTimeInterval.CURRENT_DAY, 'timeinterval.predefined.current-day'],
@ -171,6 +179,10 @@ export const QuickTimeIntervalTranslationMap = new Map<QuickTimeInterval, string
[QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR, 'timeinterval.predefined.current-week-iso-so-far'],
[QuickTimeInterval.CURRENT_MONTH, 'timeinterval.predefined.current-month'],
[QuickTimeInterval.CURRENT_MONTH_SO_FAR, 'timeinterval.predefined.current-month-so-far'],
[QuickTimeInterval.CURRENT_QUARTER, 'timeinterval.predefined.current-quarter'],
[QuickTimeInterval.CURRENT_QUARTER_SO_FAR, 'timeinterval.predefined.current-quarter-so-far'],
[QuickTimeInterval.CURRENT_HALF_YEAR, 'timeinterval.predefined.current-half-year'],
[QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR, 'timeinterval.predefined.current-half-year-so-far'],
[QuickTimeInterval.CURRENT_YEAR, 'timeinterval.predefined.current-year'],
[QuickTimeInterval.CURRENT_YEAR_SO_FAR, 'timeinterval.predefined.current-year-so-far']
]);
@ -477,6 +489,18 @@ function getSubscriptionRealtimeWindowFromTimeInterval(interval: QuickTimeInterv
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
currentDate = getCurrentTime(tz);
return currentDate.endOf('month').diff(currentDate.clone().startOf('month'));
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
currentDate = getCurrentTime(tz);
return currentDate.endOf('quarter').diff(currentDate.clone().startOf('quarter'));
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
currentDate = getCurrentTime(tz);
if (currentDate.get('quarter') < 3) {
return currentDate.clone().set('quarter', 2).endOf('quarter').diff(currentDate.startOf('year'));
} else {
return currentDate.endOf('year').diff(currentDate.clone().set('quarter', 3).startOf('quarter'));
}
case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
currentDate = getCurrentTime(tz);
@ -531,6 +555,16 @@ export function calculateIntervalStartTime(interval: QuickTimeInterval, currentD
case QuickTimeInterval.CURRENT_MONTH:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return currentDate.startOf('month');
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return currentDate.startOf('quarter');
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
if (currentDate.get('quarter') < 3) {
return currentDate.startOf('year');
} else {
return currentDate.clone().set('quarter', 3).startOf('quarter');
}
case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return currentDate.startOf('year');
@ -552,6 +586,12 @@ export function calculateIntervalEndTime(interval: QuickTimeInterval, startDate:
case QuickTimeInterval.PREVIOUS_MONTH:
case QuickTimeInterval.CURRENT_MONTH:
return startDate.add(1, 'month').valueOf();
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
return startDate.add(1, 'quarter').valueOf();
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
return startDate.add(2, 'quarters').valueOf();
case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR:
return startDate.add(1, 'year').valueOf();
@ -561,6 +601,8 @@ export function calculateIntervalEndTime(interval: QuickTimeInterval, startDate:
case QuickTimeInterval.CURRENT_WEEK_SO_FAR:
case QuickTimeInterval.CURRENT_WEEK_ISO_SO_FAR:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return getCurrentTime(tz).valueOf();
}
@ -587,6 +629,14 @@ export function quickTimeIntervalPeriod(interval: QuickTimeInterval): number {
case QuickTimeInterval.CURRENT_MONTH:
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return DAY * 30;
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return DAY * 30 * 3;
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
return DAY * 30 * 6;
case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
@ -621,6 +671,20 @@ export function calculateIntervalComparisonStartTime(interval: QuickTimeInterval
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
startDate.subtract(1, 'months');
return startDate.startOf('month');
case QuickTimeInterval.PREVIOUS_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER:
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
startDate.subtract(1, 'quarters');
return startDate.startOf('quarter');
case QuickTimeInterval.PREVIOUS_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR:
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
startDate.subtract(2, 'quarters');
if (startDate.get('quarter') < 3) {
return startDate.startOf('year');
} else {
return startDate.clone().set('quarter', 3).startOf('quarter');
}
case QuickTimeInterval.PREVIOUS_YEAR:
case QuickTimeInterval.CURRENT_YEAR:
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
@ -643,6 +707,10 @@ export function calculateIntervalComparisonEndTime(interval: QuickTimeInterval,
return endDate.subtract(1, 'week').valueOf();
case QuickTimeInterval.CURRENT_MONTH_SO_FAR:
return endDate.subtract(1, 'month').valueOf();
case QuickTimeInterval.CURRENT_QUARTER_SO_FAR:
return endDate.subtract(1, 'quarter').valueOf();
case QuickTimeInterval.CURRENT_HALF_YEAR_SO_FAR:
return endDate.subtract(2, 'quarters').valueOf();
case QuickTimeInterval.CURRENT_YEAR_SO_FAR:
return endDate.subtract(1, 'year').valueOf();
default:

View File

@ -3353,6 +3353,8 @@
"previous-week": "Previous week (Sun - Sat)",
"previous-week-iso": "Previous week (Mon - Sun)",
"previous-month": "Previous month",
"previous-quarter": "Previous quarter",
"previous-half-year": "Previous half year",
"previous-year": "Previous year",
"current-hour": "Current hour",
"current-day": "Current day",
@ -3363,6 +3365,10 @@
"current-week-iso-so-far": "Current week so far (Mon - Sun)",
"current-month": "Current month",
"current-month-so-far": "Current month so far",
"current-quarter": "Current quarter",
"current-quarter-so-far": "Current quarter so far",
"current-half-year": "Current half year",
"current-half-year-so-far": "Current half year so far",
"current-year": "Current year",
"current-year-so-far": "Current year so far"
}