@thoughtspot/ts-chart-sdk 0.0.2-alpha.9 → 1.1.0

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 (141) hide show
  1. package/README.md +126 -50
  2. package/dist/ts-chart-sdk.d.ts +330 -32
  3. package/lib/index.d.ts +3 -0
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +3 -0
  6. package/lib/index.js.map +1 -1
  7. package/lib/main/custom-chart-context.d.ts +17 -4
  8. package/lib/main/custom-chart-context.d.ts.map +1 -1
  9. package/lib/main/custom-chart-context.js +46 -16
  10. package/lib/main/custom-chart-context.js.map +1 -1
  11. package/lib/main/custom-chart-context.spec.js +302 -4
  12. package/lib/main/custom-chart-context.spec.js.map +1 -1
  13. package/lib/main/logger.d.ts +13 -0
  14. package/lib/main/logger.d.ts.map +1 -0
  15. package/lib/main/logger.js +64 -0
  16. package/lib/main/logger.js.map +1 -0
  17. package/lib/main/logger.spec.d.ts +2 -0
  18. package/lib/main/logger.spec.d.ts.map +1 -0
  19. package/lib/main/logger.spec.js +88 -0
  20. package/lib/main/logger.spec.js.map +1 -0
  21. package/lib/main/util.d.ts +2 -0
  22. package/lib/main/util.d.ts.map +1 -1
  23. package/lib/main/util.js +11 -0
  24. package/lib/main/util.js.map +1 -1
  25. package/lib/main/util.spec.d.ts +2 -0
  26. package/lib/main/util.spec.d.ts.map +1 -0
  27. package/lib/main/util.spec.js +73 -0
  28. package/lib/main/util.spec.js.map +1 -0
  29. package/lib/react/use-custom-chart-context.d.ts.map +1 -1
  30. package/lib/react/use-custom-chart-context.js +3 -1
  31. package/lib/react/use-custom-chart-context.js.map +1 -1
  32. package/lib/react/use-custom-chart-context.spec.js +0 -1
  33. package/lib/react/use-custom-chart-context.spec.js.map +1 -1
  34. package/lib/react/use-custom-chart-context.util.d.ts.map +1 -1
  35. package/lib/react/use-custom-chart-context.util.js +5 -3
  36. package/lib/react/use-custom-chart-context.util.js.map +1 -1
  37. package/lib/types/answer-column.types.d.ts +7 -4
  38. package/lib/types/answer-column.types.d.ts.map +1 -1
  39. package/lib/types/answer-column.types.js +3 -3
  40. package/lib/types/answer-column.types.js.map +1 -1
  41. package/lib/types/chart-to-ts-event.types.d.ts +2 -0
  42. package/lib/types/chart-to-ts-event.types.d.ts.map +1 -1
  43. package/lib/types/chart-to-ts-event.types.js +1 -0
  44. package/lib/types/chart-to-ts-event.types.js.map +1 -1
  45. package/lib/types/common.types.d.ts +65 -6
  46. package/lib/types/common.types.d.ts.map +1 -1
  47. package/lib/types/common.types.js.map +1 -1
  48. package/lib/types/conditional-formatting.types.d.ts +1 -16
  49. package/lib/types/conditional-formatting.types.d.ts.map +1 -1
  50. package/lib/types/conditional-formatting.types.js.map +1 -1
  51. package/lib/types/configurator.types.d.ts +1 -1
  52. package/lib/types/configurator.types.d.ts.map +1 -1
  53. package/lib/types/number-formatting.types.d.ts +55 -0
  54. package/lib/types/number-formatting.types.d.ts.map +1 -0
  55. package/lib/types/number-formatting.types.js +23 -0
  56. package/lib/types/number-formatting.types.js.map +1 -0
  57. package/lib/types/ts-to-chart-event.types.d.ts +20 -6
  58. package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
  59. package/lib/types/ts-to-chart-event.types.js +1 -0
  60. package/lib/types/ts-to-chart-event.types.js.map +1 -1
  61. package/lib/types/visual-prop.types.d.ts +71 -3
  62. package/lib/types/visual-prop.types.d.ts.map +1 -1
  63. package/lib/types/visual-prop.types.js +32 -1
  64. package/lib/types/visual-prop.types.js.map +1 -1
  65. package/lib/utils/date-formatting.d.ts +85 -1
  66. package/lib/utils/date-formatting.d.ts.map +1 -1
  67. package/lib/utils/date-formatting.js +344 -9
  68. package/lib/utils/date-formatting.js.map +1 -1
  69. package/lib/utils/date-formatting.spec.js +301 -31
  70. package/lib/utils/date-formatting.spec.js.map +1 -1
  71. package/lib/utils/date-utils.d.ts +6 -0
  72. package/lib/utils/date-utils.d.ts.map +1 -0
  73. package/lib/utils/date-utils.js +20 -0
  74. package/lib/utils/date-utils.js.map +1 -0
  75. package/lib/utils/date-utils.spec.d.ts +2 -0
  76. package/lib/utils/date-utils.spec.d.ts.map +1 -0
  77. package/lib/utils/date-utils.spec.js +63 -0
  78. package/lib/utils/date-utils.spec.js.map +1 -0
  79. package/lib/utils/formatting-util.d.ts +10 -0
  80. package/lib/utils/formatting-util.d.ts.map +1 -0
  81. package/lib/utils/formatting-util.js +78 -0
  82. package/lib/utils/formatting-util.js.map +1 -0
  83. package/lib/utils/formatting-util.spec.d.ts +2 -0
  84. package/lib/utils/formatting-util.spec.d.ts.map +1 -0
  85. package/lib/utils/formatting-util.spec.js +247 -0
  86. package/lib/utils/formatting-util.spec.js.map +1 -0
  87. package/lib/utils/globalize-Initializer/globalize-utils.d.ts +16 -0
  88. package/lib/utils/globalize-Initializer/globalize-utils.d.ts.map +1 -0
  89. package/lib/utils/globalize-Initializer/globalize-utils.js +101 -0
  90. package/lib/utils/globalize-Initializer/globalize-utils.js.map +1 -0
  91. package/lib/utils/globalize-Initializer/globalize-utils.spec.d.ts +2 -0
  92. package/lib/utils/globalize-Initializer/globalize-utils.spec.d.ts.map +1 -0
  93. package/lib/utils/globalize-Initializer/globalize-utils.spec.js +149 -0
  94. package/lib/utils/globalize-Initializer/globalize-utils.spec.js.map +1 -0
  95. package/lib/utils/number-formatting/number-formatting-utils.d.ts +20 -0
  96. package/lib/utils/number-formatting/number-formatting-utils.d.ts.map +1 -0
  97. package/lib/utils/number-formatting/number-formatting-utils.js +159 -0
  98. package/lib/utils/number-formatting/number-formatting-utils.js.map +1 -0
  99. package/lib/utils/number-formatting/number-formatting-utils.spec.d.ts +2 -0
  100. package/lib/utils/number-formatting/number-formatting-utils.spec.d.ts.map +1 -0
  101. package/lib/utils/number-formatting/number-formatting-utils.spec.js +221 -0
  102. package/lib/utils/number-formatting/number-formatting-utils.spec.js.map +1 -0
  103. package/lib/utils/number-formatting/number-formatting.d.ts +5 -0
  104. package/lib/utils/number-formatting/number-formatting.d.ts.map +1 -0
  105. package/lib/utils/number-formatting/number-formatting.js +128 -0
  106. package/lib/utils/number-formatting/number-formatting.js.map +1 -0
  107. package/lib/utils/number-formatting/number-formatting.spec.d.ts +2 -0
  108. package/lib/utils/number-formatting/number-formatting.spec.d.ts.map +1 -0
  109. package/lib/utils/number-formatting/number-formatting.spec.js +159 -0
  110. package/lib/utils/number-formatting/number-formatting.spec.js.map +1 -0
  111. package/package.json +4 -1
  112. package/src/index.ts +3 -0
  113. package/src/main/custom-chart-context.spec.ts +356 -6
  114. package/src/main/custom-chart-context.ts +205 -16
  115. package/src/main/logger.spec.ts +114 -0
  116. package/src/main/logger.ts +97 -0
  117. package/src/main/util.spec.ts +94 -0
  118. package/src/main/util.ts +20 -0
  119. package/src/react/use-custom-chart-context.spec.tsx +0 -1
  120. package/src/react/use-custom-chart-context.tsx +4 -1
  121. package/src/react/use-custom-chart-context.util.ts +6 -3
  122. package/src/types/answer-column.types.ts +9 -6
  123. package/src/types/chart-to-ts-event.types.ts +7 -0
  124. package/src/types/common.types.ts +100 -10
  125. package/src/types/conditional-formatting.types.ts +2 -17
  126. package/src/types/configurator.types.ts +1 -1
  127. package/src/types/number-formatting.types.ts +80 -0
  128. package/src/types/ts-to-chart-event.types.ts +63 -5
  129. package/src/types/visual-prop.types.ts +197 -3
  130. package/src/utils/date-formatting.spec.ts +375 -32
  131. package/src/utils/date-formatting.ts +587 -14
  132. package/src/utils/date-utils.spec.ts +93 -0
  133. package/src/utils/date-utils.ts +69 -0
  134. package/src/utils/formatting-util.spec.ts +312 -0
  135. package/src/utils/formatting-util.ts +234 -0
  136. package/src/utils/globalize-Initializer/globalize-utils.spec.ts +192 -0
  137. package/src/utils/globalize-Initializer/globalize-utils.ts +216 -0
  138. package/src/utils/number-formatting/number-formatting-utils.spec.ts +296 -0
  139. package/src/utils/number-formatting/number-formatting-utils.ts +260 -0
  140. package/src/utils/number-formatting/number-formatting.spec.ts +243 -0
  141. package/src/utils/number-formatting/number-formatting.ts +264 -0
