@thoughtspot/ts-chart-sdk 0.0.2-alpha.9 → 1.0.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 +327 -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 +15 -4
  8. package/lib/main/custom-chart-context.d.ts.map +1 -1
  9. package/lib/main/custom-chart-context.js +44 -16
  10. package/lib/main/custom-chart-context.js.map +1 -1
  11. package/lib/main/custom-chart-context.spec.js +301 -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 +19 -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 +355 -6
  114. package/src/main/custom-chart-context.ts +181 -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 +54 -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
@@ -0,0 +1,159 @@
1
+ import _ from 'lodash';
2
+ import { CurrencyFormatType, } from '../../types/answer-column.types';
3
+ import { CategoryType, NegativeValueFormat, Unit, } from '../../types/number-formatting.types';
4
+ import { getDefaultCurrencyCode } from '../globalize-Initializer/globalize-utils';
5
+ export const UNITS_TO_DIVIDING_FACTOR = {
6
+ [Unit.None]: 1,
7
+ [Unit.Thousands]: 1000,
8
+ [Unit.Million]: 1000 * 1000,
9
+ [Unit.Billion]: 1000 * 1000 * 1000,
10
+ [Unit.Trillion]: 1000 * 1000 * 1000 * 1000,
11
+ [Unit.Auto]: 1,
12
+ };
13
+ let strings = {
14
+ NULL_VALUE_PLACEHOLDER_LABEL: '{Null}',
15
+ EMPTY_VALUE_PLACEHOLDER_LABEL: '{Empty}',
16
+ };
17
+ export const setLocaleBasedStringFormats = (tsLocaleBasedStringsFormats) => {
18
+ if (tsLocaleBasedStringsFormats) {
19
+ strings = tsLocaleBasedStringsFormats;
20
+ }
21
+ };
22
+ export const getLocaleBasedStringFormats = () => strings;
23
+ export const UNITS_TO_SUFFIX = {
24
+ [Unit.None]: '',
25
+ [Unit.Thousands]: 'K',
26
+ [Unit.Million]: 'M',
27
+ [Unit.Billion]: 'B',
28
+ [Unit.Trillion]: 'T',
29
+ [Unit.Auto]: '',
30
+ };
31
+ const DEFAULT_DECIMAL_PRECISION = 2;
32
+ export const formatNegativeValue = (formattedValue, negativeFormat) => {
33
+ switch (negativeFormat) {
34
+ case NegativeValueFormat.PrefixDash:
35
+ return `-${formattedValue}`;
36
+ case NegativeValueFormat.SuffixDash:
37
+ return `${formattedValue}-`;
38
+ case NegativeValueFormat.BracesNodash:
39
+ return `(${formattedValue})`;
40
+ default:
41
+ return `-${formattedValue}`;
42
+ }
43
+ };
44
+ export const getAutoUnit = (value) => {
45
+ if (value >= UNITS_TO_DIVIDING_FACTOR[Unit.Trillion]) {
46
+ return Unit.Trillion;
47
+ }
48
+ if (value >= UNITS_TO_DIVIDING_FACTOR[Unit.Billion]) {
49
+ return Unit.Billion;
50
+ }
51
+ if (value >= UNITS_TO_DIVIDING_FACTOR[Unit.Million]) {
52
+ return Unit.Million;
53
+ }
54
+ if (value >= UNITS_TO_DIVIDING_FACTOR[Unit.Thousands]) {
55
+ return Unit.Thousands;
56
+ }
57
+ return Unit.None;
58
+ };
59
+ export const getLocaleName = (currencyFormat) => {
60
+ if (currencyFormat.type === CurrencyFormatType.ISO_CODE) {
61
+ return currencyFormat.isoCode;
62
+ }
63
+ const locale = getDefaultCurrencyCode();
64
+ return locale;
65
+ };
66
+ export const defaultFormatConfig = (columnFormatConfig) => {
67
+ if (columnFormatConfig === null || columnFormatConfig === void 0 ? void 0 : columnFormatConfig.pattern) {
68
+ return {
69
+ __typename: 'FormatConfig',
70
+ category: CategoryType.Custom,
71
+ isCategoryEditable: true,
72
+ customFormatConfig: {
73
+ __typename: 'CustomFormatConfig',
74
+ format: columnFormatConfig === null || columnFormatConfig === void 0 ? void 0 : columnFormatConfig.pattern,
75
+ },
76
+ };
77
+ }
78
+ if (columnFormatConfig === null || columnFormatConfig === void 0 ? void 0 : columnFormatConfig.currencyFormat) {
79
+ const locale = getLocaleName(columnFormatConfig === null || columnFormatConfig === void 0 ? void 0 : columnFormatConfig.currencyFormat);
80
+ const currencyFormatConfig = {
81
+ __typename: 'CurrencyFormatConfig',
82
+ decimals: 0,
83
+ locale,
84
+ removeTrailingZeroes: false,
85
+ toSeparateThousands: true,
86
+ unit: Unit.Auto,
87
+ };
88
+ const formatConfig = {
89
+ __typename: 'FormatConfig',
90
+ category: CategoryType.Currency,
91
+ isCategoryEditable: true,
92
+ currencyFormatConfig,
93
+ };
94
+ return formatConfig;
95
+ }
96
+ const numberFormatConfig = {
97
+ __typename: 'NumberFormatConfig',
98
+ decimals: 0,
99
+ negativeValueFormat: NegativeValueFormat.PrefixDash,
100
+ removeTrailingZeroes: false,
101
+ toSeparateThousands: true,
102
+ unit: Unit.Auto,
103
+ };
104
+ const formatConfig = {
105
+ __typename: 'FormatConfig',
106
+ category: CategoryType.Number,
107
+ isCategoryEditable: true,
108
+ numberFormatConfig,
109
+ percentageFormatConfig: null,
110
+ };
111
+ return formatConfig;
112
+ };
113
+ export const mapFormatterConfig = (absFloatValue, configDetails) => {
114
+ const isAutoFormatted = configDetails.unit === Unit.Auto;
115
+ let unitDetails = configDetails.unit || Unit.Auto;
116
+ let decimalDetails = configDetails.decimals || 0;
117
+ if (isAutoFormatted) {
118
+ unitDetails = getAutoUnit(absFloatValue);
119
+ if (unitDetails !== Unit.None) {
120
+ decimalDetails = DEFAULT_DECIMAL_PRECISION;
121
+ }
122
+ }
123
+ const shouldRemoveTrailingZeros = configDetails.removeTrailingZeroes || isAutoFormatted;
124
+ return {
125
+ unitDetails,
126
+ decimalDetails,
127
+ shouldRemoveTrailingZeros,
128
+ };
129
+ };
130
+ export function formatSpecialDataValue(value) {
131
+ if (value === strings.NULL_VALUE_PLACEHOLDER_LABEL ||
132
+ value === strings.EMPTY_VALUE_PLACEHOLDER_LABEL) {
133
+ return value;
134
+ }
135
+ if (value === null || value === undefined) {
136
+ return strings.NULL_VALUE_PLACEHOLDER_LABEL;
137
+ }
138
+ if (value === Infinity || value === -Infinity || _.isNaN(value)) {
139
+ return value.toString();
140
+ }
141
+ if (value === '') {
142
+ return strings.EMPTY_VALUE_PLACEHOLDER_LABEL;
143
+ }
144
+ if (value instanceof Array) {
145
+ if (_.isEmpty(value) || _.isNil(value[0])) {
146
+ return strings.NULL_VALUE_PLACEHOLDER_LABEL;
147
+ }
148
+ switch (value[0]) {
149
+ case 'NaN':
150
+ return 'NaN';
151
+ case 'Infinity':
152
+ return 'Infinity';
153
+ default:
154
+ return null;
155
+ }
156
+ }
157
+ return null;
158
+ }
159
+ //# sourceMappingURL=number-formatting-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting-utils.js","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=number-formatting-utils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting-utils.spec.d.ts","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting-utils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,221 @@
1
+ import { CurrencyFormatType, FormatType, } from '../../types/answer-column.types';
2
+ import { CategoryType, NegativeValueFormat, Unit, } from '../../types/number-formatting.types';
3
+ import * as globalizeUtils from '../globalize-Initializer/globalize-utils';
4
+ import { defaultFormatConfig, formatNegativeValue, formatSpecialDataValue, getAutoUnit, getLocaleBasedStringFormats, getLocaleName, mapFormatterConfig, setLocaleBasedStringFormats, UNITS_TO_DIVIDING_FACTOR, } from './number-formatting-utils';
5
+ describe('formatNegativeValue', () => {
6
+ it('should format with prefix dash', () => {
7
+ const result = formatNegativeValue('100', NegativeValueFormat.PrefixDash);
8
+ expect(result).toBe('-100');
9
+ });
10
+ it('should format with suffix dash', () => {
11
+ const result = formatNegativeValue('100', NegativeValueFormat.SuffixDash);
12
+ expect(result).toBe('100-');
13
+ });
14
+ it('should format with braces without dash', () => {
15
+ const result = formatNegativeValue('100', NegativeValueFormat.BracesNodash);
16
+ expect(result).toBe('(100)');
17
+ });
18
+ it('should default to prefix dash if no format is provided', () => {
19
+ const result = formatNegativeValue('100');
20
+ expect(result).toBe('-100');
21
+ });
22
+ });
23
+ describe('getAutoUnit', () => {
24
+ it('should return Trillion for values above 1 Trillion', () => {
25
+ const result = getAutoUnit(1e12);
26
+ expect(result).toBe(Unit.Trillion);
27
+ });
28
+ it('should return Billion for values above 1 Billion', () => {
29
+ const result = getAutoUnit(1e9);
30
+ expect(result).toBe(Unit.Billion);
31
+ });
32
+ it('should return Million for values above 1 Million', () => {
33
+ const result = getAutoUnit(1e6);
34
+ expect(result).toBe(Unit.Million);
35
+ });
36
+ it('should return Thousands for values above 1 Thousand', () => {
37
+ const result = getAutoUnit(1e3);
38
+ expect(result).toBe(Unit.Thousands);
39
+ });
40
+ it('should return None for values below 1000', () => {
41
+ const result = getAutoUnit(500);
42
+ expect(result).toBe(Unit.None);
43
+ });
44
+ });
45
+ describe('getLocaleName', () => {
46
+ it('should return default locale if currency format is not ISO_CODE', () => {
47
+ jest.spyOn(globalizeUtils, 'getDefaultCurrencyCode').mockReturnValueOnce('GBP');
48
+ const currencyFormat = {
49
+ type: CurrencyFormatType.USER_LOCALE,
50
+ column: '',
51
+ isoCode: '',
52
+ };
53
+ const result = getLocaleName(currencyFormat);
54
+ expect(result).toBe('GBP');
55
+ });
56
+ it('should return ISO code if currency format is ISO_CODE', () => {
57
+ const currencyFormat = {
58
+ type: CurrencyFormatType.ISO_CODE,
59
+ column: '',
60
+ isoCode: 'USD',
61
+ };
62
+ const result = getLocaleName(currencyFormat);
63
+ expect(result).toBe('USD');
64
+ });
65
+ });
66
+ describe('defaultFormatConfig', () => {
67
+ it('should return custom format config for a pattern', () => {
68
+ var _a;
69
+ const columnFormatConfig = {
70
+ type: FormatType.PATTERN,
71
+ pattern: '###,###',
72
+ };
73
+ const result = defaultFormatConfig(columnFormatConfig);
74
+ expect(result.category).toBe(CategoryType.Custom);
75
+ expect((_a = result.customFormatConfig) === null || _a === void 0 ? void 0 : _a.format).toBe('###,###');
76
+ });
77
+ it('should return currency format config if currencyFormat is defined', () => {
78
+ var _a;
79
+ const columnFormatConfig = {
80
+ type: FormatType.CURRENCY,
81
+ currencyFormat: {
82
+ type: CurrencyFormatType.ISO_CODE,
83
+ column: '',
84
+ isoCode: 'USD',
85
+ },
86
+ };
87
+ const result = defaultFormatConfig(columnFormatConfig);
88
+ expect(result.category).toBe(CategoryType.Currency);
89
+ expect((_a = result.currencyFormatConfig) === null || _a === void 0 ? void 0 : _a.locale).toBe('USD');
90
+ });
91
+ it('should return number format config by default', () => {
92
+ var _a;
93
+ const result = defaultFormatConfig();
94
+ expect(result.category).toBe(CategoryType.Number);
95
+ expect((_a = result.numberFormatConfig) === null || _a === void 0 ? void 0 : _a.decimals).toBe(0);
96
+ });
97
+ });
98
+ describe('mapFormatterConfig', () => {
99
+ it('should return correct formatter config for a number format', () => {
100
+ const absFloatValue = 1000;
101
+ const configDetails = {
102
+ decimals: 2,
103
+ negativeValueFormat: NegativeValueFormat.PrefixDash,
104
+ removeTrailingZeroes: false,
105
+ toSeparateThousands: true,
106
+ unit: Unit.Million,
107
+ };
108
+ const result = mapFormatterConfig(absFloatValue, configDetails);
109
+ expect(result.unitDetails).toBe(Unit.Million);
110
+ expect(result.decimalDetails).toBe(2);
111
+ expect(result.shouldRemoveTrailingZeros).toBe(false);
112
+ });
113
+ it('should return auto unit and decimal precision for large value', () => {
114
+ const absFloatValue = 1e9;
115
+ const configDetails = {
116
+ decimals: 0,
117
+ negativeValueFormat: NegativeValueFormat.PrefixDash,
118
+ removeTrailingZeroes: false,
119
+ toSeparateThousands: true,
120
+ unit: Unit.Auto,
121
+ };
122
+ const result = mapFormatterConfig(absFloatValue, configDetails);
123
+ expect(result.unitDetails).toBe(Unit.Billion);
124
+ expect(result.decimalDetails).toBe(2);
125
+ });
126
+ it('should return correct config for currency formatting', () => {
127
+ const absFloatValue = 1000;
128
+ const configDetails = {
129
+ decimals: 2,
130
+ locale: 'en',
131
+ removeTrailingZeroes: false,
132
+ toSeparateThousands: true,
133
+ unit: Unit.Auto,
134
+ };
135
+ const result = mapFormatterConfig(absFloatValue, configDetails);
136
+ expect(result.unitDetails).toBe(Unit.Thousands);
137
+ expect(result.decimalDetails).toBe(2);
138
+ });
139
+ it('should correctly map valid unit numbers to the corresponding unit', () => {
140
+ const input = { unit: Unit.None };
141
+ const result = mapFormatterConfig(1000, input);
142
+ expect(result.unitDetails).toBe(Unit.None);
143
+ });
144
+ });
145
+ describe('formatSpecialDataValue', () => {
146
+ it('should return {Null} for {Null} values', () => {
147
+ const result = formatSpecialDataValue('{Null}');
148
+ expect(result).toBe('{Null}');
149
+ });
150
+ it('should return {Null} for null values', () => {
151
+ const result = formatSpecialDataValue(null);
152
+ expect(result).toBe('{Null}');
153
+ });
154
+ it('should return {Empty} for empty string', () => {
155
+ const result = formatSpecialDataValue('');
156
+ expect(result).toBe('{Empty}');
157
+ });
158
+ it('should return {Null} for undefined values', () => {
159
+ const result = formatSpecialDataValue(undefined);
160
+ expect(result).toBe('{Null}');
161
+ });
162
+ it('should return NaN for string "NaN"', () => {
163
+ const result = formatSpecialDataValue(['NaN']);
164
+ expect(result).toBe('NaN');
165
+ });
166
+ it('should return {Null} for empty array', () => {
167
+ const result = formatSpecialDataValue([]);
168
+ expect(result).toBe('{Null}');
169
+ });
170
+ it('should return Null for array', () => {
171
+ const result = formatSpecialDataValue(['Test']);
172
+ expect(result).toBe(null);
173
+ });
174
+ it('should return Infinity for string "Infinity"', () => {
175
+ const result = formatSpecialDataValue(['Infinity']);
176
+ expect(result).toBe('Infinity');
177
+ });
178
+ it('should return null for non-special values', () => {
179
+ const result = formatSpecialDataValue('Test');
180
+ expect(result).toBeNull();
181
+ });
182
+ it('should return Infinity for Infinity', () => {
183
+ const result = formatSpecialDataValue(Infinity);
184
+ expect(result).toBe('Infinity');
185
+ });
186
+ });
187
+ describe('Unit constants', () => {
188
+ it('should map unit to correct dividing factor', () => {
189
+ expect(UNITS_TO_DIVIDING_FACTOR[Unit.Thousands]).toBe(1000);
190
+ expect(UNITS_TO_DIVIDING_FACTOR[Unit.Million]).toBe(1000000);
191
+ expect(UNITS_TO_DIVIDING_FACTOR[Unit.Billion]).toBe(1000000000);
192
+ });
193
+ });
194
+ describe('Locale String Formats', () => {
195
+ const strings = {
196
+ NULL_VALUE_PLACEHOLDER_LABEL: '{Null}',
197
+ EMPTY_VALUE_PLACEHOLDER_LABEL: '{Empty}',
198
+ };
199
+ it('should return an default object if setLocaleBasedStringFormats is not called', () => {
200
+ const result = getLocaleBasedStringFormats();
201
+ expect(result).toEqual(strings);
202
+ });
203
+ it('should set and get locale-based string formats correctly', () => {
204
+ const testLocaleStrings = {
205
+ greeting: 'Hello',
206
+ farewell: 'Goodbye',
207
+ };
208
+ setLocaleBasedStringFormats(testLocaleStrings);
209
+ const result = getLocaleBasedStringFormats();
210
+ expect(result).toEqual(testLocaleStrings);
211
+ });
212
+ it('should update the string formats when setLocaleBasedStringFormats is called multiple times', () => {
213
+ const firstSet = { greeting: 'Hola' };
214
+ const secondSet = { greeting: 'Bonjour' };
215
+ setLocaleBasedStringFormats(firstSet);
216
+ expect(getLocaleBasedStringFormats()).toEqual(firstSet);
217
+ setLocaleBasedStringFormats(secondSet);
218
+ expect(getLocaleBasedStringFormats()).toEqual(secondSet);
219
+ });
220
+ });
221
+ //# sourceMappingURL=number-formatting-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting-utils.spec.js","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { ColumnFormat } from '../../types/answer-column.types';
2
+ import { FormatConfig } from '../../types/number-formatting.types';
3
+ export declare const formatCurrencyWithCustomPattern: (value: number, currencyCode: string, formatPattern: string) => string;
4
+ export declare const getFormattedValue: (value: string | number, formatConfigProp: FormatConfig, columnFormatConfig: ColumnFormat) => string;
5
+ //# sourceMappingURL=number-formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting.d.ts","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting.ts"],"names":[],"mappings":"AASA,OAAO,EACH,YAAY,EAGf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEH,YAAY,EAEf,MAAM,qCAAqC,CAAC;AA+B7C,eAAO,MAAM,+BAA+B,UACjC,MAAM,gBACC,MAAM,iBACL,MAAM,KACtB,MAsBF,CAAC;AAUF,eAAO,MAAM,iBAAiB,UACnB,MAAM,GAAG,MAAM,oBACJ,YAAY,sBACV,YAAY,KACjC,MA8KF,CAAC"}
@@ -0,0 +1,128 @@
1
+ import _ from 'lodash';
2
+ import { create } from '../../main/logger';
3
+ import { CurrencyFormatType, } from '../../types/answer-column.types';
4
+ import { CategoryType, } from '../../types/number-formatting.types';
5
+ import { formatNumberSafely, getDefaultCurrencyCode, globalizeCurrencyFormatter, globalizeNumberFormatter, sanitizeFormat, validateNumberFormat, } from '../globalize-Initializer/globalize-utils';
6
+ import { defaultFormatConfig, formatNegativeValue, formatSpecialDataValue, getLocaleName, mapFormatterConfig, UNITS_TO_DIVIDING_FACTOR, UNITS_TO_SUFFIX, } from './number-formatting-utils';
7
+ const logger = create('number-formatting');
8
+ const CURRENCY_CODE_EXTRACTOR_REGEX = /[\d.,]+/g;
9
+ export const formatCurrencyWithCustomPattern = (value, currencyCode, formatPattern) => {
10
+ const sanitizedPattern = sanitizeFormat(formatPattern);
11
+ const customFormatter = globalizeNumberFormatter({
12
+ ...{ raw: sanitizedPattern },
13
+ });
14
+ const formattedValue = customFormatter(value);
15
+ const currencyFormatter = globalizeCurrencyFormatter(currencyCode, {
16
+ style: 'symbol',
17
+ });
18
+ const currencySymbol = currencyFormatter(0).replace(CURRENCY_CODE_EXTRACTOR_REGEX, '');
19
+ return `${currencySymbol}${formattedValue}`;
20
+ };
21
+ export const getFormattedValue = (value, formatConfigProp, columnFormatConfig) => {
22
+ var _a, _b;
23
+ let formatConfig = _.cloneDeep(formatConfigProp);
24
+ if (_.isNil(formatConfig) || _.isEmpty(formatConfig)) {
25
+ formatConfig = defaultFormatConfig(columnFormatConfig);
26
+ }
27
+ const specialVal = formatSpecialDataValue(value);
28
+ if (specialVal) {
29
+ return specialVal;
30
+ }
31
+ const floatValue = parseFloat(value.toString());
32
+ const absFloatValue = Math.abs(floatValue);
33
+ switch (formatConfig.category) {
34
+ case CategoryType.Number: {
35
+ const configDetails = formatConfig.numberFormatConfig || {};
36
+ const formatterConfigMap = mapFormatterConfig(absFloatValue, configDetails);
37
+ const compactValue = absFloatValue /
38
+ UNITS_TO_DIVIDING_FACTOR[formatterConfigMap.unitDetails];
39
+ const suffix = UNITS_TO_SUFFIX[formatterConfigMap.unitDetails];
40
+ const formattedValue = formatNumberSafely({
41
+ style: 'decimal',
42
+ maximumFractionDigits: formatterConfigMap.decimalDetails,
43
+ minimumFractionDigits: formatterConfigMap.shouldRemoveTrailingZeros
44
+ ? 0
45
+ : formatterConfigMap.decimalDetails,
46
+ useGrouping: configDetails.toSeparateThousands || false,
47
+ }, compactValue);
48
+ const absFormattedValue = `${formattedValue}${suffix}`;
49
+ if (absFloatValue !== floatValue) {
50
+ return formatNegativeValue(absFormattedValue, configDetails.negativeValueFormat);
51
+ }
52
+ return absFormattedValue;
53
+ }
54
+ case CategoryType.Percentage: {
55
+ const configDetails = formatConfig.percentageFormatConfig;
56
+ const decimalDetails = (configDetails === null || configDetails === void 0 ? void 0 : configDetails.decimals) || 0;
57
+ return formatNumberSafely({
58
+ style: 'percent',
59
+ maximumFractionDigits: decimalDetails,
60
+ minimumFractionDigits: (configDetails === null || configDetails === void 0 ? void 0 : configDetails.removeTrailingZeroes)
61
+ ? 0
62
+ : decimalDetails,
63
+ }, floatValue);
64
+ }
65
+ case CategoryType.Currency: {
66
+ const configDetails = formatConfig.currencyFormatConfig || {};
67
+ const formatterConfigMap = mapFormatterConfig(absFloatValue, configDetails);
68
+ const compactValue = floatValue /
69
+ UNITS_TO_DIVIDING_FACTOR[formatterConfigMap.unitDetails];
70
+ let locale = configDetails.locale || getDefaultCurrencyCode();
71
+ if (locale === CurrencyFormatType.USER_LOCALE) {
72
+ locale = getLocaleName({
73
+ type: locale,
74
+ });
75
+ }
76
+ try {
77
+ const formatter = globalizeCurrencyFormatter(locale, {
78
+ style: 'symbol',
79
+ maximumFractionDigits: formatterConfigMap.decimalDetails,
80
+ minimumFractionDigits: formatterConfigMap.shouldRemoveTrailingZeros
81
+ ? 0
82
+ : formatterConfigMap.decimalDetails,
83
+ useGrouping: configDetails.toSeparateThousands || false,
84
+ });
85
+ const formattedValue = formatter(compactValue);
86
+ const currencyCode = formattedValue.replace(CURRENCY_CODE_EXTRACTOR_REGEX, '');
87
+ const suffix = !_.isNil(floatValue)
88
+ ? UNITS_TO_SUFFIX[formatterConfigMap.unitDetails]
89
+ : '';
90
+ if (/[0-9]$/.test(formattedValue.charAt(0))) {
91
+ return `${formattedValue.replace(currencyCode, '')}${suffix}${currencyCode}`;
92
+ }
93
+ return `${formattedValue}${suffix}`;
94
+ }
95
+ catch (e) {
96
+ logger.error('Corrupted format config passed, formatting using default config', formatConfig, e);
97
+ }
98
+ break;
99
+ }
100
+ case CategoryType.Custom: {
101
+ const formatPattern = (_a = formatConfig.customFormatConfig) === null || _a === void 0 ? void 0 : _a.format;
102
+ const currencyCode = (_b = columnFormatConfig.currencyFormat) === null || _b === void 0 ? void 0 : _b.isoCode;
103
+ if (!_.isNil(formatPattern) &&
104
+ validateNumberFormat(sanitizeFormat(formatPattern))) {
105
+ const sanitizedPattern = sanitizeFormat(formatPattern);
106
+ if (!_.isNil(currencyCode)) {
107
+ const formattedValueWithLocaleAndPattern = formatCurrencyWithCustomPattern(floatValue, currencyCode, formatPattern);
108
+ return `${formattedValueWithLocaleAndPattern}`;
109
+ }
110
+ return formatNumberSafely({
111
+ style: 'decimal',
112
+ raw: sanitizedPattern,
113
+ }, floatValue);
114
+ }
115
+ logger.error('Invalid custom format config passed:', formatConfig);
116
+ break;
117
+ }
118
+ default: {
119
+ return formatNumberSafely({
120
+ style: 'decimal',
121
+ }, floatValue);
122
+ }
123
+ }
124
+ return formatNumberSafely({
125
+ style: 'decimal',
126
+ }, floatValue);
127
+ };
128
+ //# sourceMappingURL=number-formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting.js","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=number-formatting.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting.spec.d.ts","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting.spec.ts"],"names":[],"mappings":""}