@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.
Files changed (45) hide show
  1. package/dist/ts-chart-sdk.d.ts +130 -2
  2. package/lib/main/custom-chart-context.d.ts.map +1 -1
  3. package/lib/main/custom-chart-context.js +11 -0
  4. package/lib/main/custom-chart-context.js.map +1 -1
  5. package/lib/main/custom-chart-context.spec.js +51 -0
  6. package/lib/main/custom-chart-context.spec.js.map +1 -1
  7. package/lib/types/common.types.d.ts +36 -0
  8. package/lib/types/common.types.d.ts.map +1 -1
  9. package/lib/types/ts-to-chart-event.types.d.ts +9 -1
  10. package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
  11. package/lib/types/ts-to-chart-event.types.js +1 -0
  12. package/lib/types/ts-to-chart-event.types.js.map +1 -1
  13. package/lib/utils/date-formatting.d.ts +85 -1
  14. package/lib/utils/date-formatting.d.ts.map +1 -1
  15. package/lib/utils/date-formatting.js +342 -9
  16. package/lib/utils/date-formatting.js.map +1 -1
  17. package/lib/utils/date-formatting.spec.js +301 -31
  18. package/lib/utils/date-formatting.spec.js.map +1 -1
  19. package/lib/utils/date-utils.d.ts +6 -0
  20. package/lib/utils/date-utils.d.ts.map +1 -0
  21. package/lib/utils/date-utils.js +20 -0
  22. package/lib/utils/date-utils.js.map +1 -0
  23. package/lib/utils/date-utils.spec.d.ts +2 -0
  24. package/lib/utils/date-utils.spec.d.ts.map +1 -0
  25. package/lib/utils/date-utils.spec.js +63 -0
  26. package/lib/utils/date-utils.spec.js.map +1 -0
  27. package/lib/utils/formatting-util.d.ts +10 -0
  28. package/lib/utils/formatting-util.d.ts.map +1 -0
  29. package/lib/utils/formatting-util.js +78 -0
  30. package/lib/utils/formatting-util.js.map +1 -0
  31. package/lib/utils/formatting-util.spec.d.ts +2 -0
  32. package/lib/utils/formatting-util.spec.d.ts.map +1 -0
  33. package/lib/utils/formatting-util.spec.js +247 -0
  34. package/lib/utils/formatting-util.spec.js.map +1 -0
  35. package/package.json +1 -1
  36. package/src/main/custom-chart-context.spec.ts +61 -0
  37. package/src/main/custom-chart-context.ts +28 -3
  38. package/src/types/common.types.ts +62 -1
  39. package/src/types/ts-to-chart-event.types.ts +19 -0
  40. package/src/utils/date-formatting.spec.ts +375 -32
  41. package/src/utils/date-formatting.ts +584 -14
  42. package/src/utils/date-utils.spec.ts +93 -0
  43. package/src/utils/date-utils.ts +69 -0
  44. package/src/utils/formatting-util.spec.ts +312 -0
  45. 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 function dateFormatter(dataValue: any, col: ChartColumn): string | null;
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;AAEhF,eAAO,MAAM,WAAW,QAAS,WAAW,YACP,CAAC;AAEtC,eAAO,MAAM,+BAA+B,QAAS,WAAW,uBAC5C,CAAC;AAiBrB,eAAO,MAAM,eAAe,QAAS,WAAW,KAAG,OAElD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAS,WAAW,KAAG,OAErD,CAAC;AAEF,eAAO,MAAM,YAAY,QAAS,WAAW,YAE5C,CAAC;AAQF,eAAO,MAAM,iBAAiB,QAAS,WAAW,KAAG,OACgB,CAAC;AAQtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAKxE;AASD,wBAAgB,aAAa,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,iBAW7D"}
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 function dateFormatter(dataValue, col) {
45
- if (hasCustomCalendar(col)) {
46
- if (getDisplayString(dataValue)) {
47
- return getDisplayString(dataValue);
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
- const startEpoch = getStartEpoch(dataValue);
50
- return startEpoch !== null
51
- ? DateTime.fromMillis(startEpoch * 1000).toFormat('dd-MM-yyyy')
52
- : null;
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 DateTime.fromMillis(dataValue * 1000).toFormat('dd-MM-yyyy');
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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"}