@thoughtspot/ts-chart-sdk 0.0.2-alpha.2 → 0.0.2-alpha.21

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 (107) hide show
  1. package/README.md +126 -50
  2. package/dist/ts-chart-sdk.d.ts +940 -0
  3. package/lib/index.d.ts +4 -0
  4. package/lib/index.d.ts.map +1 -1
  5. package/lib/index.js +4 -0
  6. package/lib/index.js.map +1 -1
  7. package/lib/main/custom-chart-context.d.ts +22 -7
  8. package/lib/main/custom-chart-context.d.ts.map +1 -1
  9. package/lib/main/custom-chart-context.js +59 -4
  10. package/lib/main/custom-chart-context.js.map +1 -1
  11. package/lib/main/custom-chart-context.spec.js +402 -5
  12. package/lib/main/custom-chart-context.spec.js.map +1 -1
  13. package/lib/main/post-message-event-bridge.js +2 -2
  14. package/lib/main/post-message-event-bridge.js.map +1 -1
  15. package/lib/main/util.spec.d.ts +2 -0
  16. package/lib/main/util.spec.d.ts.map +1 -0
  17. package/lib/main/util.spec.js +31 -0
  18. package/lib/main/util.spec.js.map +1 -0
  19. package/lib/react/use-custom-chart-context.spec.js +54 -3
  20. package/lib/react/use-custom-chart-context.spec.js.map +1 -1
  21. package/lib/test/test-conditional-formatting-utils.d.ts +5 -0
  22. package/lib/test/test-conditional-formatting-utils.d.ts.map +1 -0
  23. package/lib/test/test-conditional-formatting-utils.js +43 -0
  24. package/lib/test/test-conditional-formatting-utils.js.map +1 -0
  25. package/lib/types/answer-column.types.d.ts +57 -1
  26. package/lib/types/answer-column.types.d.ts.map +1 -1
  27. package/lib/types/answer-column.types.js +47 -0
  28. package/lib/types/answer-column.types.js.map +1 -1
  29. package/lib/types/chart-to-ts-event.types.d.ts +2 -0
  30. package/lib/types/chart-to-ts-event.types.d.ts.map +1 -1
  31. package/lib/types/chart-to-ts-event.types.js +1 -0
  32. package/lib/types/chart-to-ts-event.types.js.map +1 -1
  33. package/lib/types/common.types.d.ts +103 -4
  34. package/lib/types/common.types.d.ts.map +1 -1
  35. package/lib/types/common.types.js +15 -1
  36. package/lib/types/common.types.js.map +1 -1
  37. package/lib/types/conditional-formatting.types.d.ts +140 -0
  38. package/lib/types/conditional-formatting.types.d.ts.map +1 -0
  39. package/lib/types/conditional-formatting.types.js +60 -0
  40. package/lib/types/conditional-formatting.types.js.map +1 -0
  41. package/lib/types/configurator.types.d.ts +5 -0
  42. package/lib/types/configurator.types.d.ts.map +1 -1
  43. package/lib/types/number-formatting.types.d.ts +55 -0
  44. package/lib/types/number-formatting.types.d.ts.map +1 -0
  45. package/lib/types/number-formatting.types.js +23 -0
  46. package/lib/types/number-formatting.types.js.map +1 -0
  47. package/lib/types/ts-to-chart-event.types.d.ts +10 -5
  48. package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
  49. package/lib/types/ts-to-chart-event.types.js.map +1 -1
  50. package/lib/types/visual-prop.types.d.ts +21 -0
  51. package/lib/types/visual-prop.types.d.ts.map +1 -1
  52. package/lib/utils/conditional-formatting/conditional-formatting.d.ts +10 -0
  53. package/lib/utils/conditional-formatting/conditional-formatting.d.ts.map +1 -0
  54. package/lib/utils/conditional-formatting/conditional-formatting.js +103 -0
  55. package/lib/utils/conditional-formatting/conditional-formatting.js.map +1 -0
  56. package/lib/utils/conditional-formatting/conditional-formatting.spec.d.ts +2 -0
  57. package/lib/utils/conditional-formatting/conditional-formatting.spec.d.ts.map +1 -0
  58. package/lib/utils/conditional-formatting/conditional-formatting.spec.js +142 -0
  59. package/lib/utils/conditional-formatting/conditional-formatting.spec.js.map +1 -0
  60. package/lib/utils/date-formatting.d.ts +103 -0
  61. package/lib/utils/date-formatting.d.ts.map +1 -0
  62. package/lib/utils/date-formatting.js +389 -0
  63. package/lib/utils/date-formatting.js.map +1 -0
  64. package/lib/utils/date-formatting.spec.d.ts +2 -0
  65. package/lib/utils/date-formatting.spec.d.ts.map +1 -0
  66. package/lib/utils/date-formatting.spec.js +394 -0
  67. package/lib/utils/date-formatting.spec.js.map +1 -0
  68. package/lib/utils/date-utils.d.ts +6 -0
  69. package/lib/utils/date-utils.d.ts.map +1 -0
  70. package/lib/utils/date-utils.js +20 -0
  71. package/lib/utils/date-utils.js.map +1 -0
  72. package/lib/utils/date-utils.spec.d.ts +2 -0
  73. package/lib/utils/date-utils.spec.d.ts.map +1 -0
  74. package/lib/utils/date-utils.spec.js +63 -0
  75. package/lib/utils/date-utils.spec.js.map +1 -0
  76. package/lib/utils/formatting-util.d.ts +10 -0
  77. package/lib/utils/formatting-util.d.ts.map +1 -0
  78. package/lib/utils/formatting-util.js +78 -0
  79. package/lib/utils/formatting-util.js.map +1 -0
  80. package/lib/utils/formatting-util.spec.d.ts +2 -0
  81. package/lib/utils/formatting-util.spec.d.ts.map +1 -0
  82. package/lib/utils/formatting-util.spec.js +247 -0
  83. package/lib/utils/formatting-util.spec.js.map +1 -0
  84. package/package.json +6 -4
  85. package/src/index.ts +4 -0
  86. package/src/main/custom-chart-context.spec.ts +474 -9
  87. package/src/main/custom-chart-context.ts +246 -12
  88. package/src/main/post-message-event-bridge.ts +1 -1
  89. package/src/main/util.spec.ts +41 -0
  90. package/src/react/use-custom-chart-context.spec.tsx +65 -3
  91. package/src/test/test-conditional-formatting-utils.ts +95 -0
  92. package/src/types/answer-column.types.ts +102 -1
  93. package/src/types/chart-to-ts-event.types.ts +7 -0
  94. package/src/types/common.types.ts +165 -10
  95. package/src/types/conditional-formatting.types.ts +157 -0
  96. package/src/types/configurator.types.ts +21 -0
  97. package/src/types/number-formatting.types.ts +80 -0
  98. package/src/types/ts-to-chart-event.types.ts +38 -6
  99. package/src/types/visual-prop.types.ts +75 -1
  100. package/src/utils/conditional-formatting/conditional-formatting.spec.ts +469 -0
  101. package/src/utils/conditional-formatting/conditional-formatting.ts +229 -0
  102. package/src/utils/date-formatting.spec.ts +511 -0
  103. package/src/utils/date-formatting.ts +679 -0
  104. package/src/utils/date-utils.spec.ts +93 -0
  105. package/src/utils/date-utils.ts +69 -0
  106. package/src/utils/formatting-util.spec.ts +312 -0
  107. package/src/utils/formatting-util.ts +234 -0
