@thoughtspot/ts-chart-sdk 0.0.2-alpha.20 → 0.0.2-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ts-chart-sdk.d.ts +130 -2
- package/lib/main/custom-chart-context.d.ts.map +1 -1
- package/lib/main/custom-chart-context.js +11 -0
- package/lib/main/custom-chart-context.js.map +1 -1
- package/lib/main/custom-chart-context.spec.js +51 -0
- package/lib/main/custom-chart-context.spec.js.map +1 -1
- package/lib/types/common.types.d.ts +36 -0
- package/lib/types/common.types.d.ts.map +1 -1
- package/lib/types/ts-to-chart-event.types.d.ts +9 -1
- package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
- package/lib/types/ts-to-chart-event.types.js +1 -0
- package/lib/types/ts-to-chart-event.types.js.map +1 -1
- package/lib/utils/date-formatting.d.ts +85 -1
- package/lib/utils/date-formatting.d.ts.map +1 -1
- package/lib/utils/date-formatting.js +342 -9
- package/lib/utils/date-formatting.js.map +1 -1
- package/lib/utils/date-formatting.spec.js +301 -31
- package/lib/utils/date-formatting.spec.js.map +1 -1
- package/lib/utils/date-utils.d.ts +6 -0
- package/lib/utils/date-utils.d.ts.map +1 -0
- package/lib/utils/date-utils.js +20 -0
- package/lib/utils/date-utils.js.map +1 -0
- package/lib/utils/date-utils.spec.d.ts +2 -0
- package/lib/utils/date-utils.spec.d.ts.map +1 -0
- package/lib/utils/date-utils.spec.js +63 -0
- package/lib/utils/date-utils.spec.js.map +1 -0
- package/lib/utils/formatting-util.d.ts +10 -0
- package/lib/utils/formatting-util.d.ts.map +1 -0
- package/lib/utils/formatting-util.js +78 -0
- package/lib/utils/formatting-util.js.map +1 -0
- package/lib/utils/formatting-util.spec.d.ts +2 -0
- package/lib/utils/formatting-util.spec.d.ts.map +1 -0
- package/lib/utils/formatting-util.spec.js +247 -0
- package/lib/utils/formatting-util.spec.js.map +1 -0
- package/package.json +1 -1
- package/src/main/custom-chart-context.spec.ts +61 -0
- package/src/main/custom-chart-context.ts +28 -3
- package/src/types/common.types.ts +62 -1
- package/src/types/ts-to-chart-event.types.ts +19 -0
- package/src/utils/date-formatting.spec.ts +375 -32
- package/src/utils/date-formatting.ts +584 -14
- package/src/utils/date-utils.spec.ts +93 -0
- package/src/utils/date-utils.ts +69 -0
- package/src/utils/formatting-util.spec.ts +312 -0
- package/src/utils/formatting-util.ts +234 -0
|
@@ -6,14 +6,98 @@ export interface CustomCalendarDate {
|
|
|
6
6
|
};
|
|
7
7
|
d: string;
|
|
8
8
|
}
|
|
9
|
+
export declare const dateFormatPresets: {
|
|
10
|
+
DATE_SHORT: string;
|
|
11
|
+
DATE_SHORT_WITH_HOUR: string;
|
|
12
|
+
DATE_SHORT_WITH_HOUR_WITHOUT_YEAR: string;
|
|
13
|
+
DATETIME_SHORT: string;
|
|
14
|
+
DATETIME_SHORT_WITHOUT_YEAR: string;
|
|
15
|
+
DATETIME_SHORT_WITH_SECONDS: string;
|
|
16
|
+
DATETIME_SHORT_WITH_MILLIS: string;
|
|
17
|
+
MONTH_WITH_YEAR: string;
|
|
18
|
+
QUARTER_WITH_YEAR: string;
|
|
19
|
+
QUARTER_WITH_2_DIGIT_YEAR: string;
|
|
20
|
+
DEFAULT_TIME_FORMAT: string;
|
|
21
|
+
TIME_24_WITH_SECONDS: string;
|
|
22
|
+
DATE_SHORT_2_DIGIT_YEAR: string;
|
|
23
|
+
DATETIME_24_SHORT_WITHOUT_YEAR: string;
|
|
24
|
+
DATETIME_24_SHORT: string;
|
|
25
|
+
DATETIME_SHORT_WITH_SECONDS_WITHOUT_YEAR: string;
|
|
26
|
+
DATETIME_SHORT_WITH_MILLIS_WITHOUT_YEAR: string;
|
|
27
|
+
DATETIME_24_SHORT_WITH_MILLIS_WITHOUT_YEAR: string;
|
|
28
|
+
DATETIME_24_SHORT_WITH_MILLIS: string;
|
|
29
|
+
MONTH_WITH_DAY_AND_YEAR: string;
|
|
30
|
+
MONTH_WITH_2_DIGIT_YEAR: string;
|
|
31
|
+
DAY_WITH_MONTH_NUM: string;
|
|
32
|
+
DATE_SHORT_WITH_HOUR_24_WITHOUT_YEAR: string;
|
|
33
|
+
DATE_SHORT_WITH_HOUR_24: string;
|
|
34
|
+
QUARTER: string;
|
|
35
|
+
MONTH_ONLY: string;
|
|
36
|
+
DATETIME_WITH_SHORT_OFFSET: string;
|
|
37
|
+
};
|
|
38
|
+
export declare const dateNumTypes: {
|
|
39
|
+
DATE_NUM_ABS_DAY: string;
|
|
40
|
+
DATE_NUM_ABS_MONTH: string;
|
|
41
|
+
DATE_NUM_ABS_QUARTER: string;
|
|
42
|
+
DATE_NUM_ABS_YEAR: string;
|
|
43
|
+
DATE_NUM_DAY_IN_MONTH: string;
|
|
44
|
+
DATE_NUM_DAY_IN_QUARTER: string;
|
|
45
|
+
DATE_NUM_DAY_IN_YEAR: string;
|
|
46
|
+
DATE_NUM_DAY_OF_WEEK: string;
|
|
47
|
+
DATE_NUM_MONTH_IN_QUARTER: string;
|
|
48
|
+
DATE_NUM_MONTH_IN_YEAR: string;
|
|
49
|
+
DATE_NUM_QUARTER_IN_YEAR: string;
|
|
50
|
+
DATE_NUM_WEEK_IN_YEAR: string;
|
|
51
|
+
DATE_NUM_WEEK_IN_QUARTER: string;
|
|
52
|
+
DATE_NUM_WEEK_IN_MONTH: string;
|
|
53
|
+
DATE_NUM_HOUR_IN_DAY: string;
|
|
54
|
+
};
|
|
55
|
+
export declare const bucketizationToDatePreset: {
|
|
56
|
+
HOURLY: string;
|
|
57
|
+
DAILY: string;
|
|
58
|
+
WEEKLY: string;
|
|
59
|
+
MONTHLY: string;
|
|
60
|
+
QUARTERLY: string;
|
|
61
|
+
YEARLY: string;
|
|
62
|
+
};
|
|
63
|
+
export declare const timeBuckets: {
|
|
64
|
+
NO_BUCKET: string;
|
|
65
|
+
HOURLY: string;
|
|
66
|
+
DAILY: string;
|
|
67
|
+
WEEKLY: string;
|
|
68
|
+
MONTHLY: string;
|
|
69
|
+
QUARTERLY: string;
|
|
70
|
+
YEARLY: string;
|
|
71
|
+
DAY_OF_WEEK: string;
|
|
72
|
+
DAY_OF_MONTH: string;
|
|
73
|
+
DAY_OF_QUARTER: string;
|
|
74
|
+
DAY_OF_YEAR: string;
|
|
75
|
+
WEEK_OF_MONTH: string;
|
|
76
|
+
WEEK_OF_QUARTER: string;
|
|
77
|
+
WEEK_OF_YEAR: string;
|
|
78
|
+
MONTH_OF_QUARTER: string;
|
|
79
|
+
MONTH_OF_YEAR: string;
|
|
80
|
+
QUARTER_OF_YEAR: string;
|
|
81
|
+
};
|
|
9
82
|
export declare const isDateColumn: (col: ChartColumn) => boolean;
|
|
10
83
|
export declare const isAttribute: (col: ChartColumn) => boolean;
|
|
84
|
+
export declare const isDateTimeColumn: (col: ChartColumn) => boolean;
|
|
11
85
|
export declare const getCustomCalendarGuidFromColumn: (col: ChartColumn) => string | undefined;
|
|
12
86
|
export declare const isDateNumColumn: (col: ChartColumn) => boolean;
|
|
13
87
|
export declare const isDateFamilyColumn: (col: ChartColumn) => boolean;
|
|
14
88
|
export declare const isTimeColumn: (col: ChartColumn) => boolean;
|
|
89
|
+
export declare const getEffectiveDateNumDataType: (col: ChartColumn) => string | undefined;
|
|
15
90
|
export declare const hasCustomCalendar: (col: ChartColumn) => boolean;
|
|
16
91
|
export declare function getStartEpoch(date: CustomCalendarDate): number | null;
|
|
92
|
+
export declare const assignQuarterValueToString: (quarter_of_year: any, value: any) => any;
|
|
93
|
+
export declare function getMonthOfYear(num: any, quarterStartMonth: any, monthOfYear: any): any;
|
|
17
94
|
export declare function getDisplayString(date: CustomCalendarDate): string | null;
|
|
18
|
-
export declare
|
|
95
|
+
export declare const useQuarterStart: (luxonDate: any, quarterStartMonth: any) => any;
|
|
96
|
+
export declare const getCustomCalendarValueFromEpoch: (col: ChartColumn, dateEpoch: number, displayToCustomCalendarValueMap: any) => any;
|
|
97
|
+
export declare function getSpecialFormatData(value: string | number, options: any): any;
|
|
98
|
+
export declare function sanitizeDate(inputDate: string | number, format: string, options: any): any;
|
|
99
|
+
export declare const formatDateTime: (epochMillis: number, format: string, useSystemCalendar?: boolean, options?: any) => any;
|
|
100
|
+
export declare function getOrdinalSuffixedValue(i: number | string): string;
|
|
101
|
+
export declare function formatDateNum(effectiveDataType: string | undefined, value: number | string, formatPattern: string, options: any): any;
|
|
102
|
+
export declare function formatDate(inputDate: number | string, format: string, useSystemCalendar: boolean, options: any): string;
|
|
19
103
|
//# sourceMappingURL=date-formatting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-formatting.d.ts","sourceRoot":"","sources":["../../src/utils/date-formatting.ts"],"names":[],"mappings":"AAUA,OAAO,EACH,WAAW,EAId,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,CAAC,EAAE;QACC,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,CAAC,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,YAAY,QAAS,WAAW,YACkC,CAAC;
|
|
1
|
+
{"version":3,"file":"date-formatting.d.ts","sourceRoot":"","sources":["../../src/utils/date-formatting.ts"],"names":[],"mappings":"AAUA,OAAO,EACH,WAAW,EAId,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,kBAAkB;IAC/B,CAAC,EAAE;QACC,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,CAAC,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC7B,CAAC;AAkBF,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;CAgBxB,CAAC;AA2BF,eAAO,MAAM,yBAAyB;;;;;;;CAOrC,CAAC;AAKF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;CAkBvB,CAAC;AAWF,eAAO,MAAM,YAAY,QAAS,WAAW,YACkC,CAAC;AAShF,eAAO,MAAM,WAAW,QAAS,WAAW,YACP,CAAC;AAStC,eAAO,MAAM,gBAAgB,QAAS,WAAW,YACP,CAAC;AAQ3C,eAAO,MAAM,+BAA+B,QAAS,WAAW,uBAC5C,CAAC;AAwCrB,eAAO,MAAM,eAAe,QAAS,WAAW,KAAG,OAElD,CAAC;AAaF,eAAO,MAAM,kBAAkB,QAAS,WAAW,KAAG,OAErD,CAAC;AASF,eAAO,MAAM,YAAY,QAAS,WAAW,YAE5C,CAAC;AAYF,eAAO,MAAM,2BAA2B,QAAS,WAAW,uBAyB3D,CAAC;AAQF,eAAO,MAAM,iBAAiB,QAAS,WAAW,KAAG,OACgB,CAAC;AAQtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED,eAAO,MAAM,0BAA0B,oBAClB,GAAG,SACb,GAAG,QAGb,CAAC;AAEF,wBAAgB,cAAc,CAC1B,GAAG,EAAE,GAAG,EACR,iBAAiB,EAAE,GAAG,EACtB,WAAW,EAAE,GAAG,OAMnB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAKxE;AAED,eAAO,MAAM,eAAe,cAAe,GAAG,qBAAqB,GAAG,QAIrE,CAAC;AAEF,eAAO,MAAM,+BAA+B,QACnC,WAAW,aACL,MAAM,mCACgB,GAAG,QASvC,CAAC;AAQF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,OA0BxE;AAED,wBAAgB,YAAY,CACxB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,GAAG,OAaf;AASD,eAAO,MAAM,cAAc,gBACV,MAAM,UACX,MAAM,sBACM,OAAO,YACjB,GAAG,QA8ChB,CAAC;AAiBF,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAmBlE;AA8BD,wBAAgB,aAAa,CACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,GAAG,OAiFf;AAUD,wBAAgB,UAAU,CACtB,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,OAAO,EAC1B,OAAO,EAAE,GAAG,GACb,MAAM,CAwCR"}
|
|
@@ -1,8 +1,125 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import { DateTime } from 'luxon';
|
|
3
3
|
import { ColumnTimeBucket, ColumnType, DataType, } from '../types/answer-column.types';
|
|
4
|
+
export const dateFormatPresets = {
|
|
5
|
+
DATE_SHORT: 'DATE_SHORT',
|
|
6
|
+
DATE_SHORT_WITH_HOUR: 'DATE_SHORT_WITH_HOUR',
|
|
7
|
+
DATE_SHORT_WITH_HOUR_WITHOUT_YEAR: 'DATE_SHORT_WITH_HOUR_WITHOUT_YEAR',
|
|
8
|
+
DATETIME_SHORT: 'DATETIME_SHORT',
|
|
9
|
+
DATETIME_SHORT_WITHOUT_YEAR: 'DATETIME_SHORT_WITHOUT_YEAR',
|
|
10
|
+
DATETIME_SHORT_WITH_SECONDS: 'DATETIME_SHORT_WITH_SECONDS',
|
|
11
|
+
DATETIME_SHORT_WITH_MILLIS: 'DATETIME_SHORT_WITH_MILLIS',
|
|
12
|
+
MONTH_WITH_YEAR: 'MONTH_WITH_YEAR',
|
|
13
|
+
QUARTER_WITH_YEAR: 'QUARTER_WITH_YEAR',
|
|
14
|
+
QUARTER_WITH_2_DIGIT_YEAR: 'QUARTER_WITH_2_DIGIT_YEAR',
|
|
15
|
+
DEFAULT_TIME_FORMAT: 'DEFAULT_TIME_FORMAT',
|
|
16
|
+
TIME_24_WITH_SECONDS: 'TIME_24_WITH_SECONDS',
|
|
17
|
+
DATE_SHORT_2_DIGIT_YEAR: 'DATE_SHORT_2_DIGIT_YEAR',
|
|
18
|
+
DATETIME_24_SHORT_WITHOUT_YEAR: 'DATETIME_24_SHORT_WITHOUT_YEAR',
|
|
19
|
+
DATETIME_24_SHORT: 'DATETIME_24_SHORT',
|
|
20
|
+
DATETIME_SHORT_WITH_SECONDS_WITHOUT_YEAR: 'DATETIME_SHORT_WITH_SECONDS_WITHOUT_YEAR',
|
|
21
|
+
DATETIME_SHORT_WITH_MILLIS_WITHOUT_YEAR: 'DATETIME_SHORT_WITH_MILLIS_WITHOUT_YEAR',
|
|
22
|
+
DATETIME_24_SHORT_WITH_MILLIS_WITHOUT_YEAR: 'DATETIME_24_SHORT_WITH_MILLIS_WITHOUT_YEAR',
|
|
23
|
+
DATETIME_24_SHORT_WITH_MILLIS: 'DATETIME_24_SHORT_WITH_MILLIS',
|
|
24
|
+
MONTH_WITH_DAY_AND_YEAR: 'MONTH_WITH_DAY_AND_YEAR',
|
|
25
|
+
MONTH_WITH_2_DIGIT_YEAR: 'MONTH_WITH_2_DIGIT_YEAR',
|
|
26
|
+
DAY_WITH_MONTH_NUM: 'DAY_WITH_MONTH_NUM',
|
|
27
|
+
DATE_SHORT_WITH_HOUR_24_WITHOUT_YEAR: 'DATE_SHORT_WITH_HOUR_24_WITHOUT_YEAR',
|
|
28
|
+
DATE_SHORT_WITH_HOUR_24: 'DATE_SHORT_WITH_HOUR_24',
|
|
29
|
+
QUARTER: 'QUARTER',
|
|
30
|
+
MONTH_ONLY: 'MONTH_ONLY',
|
|
31
|
+
DATETIME_WITH_SHORT_OFFSET: 'DATETIME_WITH_SHORT_OFFSET',
|
|
32
|
+
};
|
|
33
|
+
const yearlessFormats = {
|
|
34
|
+
DATE_SHORT: 'DAY_WITH_MONTH',
|
|
35
|
+
DATE_SHORT_WITH_HOUR: 'DATE_SHORT_WITH_HOUR_WITHOUT_YEAR',
|
|
36
|
+
DATETIME_SHORT: 'DATETIME_SHORT_WITHOUT_YEAR',
|
|
37
|
+
DATETIME_SHORT_WITH_SECONDS: 'DATETIME_SHORT_WITH_SECONDS_WITHOUT_YEAR',
|
|
38
|
+
DATETIME_SHORT_WITH_MILLIS: 'DATETIME_SHORT_WITH_MILLIS_WITHOUT_YEAR',
|
|
39
|
+
MONTH_WITH_YEAR: 'MONTH_ONLY',
|
|
40
|
+
QUARTER_WITH_YEAR: 'QUARTER',
|
|
41
|
+
QUARTER_WITH_2_DIGIT_YEAR: 'QUARTER',
|
|
42
|
+
DATE_SHORT_2_DIGIT_YEAR: 'DAY_WITH_MONTH',
|
|
43
|
+
DATETIME_24_SHORT: 'DATETIME_24_SHORT_WITHOUT_YEAR',
|
|
44
|
+
DATETIME_24_SHORT_WITH_MILLIS: 'DATETIME_24_SHORT_WITH_MILLIS_WITHOUT_YEAR',
|
|
45
|
+
MONTH_WITH_DAY_AND_YEAR: 'DAY_WITH_MONTH',
|
|
46
|
+
MONTH_WITH_2_DIGIT_YEAR: 'DAY_WITH_MONTH',
|
|
47
|
+
DATE_SHORT_WITH_HOUR_24: 'DATE_SHORT_WITH_HOUR_24_WITHOUT_YEAR',
|
|
48
|
+
};
|
|
49
|
+
export const dateNumTypes = {
|
|
50
|
+
DATE_NUM_ABS_DAY: 'DATE_NUM_ABS_DAY',
|
|
51
|
+
DATE_NUM_ABS_MONTH: 'DATE_NUM_ABS_MONTH',
|
|
52
|
+
DATE_NUM_ABS_QUARTER: 'DATE_NUM_ABS_QUARTER',
|
|
53
|
+
DATE_NUM_ABS_YEAR: 'DATE_NUM_ABS_YEAR',
|
|
54
|
+
DATE_NUM_DAY_IN_MONTH: 'DATE_NUM_DAY_IN_MONTH',
|
|
55
|
+
DATE_NUM_DAY_IN_QUARTER: 'DATE_NUM_DAY_IN_QUARTER',
|
|
56
|
+
DATE_NUM_DAY_IN_YEAR: 'DATE_NUM_DAY_IN_YEAR',
|
|
57
|
+
DATE_NUM_DAY_OF_WEEK: 'DATE_NUM_DAY_OF_WEEK',
|
|
58
|
+
DATE_NUM_MONTH_IN_QUARTER: 'DATE_NUM_MONTH_IN_QUARTER',
|
|
59
|
+
DATE_NUM_MONTH_IN_YEAR: 'DATE_NUM_MONTH_IN_YEAR',
|
|
60
|
+
DATE_NUM_QUARTER_IN_YEAR: 'DATE_NUM_QUARTER_IN_YEAR',
|
|
61
|
+
DATE_NUM_WEEK_IN_YEAR: 'DATE_NUM_WEEK_IN_YEAR',
|
|
62
|
+
DATE_NUM_WEEK_IN_QUARTER: 'DATE_NUM_WEEK_IN_QUARTER',
|
|
63
|
+
DATE_NUM_WEEK_IN_MONTH: 'DATE_NUM_WEEK_IN_MONTH',
|
|
64
|
+
DATE_NUM_HOUR_IN_DAY: 'DATE_NUM_HOUR_IN_DAY',
|
|
65
|
+
};
|
|
66
|
+
const weekdays = [
|
|
67
|
+
'Sunday',
|
|
68
|
+
'Monday',
|
|
69
|
+
'Tuesday',
|
|
70
|
+
'Wednesday',
|
|
71
|
+
'Thursday',
|
|
72
|
+
'Friday',
|
|
73
|
+
'Saturday',
|
|
74
|
+
];
|
|
75
|
+
const months = [
|
|
76
|
+
'January',
|
|
77
|
+
'February',
|
|
78
|
+
'March',
|
|
79
|
+
'April',
|
|
80
|
+
'May',
|
|
81
|
+
'June',
|
|
82
|
+
'July',
|
|
83
|
+
'August',
|
|
84
|
+
'September',
|
|
85
|
+
'October',
|
|
86
|
+
'November',
|
|
87
|
+
'December',
|
|
88
|
+
];
|
|
89
|
+
export const bucketizationToDatePreset = {
|
|
90
|
+
HOURLY: dateFormatPresets.DATE_SHORT_WITH_HOUR,
|
|
91
|
+
DAILY: dateFormatPresets.DATE_SHORT,
|
|
92
|
+
WEEKLY: dateFormatPresets.DATE_SHORT,
|
|
93
|
+
MONTHLY: dateFormatPresets.MONTH_WITH_YEAR,
|
|
94
|
+
QUARTERLY: dateFormatPresets.QUARTER_WITH_YEAR,
|
|
95
|
+
YEARLY: 'yyyy',
|
|
96
|
+
};
|
|
97
|
+
const dateFormatPresetsToLuxonPresets = {
|
|
98
|
+
[dateFormatPresets.TIME_24_WITH_SECONDS]: DateTime.TIME_24_WITH_SECONDS,
|
|
99
|
+
};
|
|
100
|
+
export const timeBuckets = {
|
|
101
|
+
NO_BUCKET: 'ms',
|
|
102
|
+
HOURLY: 'h',
|
|
103
|
+
DAILY: 'd',
|
|
104
|
+
WEEKLY: 'w',
|
|
105
|
+
MONTHLY: 'M',
|
|
106
|
+
QUARTERLY: 'Q',
|
|
107
|
+
YEARLY: 'y',
|
|
108
|
+
DAY_OF_WEEK: 'dow',
|
|
109
|
+
DAY_OF_MONTH: 'dom',
|
|
110
|
+
DAY_OF_QUARTER: 'doq',
|
|
111
|
+
DAY_OF_YEAR: 'doy',
|
|
112
|
+
WEEK_OF_MONTH: 'wom',
|
|
113
|
+
WEEK_OF_QUARTER: 'woq',
|
|
114
|
+
WEEK_OF_YEAR: 'woy',
|
|
115
|
+
MONTH_OF_QUARTER: 'moq',
|
|
116
|
+
MONTH_OF_YEAR: 'moy',
|
|
117
|
+
QUARTER_OF_YEAR: 'qoy',
|
|
118
|
+
};
|
|
119
|
+
const DEFAULT_QUARTER_START_MONTH = 1;
|
|
4
120
|
export const isDateColumn = (col) => DataType[col.dataType] === 'DATE' || DataType[col.dataType] === 'DATE_TIME';
|
|
5
121
|
export const isAttribute = (col) => col.type === ColumnType.ATTRIBUTE;
|
|
122
|
+
export const isDateTimeColumn = (col) => DataType[col.dataType] === 'DATE_TIME';
|
|
6
123
|
export const getCustomCalendarGuidFromColumn = (col) => col.calenderGuid;
|
|
7
124
|
const isDateNumTimeBucket = (col) => {
|
|
8
125
|
return [
|
|
@@ -28,6 +145,32 @@ export const isDateFamilyColumn = (col) => {
|
|
|
28
145
|
export const isTimeColumn = (col) => {
|
|
29
146
|
return DataType[col.dataType] === 'TIME';
|
|
30
147
|
};
|
|
148
|
+
export const getEffectiveDateNumDataType = (col) => {
|
|
149
|
+
switch (col.timeBucket) {
|
|
150
|
+
case ColumnTimeBucket.DAY_OF_WEEK:
|
|
151
|
+
return dateNumTypes.DATE_NUM_DAY_OF_WEEK;
|
|
152
|
+
case ColumnTimeBucket.DAY_OF_MONTH:
|
|
153
|
+
return dateNumTypes.DATE_NUM_DAY_IN_MONTH;
|
|
154
|
+
case ColumnTimeBucket.DAY_OF_QUARTER:
|
|
155
|
+
return dateNumTypes.DATE_NUM_DAY_IN_QUARTER;
|
|
156
|
+
case ColumnTimeBucket.DAY_OF_YEAR:
|
|
157
|
+
return dateNumTypes.DATE_NUM_DAY_IN_YEAR;
|
|
158
|
+
case ColumnTimeBucket.WEEK_OF_MONTH:
|
|
159
|
+
return dateNumTypes.DATE_NUM_WEEK_IN_MONTH;
|
|
160
|
+
case ColumnTimeBucket.WEEK_OF_QUARTER:
|
|
161
|
+
return dateNumTypes.DATE_NUM_WEEK_IN_QUARTER;
|
|
162
|
+
case ColumnTimeBucket.WEEK_OF_YEAR:
|
|
163
|
+
return dateNumTypes.DATE_NUM_WEEK_IN_YEAR;
|
|
164
|
+
case ColumnTimeBucket.MONTH_OF_QUARTER:
|
|
165
|
+
return dateNumTypes.DATE_NUM_MONTH_IN_QUARTER;
|
|
166
|
+
case ColumnTimeBucket.MONTH_OF_YEAR:
|
|
167
|
+
return dateNumTypes.DATE_NUM_MONTH_IN_YEAR;
|
|
168
|
+
case ColumnTimeBucket.QUARTER_OF_YEAR:
|
|
169
|
+
return dateNumTypes.DATE_NUM_QUARTER_IN_YEAR;
|
|
170
|
+
default:
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
};
|
|
31
174
|
export const hasCustomCalendar = (col) => isDateFamilyColumn(col) && !!getCustomCalendarGuidFromColumn(col);
|
|
32
175
|
export function getStartEpoch(date) {
|
|
33
176
|
if (_.has(date, 'v') && _.has(date.v, 's')) {
|
|
@@ -35,22 +178,212 @@ export function getStartEpoch(date) {
|
|
|
35
178
|
}
|
|
36
179
|
return null;
|
|
37
180
|
}
|
|
181
|
+
export const assignQuarterValueToString = (quarter_of_year, value) => {
|
|
182
|
+
return quarter_of_year.replace(/\{.*?\}/, value);
|
|
183
|
+
};
|
|
184
|
+
export function getMonthOfYear(num, quarterStartMonth, monthOfYear) {
|
|
185
|
+
let monthNum = num + quarterStartMonth - 1;
|
|
186
|
+
monthNum = monthNum > 12 ? monthNum - 12 : monthNum;
|
|
187
|
+
return monthOfYear[months[monthNum - 1]];
|
|
188
|
+
}
|
|
38
189
|
export function getDisplayString(date) {
|
|
39
190
|
if (_.has(date, 'd')) {
|
|
40
191
|
return date.d;
|
|
41
192
|
}
|
|
42
193
|
return null;
|
|
43
194
|
}
|
|
44
|
-
export
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
195
|
+
export const useQuarterStart = (luxonDate, quarterStartMonth) => {
|
|
196
|
+
const newLuxonDate = luxonDate;
|
|
197
|
+
newLuxonDate.quarterStartMonth = quarterStartMonth;
|
|
198
|
+
return newLuxonDate;
|
|
199
|
+
};
|
|
200
|
+
export const getCustomCalendarValueFromEpoch = (col, dateEpoch, displayToCustomCalendarValueMap) => {
|
|
201
|
+
if (hasCustomCalendar(col) &&
|
|
202
|
+
_.has(displayToCustomCalendarValueMap, dateEpoch)) {
|
|
203
|
+
return displayToCustomCalendarValueMap[dateEpoch];
|
|
204
|
+
}
|
|
205
|
+
return null;
|
|
206
|
+
};
|
|
207
|
+
const parseDate = (dateString, format, options) => {
|
|
208
|
+
return DateTime.fromFormat(dateString, options.tsLocaleBasedDateFormats[format] || format).toJSDate();
|
|
209
|
+
};
|
|
210
|
+
export function getSpecialFormatData(value, options) {
|
|
211
|
+
if (value ===
|
|
212
|
+
options.tsLocaleBasedStringsFormats.null_value_placeholder_label ||
|
|
213
|
+
value ===
|
|
214
|
+
options.tsLocaleBasedStringsFormats.empty_value_placeholder_label) {
|
|
215
|
+
return value;
|
|
216
|
+
}
|
|
217
|
+
if (value === options.tsDateConstants.special_value_unavailable) {
|
|
218
|
+
return options.tsLocaleBasedStringsFormats
|
|
219
|
+
.unavailabe_column_sample_value;
|
|
220
|
+
}
|
|
221
|
+
if (value === null || value === undefined) {
|
|
222
|
+
return options.tsLocaleBasedStringsFormats.null_value_placeholder_label;
|
|
223
|
+
}
|
|
224
|
+
if (value === '') {
|
|
225
|
+
return options.tsLocaleBasedStringsFormats
|
|
226
|
+
.empty_value_placeholder_label;
|
|
227
|
+
}
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
export function sanitizeDate(inputDate, format, options) {
|
|
231
|
+
const specialVal = getSpecialFormatData(inputDate, options);
|
|
232
|
+
if (specialVal) {
|
|
233
|
+
return specialVal;
|
|
234
|
+
}
|
|
235
|
+
if (typeof inputDate === 'string') {
|
|
236
|
+
if (!_.isNaN(Number(inputDate))) {
|
|
237
|
+
return parseInt(inputDate, 10);
|
|
238
|
+
}
|
|
239
|
+
return parseDate(inputDate, format, options);
|
|
240
|
+
}
|
|
241
|
+
return inputDate;
|
|
242
|
+
}
|
|
243
|
+
export const formatDateTime = (epochMillis, format, useSystemCalendar, options) => {
|
|
244
|
+
let newFormat = format;
|
|
245
|
+
let luxonDate;
|
|
246
|
+
try {
|
|
247
|
+
luxonDate = DateTime.fromMillis(epochMillis * 1000);
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
return 'Invalid Date';
|
|
251
|
+
}
|
|
252
|
+
if (options.tsLocaleBasedDateFormats[newFormat]) {
|
|
253
|
+
if (_.get(options, 'omitYear')) {
|
|
254
|
+
if (yearlessFormats[newFormat]) {
|
|
255
|
+
newFormat =
|
|
256
|
+
yearlessFormats[newFormat];
|
|
257
|
+
}
|
|
48
258
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
259
|
+
newFormat = options.tsLocaleBasedDateFormats[newFormat];
|
|
260
|
+
}
|
|
261
|
+
const customCalendarOverridesFiscalOffset = _.get(options, 'customCalendarOverridesFiscalOffset');
|
|
262
|
+
if (!newFormat || dateFormatPresetsToLuxonPresets[newFormat]) {
|
|
263
|
+
return luxonDate.toLocaleString(dateFormatPresetsToLuxonPresets[newFormat]);
|
|
264
|
+
}
|
|
265
|
+
newFormat = newFormat.replace(/qqq/, "'Q'q");
|
|
266
|
+
newFormat = newFormat.replace(/(YYYY|YY)/, _.lowerCase);
|
|
267
|
+
const quarterStartMonth = options.quarterStartMonth;
|
|
268
|
+
if (quarterStartMonth > 1 &&
|
|
269
|
+
!useSystemCalendar &&
|
|
270
|
+
!customCalendarOverridesFiscalOffset) {
|
|
271
|
+
newFormat = newFormat.replace(/[yyyy||yy]/, "'FY' $&");
|
|
272
|
+
}
|
|
273
|
+
return useQuarterStart(luxonDate, useSystemCalendar ? DEFAULT_QUARTER_START_MONTH : quarterStartMonth).toFormat(newFormat);
|
|
274
|
+
};
|
|
275
|
+
function getDayOfWeek(num, weekOfDay) {
|
|
276
|
+
const new_num = num % 7;
|
|
277
|
+
return weekOfDay[weekdays[new_num]];
|
|
278
|
+
}
|
|
279
|
+
export function getOrdinalSuffixedValue(i) {
|
|
280
|
+
let ni = i;
|
|
281
|
+
ni = parseInt(ni.toString());
|
|
282
|
+
const j = ni % 10;
|
|
283
|
+
const k = ni % 100;
|
|
284
|
+
if (j == 1 && k != 11) {
|
|
285
|
+
return `${ni}st`;
|
|
286
|
+
}
|
|
287
|
+
if (j == 2 && k != 12) {
|
|
288
|
+
return `${ni}nd`;
|
|
289
|
+
}
|
|
290
|
+
if (j == 3 && k != 13) {
|
|
291
|
+
return `${ni}rd`;
|
|
292
|
+
}
|
|
293
|
+
return `${ni}th`;
|
|
294
|
+
}
|
|
295
|
+
export function formatDateNum(effectiveDataType, value, formatPattern, options) {
|
|
296
|
+
let newValue = value;
|
|
297
|
+
if (_.isString(newValue)) {
|
|
298
|
+
newValue = parseInt(value.toString());
|
|
299
|
+
}
|
|
300
|
+
if (!value && value !== 0) {
|
|
301
|
+
return options.tsLocaleBasedStringsFormats.null_value_placeholder_label;
|
|
302
|
+
}
|
|
303
|
+
const specialVal = getSpecialFormatData(value, options);
|
|
304
|
+
if (specialVal) {
|
|
305
|
+
return specialVal;
|
|
306
|
+
}
|
|
307
|
+
switch (effectiveDataType) {
|
|
308
|
+
case dateNumTypes.DATE_NUM_ABS_DAY:
|
|
309
|
+
case dateNumTypes.DATE_NUM_ABS_MONTH:
|
|
310
|
+
case dateNumTypes.DATE_NUM_ABS_QUARTER:
|
|
311
|
+
case dateNumTypes.DATE_NUM_ABS_YEAR:
|
|
312
|
+
return `${value}`;
|
|
313
|
+
case dateNumTypes.DATE_NUM_DAY_IN_MONTH:
|
|
314
|
+
return formatPattern === options.tsDateConstants.day_in_month_format
|
|
315
|
+
? `${value}`
|
|
316
|
+
: `${getOrdinalSuffixedValue(value)} day of month`;
|
|
317
|
+
case dateNumTypes.DATE_NUM_DAY_IN_QUARTER:
|
|
318
|
+
return formatPattern ===
|
|
319
|
+
options.tsDateConstants.day_in_quarter_format
|
|
320
|
+
? `${value}`
|
|
321
|
+
: `${getOrdinalSuffixedValue(value)} day of quarter`;
|
|
322
|
+
case dateNumTypes.DATE_NUM_DAY_IN_YEAR:
|
|
323
|
+
return formatPattern === options.tsDateConstants.day_in_year_format
|
|
324
|
+
? `${value}`
|
|
325
|
+
: `${getOrdinalSuffixedValue(value)} day of year`;
|
|
326
|
+
case dateNumTypes.DATE_NUM_DAY_OF_WEEK:
|
|
327
|
+
return formatPattern === options.tsDateConstants.day_of_week_format
|
|
328
|
+
?
|
|
329
|
+
getDayOfWeek(value, options.tsLocaleBasedStringsFormats.weekOfDay)
|
|
330
|
+
: `${value}`;
|
|
331
|
+
case dateNumTypes.DATE_NUM_MONTH_IN_QUARTER:
|
|
332
|
+
return formatPattern ===
|
|
333
|
+
options.tsDateConstants.month_in_quarter_format
|
|
334
|
+
? `${value}`
|
|
335
|
+
: `${getOrdinalSuffixedValue(value)} month of quarter`;
|
|
336
|
+
case dateNumTypes.DATE_NUM_MONTH_IN_YEAR:
|
|
337
|
+
return formatPattern ===
|
|
338
|
+
options.tsDateConstants.month_in_year_format
|
|
339
|
+
?
|
|
340
|
+
getMonthOfYear(value, options.quarterStartMonth, options.tsLocaleBasedStringsFormats.monthOfYear)
|
|
341
|
+
: `${value}`;
|
|
342
|
+
case dateNumTypes.DATE_NUM_QUARTER_IN_YEAR:
|
|
343
|
+
return assignQuarterValueToString(options.tsLocaleBasedStringsFormats.quarter_of_year, value);
|
|
344
|
+
case dateNumTypes.DATE_NUM_WEEK_IN_YEAR:
|
|
345
|
+
return formatPattern === options.tsDateConstants.week_in_year_format
|
|
346
|
+
? `${value}`
|
|
347
|
+
: `${getOrdinalSuffixedValue(value)} week of year`;
|
|
348
|
+
case dateNumTypes.DATE_NUM_WEEK_IN_QUARTER:
|
|
349
|
+
case dateNumTypes.DATE_NUM_WEEK_IN_MONTH:
|
|
350
|
+
return `${value}`;
|
|
351
|
+
case dateNumTypes.DATE_NUM_HOUR_IN_DAY:
|
|
352
|
+
return `${value}`;
|
|
353
|
+
default:
|
|
354
|
+
console.log('unknown effectiveDataType for date num', effectiveDataType);
|
|
355
|
+
return value;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
export function formatDate(inputDate, format, useSystemCalendar, options) {
|
|
359
|
+
let formatPattern = format;
|
|
360
|
+
let newInputDate = inputDate;
|
|
361
|
+
if (newInputDate === undefined || newInputDate === null) {
|
|
362
|
+
return options.tsLocaleBasedStringsFormats.null_value_placeholder_label;
|
|
363
|
+
}
|
|
364
|
+
if (!formatPattern) {
|
|
365
|
+
formatPattern = dateFormatPresets.DATE_SHORT;
|
|
366
|
+
}
|
|
367
|
+
if (newInputDate ===
|
|
368
|
+
options.tsLocaleBasedStringsFormats.null_value_placeholder_label ||
|
|
369
|
+
newInputDate ===
|
|
370
|
+
options.tsLocaleBasedStringsFormats.empty_value_placeholder_label ||
|
|
371
|
+
newInputDate ===
|
|
372
|
+
options.tsLocaleBasedStringsFormats.other_value_placeholder_label) {
|
|
373
|
+
return newInputDate;
|
|
374
|
+
}
|
|
375
|
+
newInputDate = sanitizeDate(newInputDate, formatPattern, options);
|
|
376
|
+
if (_.isNaN(newInputDate)) {
|
|
377
|
+
return options.tsLocaleBasedStringsFormats.null_value_placeholder_label;
|
|
378
|
+
}
|
|
379
|
+
let epochMillis = newInputDate;
|
|
380
|
+
if (_.isDate(epochMillis)) {
|
|
381
|
+
epochMillis = newInputDate.getTime();
|
|
382
|
+
}
|
|
383
|
+
if (!_.isNumber(epochMillis)) {
|
|
384
|
+
console.log('formatDate could not convert input date to a timestamp', inputDate);
|
|
385
|
+
return `${inputDate}`;
|
|
53
386
|
}
|
|
54
|
-
return
|
|
387
|
+
return formatDateTime(epochMillis, formatPattern, useSystemCalendar, options);
|
|
55
388
|
}
|
|
56
389
|
//# sourceMappingURL=date-formatting.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-formatting.js","sourceRoot":"","sources":["../../src/utils/date-formatting.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-formatting.js","sourceRoot":"","sources":["../../src/utils/date-formatting.ts"],"names":[],"mappings":"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"}
|