@@ -1,5 +1,7 @@
1
+ import { DateTime } from 'luxon';
1
2
  import { ChartSpecificColumnType, ColumnTimeBucket, ColumnType, DataType, } from '../types/answer-column.types';
2
- import { dateFormatter, getCustomCalendarGuidFromColumn, getDisplayString, getStartEpoch, hasCustomCalendar, isAttribute, isDateColumn, isDateFamilyColumn, isDateNumColumn, isTimeColumn, } from './date-formatting';
3
+ import { assignQuarterValueToString, dateNumTypes, formatDate, formatDateNum, formatDateTime, getCustomCalendarGuidFromColumn, getCustomCalendarValueFromEpoch, getDisplayString, getEffectiveDateNumDataType, getMonthOfYear, getOrdinalSuffixedValue, getSpecialFormatData, getStartEpoch, hasCustomCalendar, isAttribute, isDateColumn, isDateFamilyColumn, isDateNumColumn, isDateTimeColumn, isTimeColumn, sanitizeDate, useQuarterStart, } from './date-formatting';
4
+ import * as DateFormatting from './date-formatting';
3
5
  describe('date-formatting', () => {
4
6
  let col;
5
7
  beforeEach(() => {
@@ -13,6 +15,60 @@ describe('date-formatting', () => {
13
15
  calenderGuid: '12345',
14
16
  };
15
17
  });
18
+ const options = {
19
+ quarterStartMonth: 1,
20
+ tsLocaleBasedStringsFormats: {
21
+ null_value_placeholder_label: '{Null}',
22
+ empty_value_placeholder_label: '{Empty}',
23
+ other_value_placeholder_label: '{Other}',
24
+ unavailabe_column_sample_value: '{Unavailable}',
25
+ weekOfDay: {
26
+ Friday: 'Friday',
27
+ Monday: 'Monday',
28
+ Saturday: 'Saturday',
29
+ Sunday: 'Sunday',
30
+ Thursday: 'Thursday',
31
+ Tuesday: 'Tuesday',
32
+ Wednesday: 'Wednesday',
33
+ },
34
+ monthOfYear: {
35
+ April: 'April',
36
+ August: 'August',
37
+ December: 'December',
38
+ February: 'February',
39
+ January: 'January',
40
+ July: 'July',
41
+ June: 'June',
42
+ March: 'March',
43
+ May: 'May',
44
+ November: 'November',
45
+ October: 'October',
46
+ September: 'September',
47
+ },
48
+ quarter_of_year: 'Q{1}',
49
+ },
50
+ tsDateConstants: {
51
+ day_in_month_format: 'e',
52
+ day_in_quarter_format: 'e',
53
+ day_in_year_format: 'j',
54
+ day_of_week_format: 'e',
55
+ month_in_quarter_format: 'm',
56
+ month_in_year_format: 'm',
57
+ special_value_unavailable: 'N/A',
58
+ week_in_year_format: 'V',
59
+ },
60
+ tsLocaleBasedDateFormats: {
61
+ DATE_SHORT: 'MM/dd/yyyy',
62
+ },
63
+ quarter_of_year: 'Q{1}',
64
+ tsDefinedCustomCalenders: {
65
+ '43121d86-347a-4dbb-bea8-5e5bb899e427': {
66
+ calendar: '7573c08b-753b-478b-84fd-6e702d481ff6',
67
+ fiscal: 'bfa39848-ba4f-46d8-80fd-b695064e61b7',
68
+ french: 'a7316e8d-d4dd-4eaf-9294-396db951b422',
69
+ },
70
+ },
71
+ };
16
72
  test('isDateColumn should return true for DATE data type', () => {
17
73
  col.dataType = DataType.DATE;
18
74
  expect(isDateColumn(col)).toBe(true);
@@ -82,43 +138,257 @@ describe('date-formatting', () => {
82
138
  };
83
139
  expect(getDisplayString(date)).toBe(null);
84
140
  });
85
- test('dateFormatter should return custom calendar display string if present', () => {
86
- const dataValue = {
87
- v: { s: 1625097600, e: 1625184000 },
88
- d: '01-07-2021',
89
- };
141
+ test('should return false for columns with dataType other than DATE_TIME', () => {
90
142
  col.dataType = DataType.DATE;
91
- col.calenderGuid = '12345';
92
- expect(dateFormatter(dataValue, col)).toBe('01-07-2021');
143
+ expect(isDateTimeColumn(col)).toBe(false);
144
+ col.dataType = DataType.INT64;
145
+ expect(isDateTimeColumn(col)).toBe(false);
146
+ col.dataType = DataType.DATE_TIME;
147
+ expect(isDateTimeColumn(col)).toBe(true);
93
148
  });
94
- test('dateFormatter should return formatted date from start epoch if custom calendar display string is not present', () => {
95
- const dataValue = {
96
- v: { s: 1625097600, e: 1625184000 },
149
+ test('should return DATE_NUM_DAY_OF_WEEK for ColumnTimeBucket.DAY_OF_WEEK', () => {
150
+ const column = {
151
+ timeBucket: ColumnTimeBucket.DAY_OF_WEEK,
97
152
  };
98
- col.dataType = DataType.DATE;
99
- col.calenderGuid = '12345';
100
- expect(dateFormatter(dataValue, col)).toBe('01-07-2021');
153
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_DAY_OF_WEEK);
101
154
  });
102
- test('dateFormatter should return null if start epoch is not present', () => {
103
- const dataValue = { v: { e: 1625184000 } };
104
- col.dataType = DataType.DATE;
105
- col.calenderGuid = '12345';
106
- expect(dateFormatter(dataValue, col)).toBe(null);
155
+ test('should return DATE_NUM_DAY_IN_MONTH for ColumnTimeBucket.DAY_OF_MONTH', () => {
156
+ const column = {
157
+ timeBucket: ColumnTimeBucket.DAY_OF_MONTH,
158
+ };
159
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_DAY_IN_MONTH);
107
160
  });
108
- test('dateFormatter should return formatted date for non-custom calendar column', () => {
109
- const dataValue = 1625097600;
110
- col.dataType = DataType.DATE;
111
- col.calenderGuid = undefined;
112
- expect(dateFormatter(dataValue, col)).toBe('01-07-2021');
161
+ test('should return DATE_NUM_DAY_IN_QUARTER for ColumnTimeBucket.DAY_OF_QUARTER', () => {
162
+ const column = {
163
+ timeBucket: ColumnTimeBucket.DAY_OF_QUARTER,
164
+ };
165
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_DAY_IN_QUARTER);
113
166
  });
114
- test('dateFormatter should format the date based on custom calendar', () => {
115
- col.dataType = DataType.DATE;
116
- col.calenderGuid = '12345';
117
- const date = {
118
- v: { s: 12345, e: 12346 },
119
- d: 'Custom_Date',
167
+ test('should return DATE_NUM_DAY_IN_YEAR for ColumnTimeBucket.DAY_OF_YEAR', () => {
168
+ const column = {
169
+ timeBucket: ColumnTimeBucket.DAY_OF_YEAR,
170
+ };
171
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_DAY_IN_YEAR);
172
+ });
173
+ test('should return DATE_NUM_WEEK_IN_MONTH for ColumnTimeBucket.WEEK_OF_MONTH', () => {
174
+ const column = {
175
+ timeBucket: ColumnTimeBucket.WEEK_OF_MONTH,
176
+ };
177
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_WEEK_IN_MONTH);
178
+ });
179
+ test('should return DATE_NUM_WEEK_IN_QUARTER for ColumnTimeBucket.WEEK_OF_QUARTER', () => {
180
+ const column = {
181
+ timeBucket: ColumnTimeBucket.WEEK_OF_QUARTER,
182
+ };
183
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_WEEK_IN_QUARTER);
184
+ });
185
+ test('should return DATE_NUM_WEEK_IN_YEAR for ColumnTimeBucket.WEEK_OF_YEAR', () => {
186
+ const column = {
187
+ timeBucket: ColumnTimeBucket.WEEK_OF_YEAR,
188
+ };
189
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_WEEK_IN_YEAR);
190
+ });
191
+ test('should return DATE_NUM_MONTH_IN_QUARTER for ColumnTimeBucket.MONTH_OF_QUARTER', () => {
192
+ const column = {
193
+ timeBucket: ColumnTimeBucket.MONTH_OF_QUARTER,
194
+ };
195
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_MONTH_IN_QUARTER);
196
+ });
197
+ test('should return DATE_NUM_MONTH_IN_YEAR for ColumnTimeBucket.MONTH_OF_YEAR', () => {
198
+ const column = {
199
+ timeBucket: ColumnTimeBucket.MONTH_OF_YEAR,
200
+ };
201
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_MONTH_IN_YEAR);
202
+ });
203
+ test('should return DATE_NUM_QUARTER_IN_YEAR for ColumnTimeBucket.QUARTER_OF_YEAR', () => {
204
+ const column = {
205
+ timeBucket: ColumnTimeBucket.QUARTER_OF_YEAR,
206
+ };
207
+ expect(getEffectiveDateNumDataType(column)).toBe(dateNumTypes.DATE_NUM_QUARTER_IN_YEAR);
208
+ });
209
+ test('should replace placeholder with value', () => {
210
+ const result = assignQuarterValueToString('Q{1}', '1');
211
+ expect(result).toBe('Q1');
212
+ });
213
+ test('should return correct month for normal case', () => {
214
+ const monthOfYear = {
215
+ January: 'Jan',
216
+ February: 'Feb',
217
+ March: 'Mar',
218
+ April: 'Apr',
219
+ May: 'May',
220
+ June: 'Jun',
221
+ July: 'Jul',
222
+ August: 'Aug',
223
+ September: 'Sep',
224
+ October: 'oct',
225
+ November: 'Nov',
226
+ December: 'Dec',
227
+ };
228
+ const result = getMonthOfYear(1, 1, monthOfYear);
229
+ expect(result).toBe('Jan');
230
+ });
231
+ test('should return the value from displayToCustomCalendarValueMap if custom calendar exists and dateEpoch is present', () => {
232
+ const dateEpoch = 1234567890;
233
+ const displayToCustomCalendarValueMap = {
234
+ 1234567890: {
235
+ v: {
236
+ s: '1234567890',
237
+ e: '1234567890',
238
+ },
239
+ d: 'Custom Date Value',
240
+ },
120
241
  };
121
- expect(dateFormatter(date, col)).toBe(date.d);
242
+ col.dataType = DataType.DATE;
243
+ const result = getCustomCalendarValueFromEpoch(col, dateEpoch, displayToCustomCalendarValueMap);
244
+ expect(result).toEqual({
245
+ v: { s: '1234567890', e: '1234567890' },
246
+ d: 'Custom Date Value',
247
+ });
248
+ });
249
+ test('should return null_value_placeholder_label if value matches null_value_placeholder_label', () => {
250
+ const result = getSpecialFormatData('{Null}', options);
251
+ expect(result).toBe('{Null}');
252
+ });
253
+ test('should return empty_value_placeholder_label if value matches empty_value_placeholder_label', () => {
254
+ const result = getSpecialFormatData('{Empty}', options);
255
+ expect(result).toBe('{Empty}');
256
+ });
257
+ test('should return unavailabe_column_sample_value if value matches special_value_unavailable', () => {
258
+ const result = getSpecialFormatData('N/A', options);
259
+ expect(result).toBe('{Unavailable}');
260
+ });
261
+ test('should return empty_value_placeholder_label if value is an empty string', () => {
262
+ const result = getSpecialFormatData('', options);
263
+ expect(result).toBe('{Empty}');
264
+ });
265
+ test('should return null if value does not match any special condtestion', () => {
266
+ const result = getSpecialFormatData('Some other value', options);
267
+ expect(result).toBeNull();
268
+ });
269
+ test('should return special value if getSpecialFormatData provides it', () => {
270
+ const result = sanitizeDate('{Null}', 'yyyy', options);
271
+ expect(result).toBe('{Null}');
272
+ });
273
+ test('should return parsed integer if inputDate is a numeric string', () => {
274
+ const result = sanitizeDate('12345', 'MM/dd/yyyy', options);
275
+ expect(result).toBe(12345);
276
+ });
277
+ test('should parse date if inputDate is a non-numeric string', () => {
278
+ const result = sanitizeDate('12/25/2022', 'DATE_SHORT', options);
279
+ expect(result).toEqual(new Date(2022, 11, 25));
280
+ });
281
+ test('should return "Invalid Date" for an invalid epochMillis', () => {
282
+ const result = formatDateTime(NaN, 'MM-dd-yyyy', false, options);
283
+ expect(result).toBe('Invalid DateTime');
284
+ });
285
+ test('should return a formatted date string for a valid epochMillis with default options', () => {
286
+ const epochMillis = 1043452800;
287
+ const expectedDate = '01-25-2003';
288
+ const luxonDate = DateTime.fromMillis(epochMillis * 1000);
289
+ jest.spyOn(DateTime, 'fromMillis').mockReturnValue(luxonDate);
290
+ jest.spyOn(luxonDate, 'toLocaleString').mockReturnValue(expectedDate);
291
+ const result = formatDateTime(epochMillis, 'MM-dd-yyyy', false, options);
292
+ expect(result).toBe(expectedDate);
293
+ });
294
+ test('should apply fiscal year format when quarterStartMonth is not default and useSystemCalendar is false', () => {
295
+ const epochMillis = 1043452800;
296
+ options.quarterStartMonth = 4;
297
+ const expectedDate = 'FY 2003';
298
+ const luxonDate = DateTime.fromMillis(epochMillis * 1000);
299
+ jest.spyOn(DateFormatting, 'useQuarterStart').mockReturnValue(luxonDate);
300
+ jest.spyOn(luxonDate, 'toFormat').mockReturnValue(expectedDate);
301
+ const result = formatDateTime(epochMillis, 'yyyy', false, options);
302
+ expect(result).toBe(expectedDate);
303
+ expect(useQuarterStart).toHaveBeenCalledWith(luxonDate, options.quarterStartMonth);
304
+ });
305
+ test('should replace unsupported "qqq" with fiscal quarter format', () => {
306
+ const epochMillis = 1043452800;
307
+ const format = 'qqq yyyy';
308
+ const expectedFormat = "'Q'q yyyy";
309
+ const luxonDate = DateTime.fromMillis(epochMillis * 1000);
310
+ jest.spyOn(DateFormatting, 'useQuarterStart').mockReturnValue(luxonDate);
311
+ jest.spyOn(luxonDate, 'toFormat').mockReturnValue('Q1 2003');
312
+ const result = formatDateTime(epochMillis, format, true, options);
313
+ expect(result).toBe('Q1 2003');
314
+ expect(luxonDate.toFormat).toHaveBeenCalledWith(expectedFormat);
315
+ });
316
+ test('should return the correct ordinal suffix for numbers ending in 1', () => {
317
+ expect(getOrdinalSuffixedValue(1)).toBe('1st');
318
+ expect(getOrdinalSuffixedValue(21)).toBe('21st');
319
+ expect(getOrdinalSuffixedValue('1')).toBe('1st');
320
+ expect(getOrdinalSuffixedValue('21')).toBe('21st');
321
+ });
322
+ test('should return the correct ordinal suffix for numbers ending in 2', () => {
323
+ expect(getOrdinalSuffixedValue(2)).toBe('2nd');
324
+ expect(getOrdinalSuffixedValue(22)).toBe('22nd');
325
+ expect(getOrdinalSuffixedValue('2')).toBe('2nd');
326
+ expect(getOrdinalSuffixedValue('22')).toBe('22nd');
327
+ });
328
+ test('should return the correct ordinal suffix for numbers ending in 3', () => {
329
+ expect(getOrdinalSuffixedValue(3)).toBe('3rd');
330
+ expect(getOrdinalSuffixedValue(23)).toBe('23rd');
331
+ expect(getOrdinalSuffixedValue('3')).toBe('3rd');
332
+ expect(getOrdinalSuffixedValue('23')).toBe('23rd');
333
+ });
334
+ test('should return the correct ordinal suffix for all other numbers', () => {
335
+ expect(getOrdinalSuffixedValue(4)).toBe('4th');
336
+ expect(getOrdinalSuffixedValue(11)).toBe('11th');
337
+ expect(getOrdinalSuffixedValue(100)).toBe('100th');
338
+ expect(getOrdinalSuffixedValue(112)).toBe('112th');
339
+ expect(getOrdinalSuffixedValue('4')).toBe('4th');
340
+ expect(getOrdinalSuffixedValue('11')).toBe('11th');
341
+ expect(getOrdinalSuffixedValue('100')).toBe('100th');
342
+ expect(getOrdinalSuffixedValue('112')).toBe('112th');
343
+ });
344
+ test('should handle negative numbers correctly', () => {
345
+ expect(getOrdinalSuffixedValue(-1)).toBe('-1th');
346
+ expect(getOrdinalSuffixedValue(-11)).toBe('-11th');
347
+ expect(getOrdinalSuffixedValue('-1')).toBe('-1th');
348
+ expect(getOrdinalSuffixedValue('-11')).toBe('-11th');
349
+ });
350
+ test('should return special format data if applicable', () => {
351
+ jest.spyOn(DateFormatting, 'getSpecialFormatData').mockReturnValue('Special Format');
352
+ const result = formatDateNum(undefined, '{Null}', '', options);
353
+ expect(result).toBe('{Null}');
354
+ });
355
+ test('should return value as string for absolute day, month, quarter, and year types', () => {
356
+ const result = formatDateNum('DATE_NUM_ABS_DAY', 123, '', options);
357
+ expect(result).toBe('123');
358
+ });
359
+ test("should return ordinal suffixed value for day of month when format doesn't match", () => {
360
+ const result = formatDateNum('DATE_NUM_DAY_IN_MONTH', 2, '', options);
361
+ expect(result).toBe('2nd day of month');
362
+ });
363
+ test('should return formatted date for day of week', () => {
364
+ const result = formatDateNum('DATE_NUM_DAY_OF_WEEK', 1, 'e', options);
365
+ expect(result).toBe('Monday');
366
+ });
367
+ test('should return formatted month name for month in year', () => {
368
+ const result = formatDateNum('DATE_NUM_MONTH_IN_YEAR', 1, 'm', options);
369
+ expect(result).toBe('April');
370
+ });
371
+ test('should return ordinal suffixed value for week of year', () => {
372
+ const result = formatDateNum('DATE_NUM_WEEK_IN_YEAR', 2, '', options);
373
+ expect(result).toBe('2nd week of year');
374
+ });
375
+ test('should handle special cases for quarter value', () => {
376
+ const result = formatDateNum('DATE_NUM_QUARTER_IN_YEAR', 1, '', options);
377
+ expect(result).toBe('Q1');
378
+ });
379
+ test('should return value for unhandled cases', () => {
380
+ const result = formatDateNum('UNKNOWN_TYPE', 999, '', options);
381
+ expect(result).toBe(999);
382
+ });
383
+ test('should return special placeholder values if input matches', () => {
384
+ const resultEmpty = formatDate('{Empty}', 'DD-MM-YYYY', true, options);
385
+ expect(resultEmpty).toBe('{Empty}');
386
+ const resultOther = formatDate('{Other}', 'DD-MM-YYYY', true, options);
387
+ expect(resultOther).toBe('{Other}');
388
+ });
389
+ it('should return null placeholder if the sanitized date is invalid', () => {
390
+ const result = formatDate('{Null}', 'DD-MM-YYYY', true, options);
391
+ expect(result).toBe('{Null}');
122
392
  });
123
393
  });
124
394
  //# sourceMappingURL=date-formatting.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-formatting.spec.js","sourceRoot":"","sources":["../../src/utils/date-formatting.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date-formatting.spec.js","sourceRoot":"","sources":["../../src/utils/date-formatting.spec.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAEH,uBAAuB,EACvB,gBAAgB,EAChB,UAAU,EACV,QAAQ,GACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACH,0BAA0B,EAE1B,YAAY,EACZ,UAAU,EACV,aAAa,EACb,cAAc,EACd,+BAA+B,EAC/B,+BAA+B,EAC/B,gBAAgB,EAChB,2BAA2B,EAC3B,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,cAAc,MAAM,mBAAmB,CAAC;AAEpD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,IAAI,GAAgB,CAAC;IACrB,UAAU,CAAC,GAAG,EAAE;QACZ,GAAG,GAAG;YACF,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,UAAU,CAAC,OAAO;YACxB,uBAAuB,EAAE,uBAAuB,CAAC,OAAO;YACxD,UAAU,EAAE,gBAAgB,CAAC,IAAI;YACjC,QAAQ,EAAE,QAAQ,CAAC,OAAO;YAC1B,YAAY,EAAE,OAAO;SACxB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG;QACZ,iBAAiB,EAAE,CAAC;QACpB,2BAA2B,EAAE;YACzB,4BAA4B,EAAE,QAAQ;YACtC,6BAA6B,EAAE,SAAS;YACxC,6BAA6B,EAAE,SAAS;YACxC,8BAA8B,EAAE,eAAe;YAC/C,SAAS,EAAE;gBACP,MAAM,EAAE,QAAQ;gBAChB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,WAAW;aACzB;YACD,WAAW,EAAE;gBACT,KAAK,EAAE,OAAO;gBACd,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,UAAU;gBACpB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,SAAS;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,OAAO;gBACd,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,WAAW;aACzB;YACD,eAAe,EAAE,MAAM;SAC1B;QACD,eAAe,EAAE;YACb,mBAAmB,EAAE,GAAG;YACxB,qBAAqB,EAAE,GAAG;YAC1B,kBAAkB,EAAE,GAAG;YACvB,kBAAkB,EAAE,GAAG;YACvB,uBAAuB,EAAE,GAAG;YAC5B,oBAAoB,EAAE,GAAG;YACzB,yBAAyB,EAAE,KAAK;YAChC,mBAAmB,EAAE,GAAG;SAC3B;QACD,wBAAwB,EAAE;YACtB,UAAU,EAAE,YAAY;SAC3B;QACD,eAAe,EAAE,MAAM;QACvB,wBAAwB,EAAE;YACtB,sCAAsC,EAAE;gBACpC,QAAQ,EAAE,sCAAsC;gBAChD,MAAM,EAAE,sCAAsC;gBAC9C,MAAM,EAAE,sCAAsC;aACjD;SACJ;KACJ,CAAC;IACF,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;QAChC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;QAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC;QAC3B,MAAM,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;QAChC,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC;QAC9B,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,GAAG,CAAC,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC;QAChC,GAAG,CAAC,UAAU,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC9C,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,GAAG,CAAC,YAAY,GAAG,OAAO,CAAC;QAC3B,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,IAAI,GAAG;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;YACzB,CAAC,EAAE,aAAa;SACG,CAAC;QACxB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,YAAY,EAAwB,CAAC;QAC9D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC;QACtE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,IAAI,GAAG;YACT,CAAC,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE;SAChB,CAAC;QACxB,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;QAClC,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,WAAW;SAC5B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,oBAAoB,CACpC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,YAAY;SAC7B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,qBAAqB,CACrC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,cAAc;SAC/B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,uBAAuB,CACvC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,WAAW;SAC5B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,oBAAoB,CACpC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,aAAa;SAC9B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,sBAAsB,CACtC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,eAAe;SAChC,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,wBAAwB,CACxC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,YAAY;SAC7B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,qBAAqB,CACrC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+EAA+E,EAAE,GAAG,EAAE;QACvF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,gBAAgB;SACjC,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,yBAAyB,CACzC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,aAAa;SAC9B,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,sBAAsB,CACtC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,MAAM,GAAG;YACX,UAAU,EAAE,gBAAgB,CAAC,eAAe;SAChC,CAAC;QACjB,MAAM,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAC5C,YAAY,CAAC,wBAAwB,CACxC,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,0BAA0B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;SAClB,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iHAAiH,EAAE,GAAG,EAAE;QACzH,MAAM,SAAS,GAAG,UAAU,CAAC;QAC7B,MAAM,+BAA+B,GAAG;YACpC,UAAU,EAAE;gBACR,CAAC,EAAE;oBACC,CAAC,EAAE,YAAY;oBACf,CAAC,EAAE,YAAY;iBAClB;gBACD,CAAC,EAAE,mBAAmB;aACzB;SACJ,CAAC;QACF,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,MAAM,MAAM,GAAG,+BAA+B,CAC1C,GAAG,EACH,SAAS,EACT,+BAA+B,CAClC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YACnB,CAAC,EAAE,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE;YACvC,CAAC,EAAE,mBAAmB;SACzB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,0FAA0F,EAAE,GAAG,EAAE;QAClG,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4FAA4F,EAAE,GAAG,EAAE;QACpG,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yFAAyF,EAAE,GAAG,EAAE;QACjG,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,oFAAoF,EAAE,GAAG,EAAE;QAC5F,MAAM,WAAW,GAAG,UAAU,CAAC;QAC/B,MAAM,YAAY,GAAG,YAAY,CAAC;QAClC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,cAAc,CACzB,WAAW,EACX,YAAY,EACZ,KAAK,EACL,OAAO,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,sGAAsG,EAAE,GAAG,EAAE;QAC9G,MAAM,WAAW,GAAG,UAAU,CAAC;QAC/B,OAAO,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,SAAS,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,eAAe,CACzD,SAAS,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClC,MAAM,CAAC,eAAe,CAAC,CAAC,oBAAoB,CACxC,SAAS,EACT,OAAO,CAAC,iBAAiB,CAC5B,CAAC;IACN,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,WAAW,GAAG,UAAU,CAAC;QAC/B,MAAM,MAAM,GAAG,UAAU,CAAC;QAC1B,MAAM,cAAc,GAAG,WAAW,CAAC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,eAAe,CACzD,SAAS,CACZ,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC,eAAe,CAC9D,gBAAgB,CACnB,CAAC;QACF,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,MAAM,GAAG,aAAa,CAAC,kBAAkB,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,aAAa,CAAC,wBAAwB,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,MAAM,GAAG,aAAa,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,MAAM,GAAG,aAAa,CACxB,0BAA0B,EAC1B,CAAC,EACD,EAAE,EACF,OAAO,CACV,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,MAAM,WAAW,GAAG,UAAU,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACvE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ChartColumn, ColumnTimeBucket } from '../types/answer-column.types';
2
+ export declare function getFormatPatternForBucket(bucket: ColumnTimeBucket): any;
3
+ export declare const getTimeBucket: (col: ChartColumn) => string;
4
+ export declare const showDateFinancialYearFormat: (col: ChartColumn) => boolean;
5
+ export declare function getCustomCalendarGuid(name: string, datasourceId: string, datsourceIdToCustomCalendarMap: any): any;
6
+ //# sourceMappingURL=date-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.d.ts","sourceRoot":"","sources":["../../src/utils/date-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAmB7E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,gBAAgB,GAAG,GAAG,CAIvE;AAED,eAAO,MAAM,aAAa,QAAS,WAAW,KAAG,MAC8B,CAAC;AAEhF,eAAO,MAAM,2BAA2B,QAAS,WAAW,YAM3D,CAAC;AAyBF,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,8BAA8B,EAAE,GAAG,OAKtC"}
@@ -0,0 +1,20 @@
1
+ import _ from 'lodash';
2
+ import { ColumnTimeBucket } from '../types/answer-column.types';
3
+ import { bucketizationToDatePreset, timeBuckets } from './date-formatting';
4
+ export function getFormatPatternForBucket(bucket) {
5
+ return bucketizationToDatePreset[ColumnTimeBucket[bucket]];
6
+ }
7
+ export const getTimeBucket = (col) => _.get(timeBuckets, ColumnTimeBucket[col.timeBucket], timeBuckets.NO_BUCKET);
8
+ export const showDateFinancialYearFormat = (col) => {
9
+ const supportedBucketizations = [timeBuckets.QUARTERLY, timeBuckets.YEARLY];
10
+ const currentBucketization = getTimeBucket(col);
11
+ return supportedBucketizations.some((supportedBucketization) => {
12
+ return supportedBucketization === currentBucketization;
13
+ });
14
+ };
15
+ export function getCustomCalendarGuid(name, datasourceId, datsourceIdToCustomCalendarMap) {
16
+ return datsourceIdToCustomCalendarMap[datasourceId]
17
+ ? datsourceIdToCustomCalendarMap[datasourceId][name]
18
+ : undefined;
19
+ }
20
+ //# sourceMappingURL=date-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/utils/date-utils.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAAe,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAkB3E,MAAM,UAAU,yBAAyB,CAAC,MAAwB;IAC9D,OAAO,yBAAyB,CAC5B,gBAAgB,CAAC,MAAM,CAA2C,CACrE,CAAC;AACN,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAgB,EAAU,EAAE,CACtD,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,GAAgB,EAAE,EAAE;IAC5D,MAAM,uBAAuB,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5E,MAAM,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChD,OAAO,uBAAuB,CAAC,IAAI,CAAC,CAAC,sBAAsB,EAAE,EAAE;QAC3D,OAAO,sBAAsB,KAAK,oBAAoB,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAyBF,MAAM,UAAU,qBAAqB,CACjC,IAAY,EACZ,YAAoB,EACpB,8BAAmC;IAEnC,OAAO,8BAA8B,CAAC,YAAY,CAAC;QAC/C,CAAC,CAAC,8BAA8B,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC,CAAC,SAAS,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=date-utils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.spec.d.ts","sourceRoot":"","sources":["../../src/utils/date-utils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ import { ColumnTimeBucket } from '../types/answer-column.types';
2
+ import { getCustomCalendarGuid, getFormatPatternForBucket, showDateFinancialYearFormat, } from './date-utils';
3
+ describe('getFormatPatternForBucket', () => {
4
+ const mockDatasourceIdToCustomCalendarMap = {
5
+ datasource1: {
6
+ fiscal: 'guid-123',
7
+ custom: 'guid-456',
8
+ },
9
+ datasource2: {
10
+ fiscal: 'guid-789',
11
+ },
12
+ };
13
+ test('should return correct format pattern for YEARLY bucket', () => {
14
+ const result = getFormatPatternForBucket(ColumnTimeBucket.YEARLY);
15
+ expect(result).toBe('yyyy');
16
+ });
17
+ test('should return correct format pattern for MONTHLY bucket', () => {
18
+ const result = getFormatPatternForBucket(ColumnTimeBucket.MONTHLY);
19
+ expect(result).toBe('MONTH_WITH_YEAR');
20
+ });
21
+ test('should return correct format pattern for WEEKLY bucket', () => {
22
+ const result = getFormatPatternForBucket(ColumnTimeBucket.WEEKLY);
23
+ expect(result).toBe('DATE_SHORT');
24
+ });
25
+ test('should handle undefined input gracefully', () => {
26
+ const result = getFormatPatternForBucket(undefined);
27
+ expect(result).toBeUndefined();
28
+ });
29
+ test('should return true for QUARTERLY time bucket', () => {
30
+ const col = { timeBucket: ColumnTimeBucket.QUARTERLY };
31
+ const result = showDateFinancialYearFormat(col);
32
+ expect(result).toBe(true);
33
+ });
34
+ test('should return true for YEARLY time bucket', () => {
35
+ const col = { timeBucket: ColumnTimeBucket.YEARLY };
36
+ const result = showDateFinancialYearFormat(col);
37
+ expect(result).toBe(true);
38
+ });
39
+ test('should return true for MONTLY time bucket', () => {
40
+ const col = { timeBucket: ColumnTimeBucket.MONTHLY };
41
+ const result = showDateFinancialYearFormat(col);
42
+ expect(result).toBe(false);
43
+ });
44
+ test('should return the custom calendar GUID when datasourceId and name are valid', () => {
45
+ const datasourceId = 'datasource1';
46
+ const name = 'fiscal';
47
+ const result = getCustomCalendarGuid(name, datasourceId, mockDatasourceIdToCustomCalendarMap);
48
+ expect(result).toBe('guid-123');
49
+ });
50
+ test('should return undefined when the datasourceId is valid but the name does not exist', () => {
51
+ const datasourceId = 'datasource1';
52
+ const name = 'nonexistent';
53
+ const result = getCustomCalendarGuid(name, datasourceId, mockDatasourceIdToCustomCalendarMap);
54
+ expect(result).toBeUndefined();
55
+ });
56
+ test('should return undefined when the datasourceId does not exist in the map', () => {
57
+ const datasourceId = 'nonexistentDatasource';
58
+ const name = 'fiscal';
59
+ const result = getCustomCalendarGuid(name, datasourceId, mockDatasourceIdToCustomCalendarMap);
60
+ expect(result).toBeUndefined();
61
+ });
62
+ });
63
+ //# sourceMappingURL=date-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-utils.spec.js","sourceRoot":"","sources":["../../src/utils/date-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ChartColumn, ColumnAggregationType } from '../types/answer-column.types';
2
+ interface FormatOptionsType {
3
+ isMillisIncluded: boolean;
4
+ }
5
+ export declare const getFormatPattern: (col: ChartColumn) => string;
6
+ export declare function getBaseTypeFormatterInstance(col: ChartColumn, options: FormatOptionsType): any;
7
+ export declare const getDataFormatter: (col: ChartColumn, options: FormatOptionsType, aggrTypeOverride?: ColumnAggregationType) => any;
8
+ export declare const generateMapOptions: (appConfig: any, col: ChartColumn, data: any) => any;
9
+ export {};
10
+ //# sourceMappingURL=formatting-util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting-util.d.ts","sourceRoot":"","sources":["../../src/utils/formatting-util.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,WAAW,EACX,qBAAqB,EAIxB,MAAM,8BAA8B,CAAC;AAqBtC,UAAU,iBAAiB;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAaD,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MACuB,CAAC;AAyB5E,wBAAgB,4BAA4B,CACxC,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE,iBAAiB,GAC3B,GAAG,CA6EL;AAkBD,eAAO,MAAM,gBAAgB,QACpB,WAAW,WACP,iBAAiB,qBACP,qBAAqB,QAM3C,CAAC;AAyBF,eAAO,MAAM,kBAAkB,cAChB,GAAG,OACT,WAAW,QACV,GAAG,KACV,GA2BF,CAAC"}
@@ -0,0 +1,78 @@
1
+ import _ from 'lodash';
2
+ import { dateFormatPresets, formatDate, formatDateNum, getCustomCalendarGuidFromColumn, getCustomCalendarValueFromEpoch, getDisplayString, getEffectiveDateNumDataType, hasCustomCalendar, isDateColumn, isDateNumColumn, isDateTimeColumn, } from './date-formatting';
3
+ import { getCustomCalendarGuid, getFormatPatternForBucket, showDateFinancialYearFormat, } from './date-utils';
4
+ const getBucketization = (col) => col.timeBucket;
5
+ export const getFormatPattern = (col) => { var _a; return getFormatPatternForBucket(getBucketization(col)) || ((_a = col.format) === null || _a === void 0 ? void 0 : _a.pattern); };
6
+ export function getBaseTypeFormatterInstance(col, options) {
7
+ let formatPattern = getFormatPattern(col);
8
+ if (isDateColumn(col)) {
9
+ const showFinancialFormat = showDateFinancialYearFormat(col);
10
+ const isDateTime = isDateTimeColumn(col);
11
+ if (!formatPattern) {
12
+ if (isDateTime) {
13
+ if (options.isMillisIncluded) {
14
+ formatPattern =
15
+ dateFormatPresets.DATETIME_SHORT_WITH_MILLIS;
16
+ }
17
+ else {
18
+ formatPattern =
19
+ dateFormatPresets.DATETIME_SHORT_WITH_SECONDS;
20
+ }
21
+ }
22
+ }
23
+ return (dataValue, options) => {
24
+ const customCalendarValueFromEpoch = getCustomCalendarValueFromEpoch(col, dataValue, options === null || options === void 0 ? void 0 : options.displayToCustomCalendarValueMap);
25
+ const customCalendarDisplayStr = getDisplayString(customCalendarValueFromEpoch);
26
+ if (customCalendarDisplayStr) {
27
+ return customCalendarDisplayStr;
28
+ }
29
+ const customCalendarOverridesFiscalOffset = hasCustomCalendar(col) &&
30
+ getCustomCalendarGuidFromColumn(col) !==
31
+ getCustomCalendarGuid('fiscal', options.defaultDataSourceId, options.tsDefinedCustomCalenders);
32
+ const optionsWithFiscalOffset = {
33
+ ...options,
34
+ customCalendarOverridesFiscalOffset: !!customCalendarOverridesFiscalOffset,
35
+ };
36
+ return formatDate(dataValue, formatPattern, !showFinancialFormat, optionsWithFiscalOffset);
37
+ };
38
+ }
39
+ if (isDateNumColumn(col)) {
40
+ return (dataValue, options) => {
41
+ const customCalendarValueFromEpoch = getCustomCalendarValueFromEpoch(col, dataValue, options === null || options === void 0 ? void 0 : options.displayToCustomCalendarValueMap);
42
+ const customCalendarDisplayStr = getDisplayString(customCalendarValueFromEpoch);
43
+ if (customCalendarValueFromEpoch && customCalendarDisplayStr) {
44
+ return customCalendarDisplayStr;
45
+ }
46
+ return formatDateNum(getEffectiveDateNumDataType(col), dataValue, formatPattern, options);
47
+ };
48
+ }
49
+ return (dataValue) => {
50
+ return dataValue;
51
+ };
52
+ }
53
+ export const getDataFormatter = (col, options, aggrTypeOverride) => {
54
+ return getBaseTypeFormatterInstance(col, options);
55
+ };
56
+ export const generateMapOptions = (appConfig, col, data) => {
57
+ var _a, _b, _c, _d, _e, _f, _g;
58
+ let customCalenderMap = {};
59
+ if (!_.isEmpty(getCustomCalendarGuidFromColumn(col))) {
60
+ customCalenderMap = data.reduce((customCalenderMapAcc, dataValue) => {
61
+ return {
62
+ ...customCalenderMapAcc,
63
+ [dataValue.v.s]: dataValue,
64
+ };
65
+ }, {});
66
+ }
67
+ return {
68
+ locale: (_a = appConfig === null || appConfig === void 0 ? void 0 : appConfig.localeOptions) === null || _a === void 0 ? void 0 : _a.locale,
69
+ quarterStartMonth: (_b = appConfig === null || appConfig === void 0 ? void 0 : appConfig.localeOptions) === null || _b === void 0 ? void 0 : _b.quarterStartMonth,
70
+ tsLocaleBasedDateFormats: (_c = appConfig === null || appConfig === void 0 ? void 0 : appConfig.dateFormatsConfig) === null || _c === void 0 ? void 0 : _c.tsLocaleBasedDateFormats,
71
+ tsLocaleBasedStringsFormats: (_d = appConfig === null || appConfig === void 0 ? void 0 : appConfig.dateFormatsConfig) === null || _d === void 0 ? void 0 : _d.tsLocaleBasedStringsFormats,
72
+ tsDateConstants: (_e = appConfig === null || appConfig === void 0 ? void 0 : appConfig.dateFormatsConfig) === null || _e === void 0 ? void 0 : _e.tsDateConstants,
73
+ tsDefinedCustomCalenders: (_f = appConfig === null || appConfig === void 0 ? void 0 : appConfig.dateFormatsConfig) === null || _f === void 0 ? void 0 : _f.tsDefinedCustomCalenders,
74
+ defaultDataSourceId: (_g = appConfig === null || appConfig === void 0 ? void 0 : appConfig.dateFormatsConfig) === null || _g === void 0 ? void 0 : _g.defaultDataSourceId,
75
+ displayToCustomCalendarValueMap: customCalenderMap,
76
+ };
77
+ };
78
+ //# sourceMappingURL=formatting-util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting-util.js","sourceRoot":"","sources":["../../src/utils/formatting-util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=formatting-util.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting-util.spec.d.ts","sourceRoot":"","sources":["../../src/utils/formatting-util.spec.ts"],"names":[],"mappings":""}