@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.
- package/README.md +126 -50
- package/dist/ts-chart-sdk.d.ts +940 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -0
- package/lib/index.js.map +1 -1
- package/lib/main/custom-chart-context.d.ts +22 -7
- package/lib/main/custom-chart-context.d.ts.map +1 -1
- package/lib/main/custom-chart-context.js +59 -4
- package/lib/main/custom-chart-context.js.map +1 -1
- package/lib/main/custom-chart-context.spec.js +402 -5
- package/lib/main/custom-chart-context.spec.js.map +1 -1
- package/lib/main/post-message-event-bridge.js +2 -2
- package/lib/main/post-message-event-bridge.js.map +1 -1
- package/lib/main/util.spec.d.ts +2 -0
- package/lib/main/util.spec.d.ts.map +1 -0
- package/lib/main/util.spec.js +31 -0
- package/lib/main/util.spec.js.map +1 -0
- package/lib/react/use-custom-chart-context.spec.js +54 -3
- package/lib/react/use-custom-chart-context.spec.js.map +1 -1
- package/lib/test/test-conditional-formatting-utils.d.ts +5 -0
- package/lib/test/test-conditional-formatting-utils.d.ts.map +1 -0
- package/lib/test/test-conditional-formatting-utils.js +43 -0
- package/lib/test/test-conditional-formatting-utils.js.map +1 -0
- package/lib/types/answer-column.types.d.ts +57 -1
- package/lib/types/answer-column.types.d.ts.map +1 -1
- package/lib/types/answer-column.types.js +47 -0
- package/lib/types/answer-column.types.js.map +1 -1
- package/lib/types/chart-to-ts-event.types.d.ts +2 -0
- package/lib/types/chart-to-ts-event.types.d.ts.map +1 -1
- package/lib/types/chart-to-ts-event.types.js +1 -0
- package/lib/types/chart-to-ts-event.types.js.map +1 -1
- package/lib/types/common.types.d.ts +103 -4
- package/lib/types/common.types.d.ts.map +1 -1
- package/lib/types/common.types.js +15 -1
- package/lib/types/common.types.js.map +1 -1
- package/lib/types/conditional-formatting.types.d.ts +140 -0
- package/lib/types/conditional-formatting.types.d.ts.map +1 -0
- package/lib/types/conditional-formatting.types.js +60 -0
- package/lib/types/conditional-formatting.types.js.map +1 -0
- package/lib/types/configurator.types.d.ts +5 -0
- package/lib/types/configurator.types.d.ts.map +1 -1
- package/lib/types/number-formatting.types.d.ts +55 -0
- package/lib/types/number-formatting.types.d.ts.map +1 -0
- package/lib/types/number-formatting.types.js +23 -0
- package/lib/types/number-formatting.types.js.map +1 -0
- package/lib/types/ts-to-chart-event.types.d.ts +10 -5
- package/lib/types/ts-to-chart-event.types.d.ts.map +1 -1
- package/lib/types/ts-to-chart-event.types.js.map +1 -1
- package/lib/types/visual-prop.types.d.ts +21 -0
- package/lib/types/visual-prop.types.d.ts.map +1 -1
- package/lib/utils/conditional-formatting/conditional-formatting.d.ts +10 -0
- package/lib/utils/conditional-formatting/conditional-formatting.d.ts.map +1 -0
- package/lib/utils/conditional-formatting/conditional-formatting.js +103 -0
- package/lib/utils/conditional-formatting/conditional-formatting.js.map +1 -0
- package/lib/utils/conditional-formatting/conditional-formatting.spec.d.ts +2 -0
- package/lib/utils/conditional-formatting/conditional-formatting.spec.d.ts.map +1 -0
- package/lib/utils/conditional-formatting/conditional-formatting.spec.js +142 -0
- package/lib/utils/conditional-formatting/conditional-formatting.spec.js.map +1 -0
- package/lib/utils/date-formatting.d.ts +103 -0
- package/lib/utils/date-formatting.d.ts.map +1 -0
- package/lib/utils/date-formatting.js +389 -0
- package/lib/utils/date-formatting.js.map +1 -0
- package/lib/utils/date-formatting.spec.d.ts +2 -0
- package/lib/utils/date-formatting.spec.d.ts.map +1 -0
- package/lib/utils/date-formatting.spec.js +394 -0
- package/lib/utils/date-formatting.spec.js.map +1 -0
- package/lib/utils/date-utils.d.ts +6 -0
- package/lib/utils/date-utils.d.ts.map +1 -0
- package/lib/utils/date-utils.js +20 -0
- package/lib/utils/date-utils.js.map +1 -0
- package/lib/utils/date-utils.spec.d.ts +2 -0
- package/lib/utils/date-utils.spec.d.ts.map +1 -0
- package/lib/utils/date-utils.spec.js +63 -0
- package/lib/utils/date-utils.spec.js.map +1 -0
- package/lib/utils/formatting-util.d.ts +10 -0
- package/lib/utils/formatting-util.d.ts.map +1 -0
- package/lib/utils/formatting-util.js +78 -0
- package/lib/utils/formatting-util.js.map +1 -0
- package/lib/utils/formatting-util.spec.d.ts +2 -0
- package/lib/utils/formatting-util.spec.d.ts.map +1 -0
- package/lib/utils/formatting-util.spec.js +247 -0
- package/lib/utils/formatting-util.spec.js.map +1 -0
- package/package.json +6 -4
- package/src/index.ts +4 -0
- package/src/main/custom-chart-context.spec.ts +474 -9
- package/src/main/custom-chart-context.ts +246 -12
- package/src/main/post-message-event-bridge.ts +1 -1
- package/src/main/util.spec.ts +41 -0
- package/src/react/use-custom-chart-context.spec.tsx +65 -3
- package/src/test/test-conditional-formatting-utils.ts +95 -0
- package/src/types/answer-column.types.ts +102 -1
- package/src/types/chart-to-ts-event.types.ts +7 -0
- package/src/types/common.types.ts +165 -10
- package/src/types/conditional-formatting.types.ts +157 -0
- package/src/types/configurator.types.ts +21 -0
- package/src/types/number-formatting.types.ts +80 -0
- package/src/types/ts-to-chart-event.types.ts +38 -6
- package/src/types/visual-prop.types.ts +75 -1
- package/src/utils/conditional-formatting/conditional-formatting.spec.ts +469 -0
- package/src/utils/conditional-formatting/conditional-formatting.ts +229 -0
- package/src/utils/date-formatting.spec.ts +511 -0
- package/src/utils/date-formatting.ts +679 -0
- package/src/utils/date-utils.spec.ts +93 -0
- package/src/utils/date-utils.ts +69 -0
- package/src/utils/formatting-util.spec.ts +312 -0
- package/src/utils/formatting-util.ts +234 -0
|
@@ -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
|