@@ -0,0 +1,142 @@
1
+ import { createAttributeOperator, createBetweenMetricOperator, createMetricOperator, } from '../../test/test-conditional-formatting-utils';
2
+ import { ChartSpecificColumnType, ColumnTimeBucket, ColumnType, DataType, } from '../../types/answer-column.types';
3
+ import { ConditionalFormattingComparisonTypes, FalconDataType, Operators, ParameterValueType, } from '../../types/conditional-formatting.types';
4
+ import { applicableConditionalFormatting, getCfForColumn, isConditionSatisfied, validateCfCondition, } from './conditional-formatting';
5
+ const mockDataAttr = {
6
+ columns: ['col1', 'col2'],
7
+ dataValue: [
8
+ [1, 'abc'],
9
+ [100, 'def'],
10
+ [150, 'ghi'],
11
+ [200, 'jkl'],
12
+ [300, 'mno'],
13
+ ],
14
+ };
15
+ const lessThanOperator = createMetricOperator(Operators.LessThan);
16
+ const greaterThanOperator = createMetricOperator(Operators.GreaterThan);
17
+ const lessThanEqualToOperator = createMetricOperator(Operators.LessThanEqualTo);
18
+ const greaterThanEqualToOperator = createMetricOperator(Operators.GreaterThanEqualTo);
19
+ const equalToOperator = createMetricOperator(Operators.EqualTo);
20
+ const notEqualToOperator = createMetricOperator(Operators.NotEqualTo);
21
+ const isBetweenOperator = createBetweenMetricOperator(Operators.IsBetween);
22
+ const isNullOperator = createMetricOperator(Operators.IsNull);
23
+ const isNotNullOperator = createMetricOperator(Operators.IsNotNull);
24
+ const isOperator = createAttributeOperator(Operators.Is);
25
+ const isNotOperator = createAttributeOperator(Operators.IsNot);
26
+ const containsOperator = createAttributeOperator(Operators.Contains);
27
+ const doesNotContainOperator = createAttributeOperator(Operators.DoesNotContain);
28
+ const startsWithOperator = createAttributeOperator(Operators.StartsWith);
29
+ const endsWithOperator = createAttributeOperator(Operators.EndsWith);
30
+ const invalidOperator = createMetricOperator('invalid-operator');
31
+ const parameter = undefined;
32
+ const mockConditionalFormatting = {
33
+ rows: [lessThanOperator, greaterThanOperator, isBetweenOperator],
34
+ };
35
+ const parameters = [
36
+ {
37
+ id: 'parameter1',
38
+ defaultValue: 'abc',
39
+ dataType: FalconDataType.Char,
40
+ description: '',
41
+ owner: null,
42
+ valueType: ParameterValueType.Any,
43
+ name: 'parameter1',
44
+ },
45
+ ];
46
+ describe('validateCfCondition', () => {
47
+ test('verify validateCfCondition util', () => {
48
+ expect(validateCfCondition(lessThanOperator, 0, 'col1', mockDataAttr)).toBe(true);
49
+ expect(validateCfCondition(lessThanOperator, 3, 'col1', mockDataAttr)).toBe(false);
50
+ expect(validateCfCondition(lessThanEqualToOperator, 3, 'col1', mockDataAttr)).toBe(true);
51
+ expect(validateCfCondition(greaterThanOperator, 4, 'col1', mockDataAttr)).toBe(true);
52
+ expect(validateCfCondition(greaterThanOperator, 3, 'col1', mockDataAttr)).toBe(false);
53
+ expect(validateCfCondition(greaterThanEqualToOperator, 3, 'col1', mockDataAttr)).toBe(true);
54
+ expect(validateCfCondition(isBetweenOperator, 0, 'col1', mockDataAttr)).toBe(false);
55
+ expect(validateCfCondition(isBetweenOperator, 1, 'col1', mockDataAttr)).toBe(true);
56
+ expect(validateCfCondition(isBetweenOperator, 2, 'col1', mockDataAttr)).toBe(true);
57
+ expect(validateCfCondition(isBetweenOperator, 3, 'col1', mockDataAttr)).toBe(true);
58
+ expect(validateCfCondition(isBetweenOperator, 4, 'col1', mockDataAttr)).toBe(false);
59
+ expect(validateCfCondition(invalidOperator, 4, 'col1', mockDataAttr)).toBe(false);
60
+ const operatorWithColId = createMetricOperator(Operators.LessThan, 'col1', 'col2');
61
+ expect(validateCfCondition(operatorWithColId, 4, '', mockDataAttr)).toBe(false);
62
+ });
63
+ });
64
+ describe('applicableConditionalFormatting', () => {
65
+ test('returns the first applicable ConditionalMetric or null', () => {
66
+ expect(applicableConditionalFormatting(0, 'col1', mockDataAttr, mockConditionalFormatting)).toEqual(lessThanOperator);
67
+ expect(applicableConditionalFormatting(3, 'col1', mockDataAttr, mockConditionalFormatting)).toEqual(isBetweenOperator);
68
+ expect(applicableConditionalFormatting(4, 'col1', mockDataAttr, mockConditionalFormatting)).toEqual(greaterThanOperator);
69
+ expect(applicableConditionalFormatting(0, 'col2', mockDataAttr, mockConditionalFormatting)).toBeNull();
70
+ });
71
+ });
72
+ describe('getCfForColumn', () => {
73
+ it('returns conditional formatting or null for the specified column', () => {
74
+ const column = {
75
+ id: 'col3',
76
+ name: '',
77
+ type: ColumnType.MEASURE,
78
+ chartSpecificColumnType: ChartSpecificColumnType.UNKNOWN,
79
+ timeBucket: ColumnTimeBucket.AUTO,
80
+ dataType: DataType.UNKNOWN,
81
+ columnProperties: {
82
+ conditionalFormatting: mockConditionalFormatting,
83
+ },
84
+ };
85
+ expect(getCfForColumn(column)).toEqual(mockConditionalFormatting);
86
+ });
87
+ });
88
+ describe('isConditionSatisfied', () => {
89
+ test('verify isConditionSatisfied util', () => {
90
+ expect(isConditionSatisfied(lessThanOperator, parameter, 100)).toBe(true);
91
+ expect(isConditionSatisfied(lessThanOperator, parameter, 200)).toBe(false);
92
+ expect(isConditionSatisfied(lessThanOperator, parameter, undefined)).toBe(false);
93
+ expect(isConditionSatisfied(greaterThanOperator, parameter, 300)).toBe(true);
94
+ expect(isConditionSatisfied(greaterThanOperator, parameter, 100)).toBe(false);
95
+ expect(isConditionSatisfied(lessThanEqualToOperator, parameter, 200)).toBe(true);
96
+ expect(isConditionSatisfied(lessThanEqualToOperator, parameter, 300)).toBe(false);
97
+ expect(isConditionSatisfied(greaterThanEqualToOperator, parameter, 200)).toBe(true);
98
+ expect(isConditionSatisfied(greaterThanEqualToOperator, parameter, undefined)).toBe(false);
99
+ expect(isConditionSatisfied(greaterThanEqualToOperator, parameter, 100)).toBe(false);
100
+ expect(isConditionSatisfied(equalToOperator, parameter, 200)).toBe(true);
101
+ expect(isConditionSatisfied(equalToOperator, parameter, 100)).toBe(false);
102
+ expect(isConditionSatisfied(notEqualToOperator, parameter, 300)).toBe(true);
103
+ expect(isConditionSatisfied(notEqualToOperator, parameter, 200)).toBe(false);
104
+ expect(isConditionSatisfied(notEqualToOperator, parameter, null)).toBe(true);
105
+ expect(isConditionSatisfied(isBetweenOperator, parameter, 200)).toBe(true);
106
+ expect(isConditionSatisfied(isBetweenOperator, parameter, 150)).toBe(true);
107
+ expect(isConditionSatisfied(isBetweenOperator, parameter, 201)).toBe(false);
108
+ expect(isConditionSatisfied(isBetweenOperator, parameter, 50)).toBe(false);
109
+ expect(isConditionSatisfied(isBetweenOperator, parameter, 50)).toBe(false);
110
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, -2.54)).toBe(true);
111
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, -2.5412312)).toBe(true);
112
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, -2.5412313)).toBe(false);
113
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, 2.1)).toBe(true);
114
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, 2.112312)).toBe(true);
115
+ expect(isConditionSatisfied(createBetweenMetricOperator(Operators.IsBetween, -2.5412312, 2.112312), parameter, 2.112313)).toBe(false);
116
+ expect(isConditionSatisfied(isNullOperator, parameter, undefined)).toBe(true);
117
+ expect(isConditionSatisfied(isNullOperator, parameter, 50)).toBe(false);
118
+ expect(isConditionSatisfied(isNullOperator, parameter, null)).toBe(true);
119
+ expect(isConditionSatisfied(isNotNullOperator, parameter, 50)).toBe(true);
120
+ expect(isConditionSatisfied(isNotNullOperator, parameter, undefined)).toBe(false);
121
+ expect(isConditionSatisfied(isOperator, parameter, 'check attribute')).toBe(true);
122
+ expect(isConditionSatisfied(isOperator, parameter, 'check not attribute')).toBe(false);
123
+ expect(isConditionSatisfied(isNotOperator, parameter, 'check not attribute')).toBe(true);
124
+ expect(isConditionSatisfied(isNotOperator, parameter, 'check attribute')).toBe(false);
125
+ expect(isConditionSatisfied(containsOperator, parameter, 'check attribute check')).toBe(true);
126
+ expect(isConditionSatisfied({ operator: Operators.Contains, value: '4' }, parameter, 4099)).toBe(true);
127
+ expect(isConditionSatisfied({ operator: Operators.Contains, value: '4' }, parameter, 5099)).toBe(false);
128
+ expect(isConditionSatisfied(containsOperator, parameter, 'check attribut')).toBe(false);
129
+ expect(isConditionSatisfied(doesNotContainOperator, parameter, 'check attribut')).toBe(true);
130
+ expect(isConditionSatisfied(doesNotContainOperator, parameter, 'check attribute check')).toBe(false);
131
+ expect(isConditionSatisfied(startsWithOperator, parameter, 'check attribute check')).toBe(true);
132
+ expect(isConditionSatisfied(startsWithOperator, parameter, 'check check attribute')).toBe(false);
133
+ expect(isConditionSatisfied(endsWithOperator, parameter, 'check check attribute')).toBe(true);
134
+ expect(isConditionSatisfied(endsWithOperator, parameter, 'check attribute check')).toBe(false);
135
+ const columnBasedOperator = createMetricOperator(Operators.EqualTo, 'col1', 'col2', '', ConditionalFormattingComparisonTypes.ColumnBased);
136
+ expect(isConditionSatisfied(columnBasedOperator, undefined, 'abc', 'abc')).toBe(true);
137
+ expect(isConditionSatisfied(columnBasedOperator, undefined, 'abc', 'def')).toBe(false);
138
+ const parameterBasedOperator = createMetricOperator(Operators.EqualTo, 'col1', 'col2', 'parameter1', ConditionalFormattingComparisonTypes.ParameterBased);
139
+ expect(isConditionSatisfied(parameterBasedOperator, parameters, 'abc', 'abc')).toBe(true);
140
+ });
141
+ });
142
+ //# sourceMappingURL=conditional-formatting.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditional-formatting.spec.js","sourceRoot":"","sources":["../../../src/utils/conditional-formatting/conditional-formatting.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import { ChartColumn } from '../types/answer-column.types';
2
+ export interface CustomCalendarDate {
3
+ v: {
4
+ s: number;
5
+ e: number;
6
+ };
7
+ d: string;
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
+ };
82
+ export declare const isDateColumn: (col: ChartColumn) => boolean;
83
+ export declare const isAttribute: (col: ChartColumn) => boolean;
84
+ export declare const isDateTimeColumn: (col: ChartColumn) => boolean;
85
+ export declare const getCustomCalendarGuidFromColumn: (col: ChartColumn) => string | undefined;
86
+ export declare const isDateNumColumn: (col: ChartColumn) => boolean;
87
+ export declare const isDateFamilyColumn: (col: ChartColumn) => boolean;
88
+ export declare const isTimeColumn: (col: ChartColumn) => boolean;
89
+ export declare const getEffectiveDateNumDataType: (col: ChartColumn) => string | undefined;
90
+ export declare const hasCustomCalendar: (col: ChartColumn) => boolean;
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;
94
+ export declare function getDisplayString(date: CustomCalendarDate): 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;
103
+ //# sourceMappingURL=date-formatting.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1,389 @@
1
+ import _ from 'lodash';
2
+ import { DateTime } from 'luxon';
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;
120
+ export const isDateColumn = (col) => DataType[col.dataType] === 'DATE' || DataType[col.dataType] === 'DATE_TIME';
121
+ export const isAttribute = (col) => col.type === ColumnType.ATTRIBUTE;
122
+ export const isDateTimeColumn = (col) => DataType[col.dataType] === 'DATE_TIME';
123
+ export const getCustomCalendarGuidFromColumn = (col) => col.calenderGuid;
124
+ const isDateNumTimeBucket = (col) => {
125
+ return [
126
+ ColumnTimeBucket.HOUR_OF_DAY,
127
+ ColumnTimeBucket.DAY_OF_WEEK,
128
+ ColumnTimeBucket.DAY_OF_MONTH,
129
+ ColumnTimeBucket.DAY_OF_QUARTER,
130
+ ColumnTimeBucket.DAY_OF_YEAR,
131
+ ColumnTimeBucket.WEEK_OF_MONTH,
132
+ ColumnTimeBucket.WEEK_OF_QUARTER,
133
+ ColumnTimeBucket.WEEK_OF_YEAR,
134
+ ColumnTimeBucket.MONTH_OF_QUARTER,
135
+ ColumnTimeBucket.MONTH_OF_YEAR,
136
+ ColumnTimeBucket.QUARTER_OF_YEAR,
137
+ ].includes(col.timeBucket);
138
+ };
139
+ export const isDateNumColumn = (col) => {
140
+ return isAttribute(col) && isDateNumTimeBucket(col);
141
+ };
142
+ export const isDateFamilyColumn = (col) => {
143
+ return isDateColumn(col) || isDateNumColumn(col);
144
+ };
145
+ export const isTimeColumn = (col) => {
146
+ return DataType[col.dataType] === 'TIME';
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
+ };
174
+ export const hasCustomCalendar = (col) => isDateFamilyColumn(col) && !!getCustomCalendarGuidFromColumn(col);
175
+ export function getStartEpoch(date) {
176
+ if (_.has(date, 'v') && _.has(date.v, 's')) {
177
+ return date.v.s;
178
+ }
179
+ return null;
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
+ }
189
+ export function getDisplayString(date) {
190
+ if (_.has(date, 'd')) {
191
+ return date.d;
192
+ }
193
+ return null;
194
+ }
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
+ }
258
+ }
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}`;
386
+ }
387
+ return formatDateTime(epochMillis, formatPattern, useSystemCalendar, options);
388
+ }
389
+ //# sourceMappingURL=date-formatting.js.map