@thoughtspot/ts-chart-sdk 0.0.2-alpha.24 → 0.0.2-alpha.26

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 (51) hide show
  1. package/dist/ts-chart-sdk.d.ts +63 -3
  2. package/lib/index.d.ts +2 -0
  3. package/lib/index.d.ts.map +1 -1
  4. package/lib/index.js +2 -0
  5. package/lib/index.js.map +1 -1
  6. package/lib/main/custom-chart-context.d.ts.map +1 -1
  7. package/lib/main/custom-chart-context.js +3 -1
  8. package/lib/main/custom-chart-context.js.map +1 -1
  9. package/lib/types/answer-column.types.d.ts +3 -3
  10. package/lib/types/answer-column.types.d.ts.map +1 -1
  11. package/lib/types/answer-column.types.js +3 -3
  12. package/lib/types/answer-column.types.js.map +1 -1
  13. package/lib/types/visual-prop.types.d.ts +40 -0
  14. package/lib/types/visual-prop.types.d.ts.map +1 -1
  15. package/lib/types/visual-prop.types.js +32 -1
  16. package/lib/types/visual-prop.types.js.map +1 -1
  17. package/lib/utils/globalize-Initializer/globalize-utils.d.ts +16 -0
  18. package/lib/utils/globalize-Initializer/globalize-utils.d.ts.map +1 -0
  19. package/lib/utils/globalize-Initializer/globalize-utils.js +101 -0
  20. package/lib/utils/globalize-Initializer/globalize-utils.js.map +1 -0
  21. package/lib/utils/globalize-Initializer/globalize-utils.spec.d.ts +2 -0
  22. package/lib/utils/globalize-Initializer/globalize-utils.spec.d.ts.map +1 -0
  23. package/lib/utils/globalize-Initializer/globalize-utils.spec.js +149 -0
  24. package/lib/utils/globalize-Initializer/globalize-utils.spec.js.map +1 -0
  25. package/lib/utils/number-formatting/number-formatting-utils.d.ts +20 -0
  26. package/lib/utils/number-formatting/number-formatting-utils.d.ts.map +1 -0
  27. package/lib/utils/number-formatting/number-formatting-utils.js +159 -0
  28. package/lib/utils/number-formatting/number-formatting-utils.js.map +1 -0
  29. package/lib/utils/number-formatting/number-formatting-utils.spec.d.ts +2 -0
  30. package/lib/utils/number-formatting/number-formatting-utils.spec.d.ts.map +1 -0
  31. package/lib/utils/number-formatting/number-formatting-utils.spec.js +221 -0
  32. package/lib/utils/number-formatting/number-formatting-utils.spec.js.map +1 -0
  33. package/lib/utils/number-formatting/number-formatting.d.ts +5 -0
  34. package/lib/utils/number-formatting/number-formatting.d.ts.map +1 -0
  35. package/lib/utils/number-formatting/number-formatting.js +128 -0
  36. package/lib/utils/number-formatting/number-formatting.js.map +1 -0
  37. package/lib/utils/number-formatting/number-formatting.spec.d.ts +2 -0
  38. package/lib/utils/number-formatting/number-formatting.spec.d.ts.map +1 -0
  39. package/lib/utils/number-formatting/number-formatting.spec.js +159 -0
  40. package/lib/utils/number-formatting/number-formatting.spec.js.map +1 -0
  41. package/package.json +4 -1
  42. package/src/index.ts +2 -0
  43. package/src/main/custom-chart-context.ts +4 -1
  44. package/src/types/answer-column.types.ts +3 -3
  45. package/src/types/visual-prop.types.ts +86 -0
  46. package/src/utils/globalize-Initializer/globalize-utils.spec.ts +192 -0
  47. package/src/utils/globalize-Initializer/globalize-utils.ts +216 -0
  48. package/src/utils/number-formatting/number-formatting-utils.spec.ts +296 -0
  49. package/src/utils/number-formatting/number-formatting-utils.ts +260 -0
  50. package/src/utils/number-formatting/number-formatting.spec.ts +243 -0
  51. package/src/utils/number-formatting/number-formatting.ts +264 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalize-utils.js","sourceRoot":"","sources":["../../../src/utils/globalize-Initializer/globalize-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=globalize-utils.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalize-utils.spec.d.ts","sourceRoot":"","sources":["../../../src/utils/globalize-Initializer/globalize-utils.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,149 @@
1
+ import Globalize from 'globalize';
2
+ import { formatNumberSafely, getCountryCode, getCurrentCurrencyFormat, getDefaultCurrencyCode, getGlobalizeLocale, globalizeCurrencyFormatter, globalizeNumberFormatter, initGlobalize, loadCurrencyData, loadGlobalizeData, sanitizeFormat, setCurrentCurrencyFormat, setGlobalizeLocale, validateNumberFormat, } from './globalize-utils';
3
+ describe('Initialize Globalize', () => {
4
+ beforeEach(() => {
5
+ jest.clearAllMocks();
6
+ initGlobalize('en-US');
7
+ });
8
+ describe('getCountryCode', () => {
9
+ it('should extract country code from locale with underscore', () => {
10
+ expect(getCountryCode('en_US')).toBe('US');
11
+ });
12
+ it('should extract country code from locale with hyphen', () => {
13
+ expect(getCountryCode('en-US')).toBe('US');
14
+ });
15
+ it('should return the input locale if no delimiter is found', () => {
16
+ expect(getCountryCode('en')).toBe('en');
17
+ });
18
+ });
19
+ describe('getDefaultCurrencyCode', () => {
20
+ it('should return the current currency format if set', () => {
21
+ setCurrentCurrencyFormat('EUR');
22
+ expect(getDefaultCurrencyCode()).toBe('EUR');
23
+ });
24
+ it('should return GBP if no currency data is found', () => {
25
+ setCurrentCurrencyFormat(null);
26
+ loadCurrencyData({});
27
+ expect(getDefaultCurrencyCode()).toBe('GBP');
28
+ });
29
+ it('should retrieve the default currency code from supplemental data', () => {
30
+ loadCurrencyData({
31
+ supplemental: {
32
+ currencyData: {
33
+ region: {
34
+ US: [{ USD: {} }],
35
+ },
36
+ },
37
+ },
38
+ });
39
+ setGlobalizeLocale('en-US');
40
+ expect(getDefaultCurrencyCode()).toBe('USD');
41
+ });
42
+ });
43
+ describe('setGlobalizeLocale', () => {
44
+ it('should set the Globalize locale', () => {
45
+ setGlobalizeLocale('fr-FR');
46
+ expect(getGlobalizeLocale()).toBe('fr-FR');
47
+ });
48
+ });
49
+ describe('getGlobalizeLocale', () => {
50
+ it('should return the current locale', () => {
51
+ expect(getGlobalizeLocale()).toBe('en-US');
52
+ });
53
+ });
54
+ describe('setCurrentCurrencyFormat', () => {
55
+ it('should set the current currency format', () => {
56
+ setCurrentCurrencyFormat('JPY');
57
+ expect(getCurrentCurrencyFormat()).toBe('JPY');
58
+ });
59
+ });
60
+ describe('loadCurrencyData', () => {
61
+ it('should load supplemental currency data', () => {
62
+ const data = {
63
+ supplemental: {
64
+ currencyData: {
65
+ region: {
66
+ US: [{ USD: {} }],
67
+ },
68
+ },
69
+ },
70
+ };
71
+ setCurrentCurrencyFormat(null);
72
+ loadCurrencyData(data);
73
+ expect(getDefaultCurrencyCode()).toBe('USD');
74
+ });
75
+ });
76
+ describe('loadGlobalizeData', () => {
77
+ it('should load CLDR data', () => {
78
+ jest.spyOn(Globalize, 'load').mockImplementationOnce((data) => {
79
+ return data;
80
+ });
81
+ const data = { key: 'value' };
82
+ loadGlobalizeData(data);
83
+ expect(Globalize.load).toHaveBeenCalledWith(data);
84
+ jest.clearAllMocks();
85
+ });
86
+ });
87
+ describe('globalizeNumberFormatter', () => {
88
+ it('should create a number formatter', () => {
89
+ const formatter = globalizeNumberFormatter({
90
+ minimumFractionDigits: 2,
91
+ });
92
+ expect(typeof formatter).toBe('function');
93
+ });
94
+ });
95
+ describe('globalizeCurrencyFormatter', () => {
96
+ it('should create a currency formatter', () => {
97
+ const formatter = globalizeCurrencyFormatter('USD', {
98
+ style: 'symbol',
99
+ });
100
+ expect(typeof formatter).toBe('function');
101
+ });
102
+ });
103
+ describe('formatNumberSafely', () => {
104
+ it('should format numbers safely', () => {
105
+ const formattedNumber = formatNumberSafely({ maximumFractionDigits: 2, minimumFractionDigits: 2 }, 123.456);
106
+ expect(formattedNumber).toBe('123.46');
107
+ });
108
+ it('should return 0 for very small numbers', () => {
109
+ jest.spyOn(Globalize, 'numberFormatter').mockImplementationOnce(() => {
110
+ throw new Error('Test Error');
111
+ });
112
+ const formattedNumber = formatNumberSafely({}, 1e-8);
113
+ expect(formattedNumber).toBe('0');
114
+ jest.clearAllMocks();
115
+ });
116
+ it('should return the string representation for errors', () => {
117
+ jest.spyOn(Globalize, 'numberFormatter').mockImplementationOnce(() => {
118
+ throw new Error('Test Error');
119
+ });
120
+ const formattedNumber = formatNumberSafely({}, 123);
121
+ expect(formattedNumber).toBe('123');
122
+ jest.clearAllMocks();
123
+ });
124
+ });
125
+ describe('sanitizeFormat', () => {
126
+ it('should add zero before decimal point', () => {
127
+ expect(sanitizeFormat('#.##')).toBe('0.##');
128
+ });
129
+ it('should add zero at the end if no decimal point', () => {
130
+ expect(sanitizeFormat('#%')).toBe('0%');
131
+ });
132
+ it('should return the same format if no changes are needed', () => {
133
+ expect(sanitizeFormat('0.##')).toBe('0.##');
134
+ });
135
+ });
136
+ describe('validateNumberFormat', () => {
137
+ it('should return true for valid number formats', () => {
138
+ expect(validateNumberFormat('#.##')).toBe(true);
139
+ });
140
+ it('should return false for invalid number formats', () => {
141
+ jest.spyOn(Globalize, 'numberFormatter').mockImplementation(() => {
142
+ throw new Error('Test Error');
143
+ });
144
+ expect(validateNumberFormat('#.#')).toBe(false);
145
+ jest.clearAllMocks();
146
+ });
147
+ });
148
+ });
149
+ //# sourceMappingURL=globalize-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"globalize-utils.spec.js","sourceRoot":"","sources":["../../../src/utils/globalize-Initializer/globalize-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ColumnFormat, CurrencyFormat } from '../../types/answer-column.types';
2
+ import { Maybe } from '../../types/common.types';
3
+ import { CurrencyFormatConfig, FormatConfig, NegativeValueFormat, NumberFormatConfig, Unit } from '../../types/number-formatting.types';
4
+ interface FormatterConfig {
5
+ unitDetails: Unit;
6
+ decimalDetails: number;
7
+ shouldRemoveTrailingZeros: boolean;
8
+ }
9
+ export declare const UNITS_TO_DIVIDING_FACTOR: Record<Unit, number>;
10
+ export declare const setLocaleBasedStringFormats: (tsLocaleBasedStringsFormats?: Record<string, string>) => void;
11
+ export declare const getLocaleBasedStringFormats: () => Record<string, string>;
12
+ export declare const UNITS_TO_SUFFIX: Record<Unit, string>;
13
+ export declare const formatNegativeValue: (formattedValue: string, negativeFormat?: Maybe<NegativeValueFormat> | number) => string;
14
+ export declare const getAutoUnit: (value: number) => Unit;
15
+ export declare const getLocaleName: (currencyFormat: CurrencyFormat) => string;
16
+ export declare const defaultFormatConfig: (columnFormatConfig?: ColumnFormat) => FormatConfig;
17
+ export declare const mapFormatterConfig: (absFloatValue: number, configDetails: NumberFormatConfig | CurrencyFormatConfig) => FormatterConfig;
18
+ export declare function formatSpecialDataValue(value: any): any;
19
+ export {};
20
+ //# sourceMappingURL=number-formatting-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-formatting-utils.d.ts","sourceRoot":"","sources":["../../../src/utils/number-formatting/number-formatting-utils.ts"],"names":[],"mappings":"AASA,OAAO,EACH,YAAY,EACZ,cAAc,EAEjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAEH,oBAAoB,EACpB,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,IAAI,EACP,MAAM,qCAAqC,CAAC;AAG7C,UAAU,eAAe;IACrB,WAAW,EAAE,IAAI,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,OAAO,CAAC;CACtC;AAID,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOzD,CAAC;AAUF,eAAO,MAAM,2BAA2B,iCACN,OAAO,MAAM,EAAE,MAAM,CAAC,SAKvD,CAAC;AAEF,eAAO,MAAM,2BAA2B,8BAAgB,CAAC;AAEzD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOhD,CAAC;AAWF,eAAO,MAAM,mBAAmB,mBACZ,MAAM,mBACL,MAAM,mBAAmB,CAAC,GAAG,MAAM,KACrD,MAWF,CAAC;AAQF,eAAO,MAAM,WAAW,UAAW,MAAM,KAAG,IAc3C,CAAC;AAQF,eAAO,MAAM,aAAa,mBAAoB,cAAc,KAAG,MAO9D,CAAC;AAQF,eAAO,MAAM,mBAAmB,wBACP,YAAY,KAClC,YA8CF,CAAC;AASF,eAAO,MAAM,kBAAkB,kBACZ,MAAM,iBACN,kBAAkB,GAAG,oBAAoB,KACzD,eAkBF,CAAC;AAQF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,GAAG,OAoChD"}
@@ -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":"AAQA,OAAO,CAAC,MAAM,QAAQ,CAAC;AACvB,OAAO,EAGH,kBAAkB,GACrB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACH,YAAY,EAGZ,mBAAmB,EAEnB,IAAI,GACP,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAUlF,MAAM,CAAC,MAAM,wBAAwB,GAAyB;IAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACd,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI;IACtB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI;IAC3B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAClC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IAC1C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;CACjB,CAAC;AAKF,IAAI,OAAO,GAA2B;IAClC,4BAA4B,EAAE,QAAQ;IACtC,6BAA6B,EAAE,SAAS;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACvC,2BAAoD,EACtD,EAAE;IACA,IAAI,2BAA2B,EAAE;QAC7B,OAAO,GAAG,2BAA2B,CAAC;KACzC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC;AAEzD,MAAM,CAAC,MAAM,eAAe,GAAyB;IACjD,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;IACf,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG;IACrB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG;IACnB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG;IACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG;IACpB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;CAClB,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,CAAC;AASpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,cAAsB,EACtB,cAAoD,EAC9C,EAAE;IACR,QAAQ,cAAc,EAAE;QACpB,KAAK,mBAAmB,CAAC,UAAU;YAC/B,OAAO,IAAI,cAAc,EAAE,CAAC;QAChC,KAAK,mBAAmB,CAAC,UAAU;YAC/B,OAAO,GAAG,cAAc,GAAG,CAAC;QAChC,KAAK,mBAAmB,CAAC,YAAY;YACjC,OAAO,IAAI,cAAc,GAAG,CAAC;QACjC;YACI,OAAO,IAAI,cAAc,EAAE,CAAC;KACnC;AACL,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAQ,EAAE;IAC/C,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IACD,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;IACD,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC;KACzB;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACrB,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,cAA8B,EAAU,EAAE;IACpE,IAAI,cAAc,CAAC,IAAI,KAAK,kBAAkB,CAAC,QAAQ,EAAE;QACrD,OAAO,cAAc,CAAC,OAAO,CAAC;KACjC;IAED,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,kBAAiC,EACrB,EAAE;IACd,IAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO,EAAE;QAC7B,OAAO;YACH,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,YAAY,CAAC,MAAM;YAC7B,kBAAkB,EAAE,IAAI;YACxB,kBAAkB,EAAE;gBAChB,UAAU,EAAE,oBAAoB;gBAChC,MAAM,EAAE,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,OAAO;aACtC;SACJ,CAAC;KACL;IACD,IAAI,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,cAAc,EAAE;QACpC,MAAM,MAAM,GAAG,aAAa,CAAC,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,cAAc,CAAC,CAAC;QACjE,MAAM,oBAAoB,GAAyB;YAC/C,UAAU,EAAE,sBAAsB;YAClC,QAAQ,EAAE,CAAC;YACX,MAAM;YACN,oBAAoB,EAAE,KAAK;YAC3B,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAClB,CAAC;QACF,MAAM,YAAY,GAAiB;YAC/B,UAAU,EAAE,cAAc;YAC1B,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,kBAAkB,EAAE,IAAI;YACxB,oBAAoB;SACvB,CAAC;QACF,OAAO,YAAY,CAAC;KACvB;IACD,MAAM,kBAAkB,GAAuB;QAC3C,UAAU,EAAE,oBAAoB;QAChC,QAAQ,EAAE,CAAC;QACX,mBAAmB,EAAE,mBAAmB,CAAC,UAAU;QACnD,oBAAoB,EAAE,KAAK;QAC3B,mBAAmB,EAAE,IAAI;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;KAClB,CAAC;IACF,MAAM,YAAY,GAAiB;QAC/B,UAAU,EAAE,cAAc;QAC1B,QAAQ,EAAE,YAAY,CAAC,MAAM;QAC7B,kBAAkB,EAAE,IAAI;QACxB,kBAAkB;QAClB,sBAAsB,EAAE,IAAI;KAC/B,CAAC;IACF,OAAO,YAAY,CAAC;AACxB,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,aAAqB,EACrB,aAAwD,EACzC,EAAE;IACjB,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IACzD,IAAI,WAAW,GAAG,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,cAAc,GAAG,aAAa,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEjD,IAAI,eAAe,EAAE;QACjB,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,WAAW,KAAK,IAAI,CAAC,IAAI,EAAE;YAC3B,cAAc,GAAG,yBAAyB,CAAC;SAC9C;KACJ;IACD,MAAM,yBAAyB,GAC3B,aAAa,CAAC,oBAAoB,IAAI,eAAe,CAAC;IAC1D,OAAO;QACH,WAAW;QACX,cAAc;QACd,yBAAyB;KAC5B,CAAC;AACN,CAAC,CAAC;AAQF,MAAM,UAAU,sBAAsB,CAAC,KAAU;IAC7C,IACI,KAAK,KAAK,OAAO,CAAC,4BAA4B;QAC9C,KAAK,KAAK,OAAO,CAAC,6BAA6B,EACjD;QACE,OAAO,KAAK,CAAC;KAChB;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;QACvC,OAAO,OAAO,CAAC,4BAA4B,CAAC;KAC/C;IAED,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC7D,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;KAC3B;IAGD,IAAI,KAAK,KAAK,EAAE,EAAE;QACd,OAAO,OAAO,CAAC,6BAA6B,CAAC;KAChD;IACD,IAAI,KAAK,YAAY,KAAK,EAAE;QACxB,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YACvC,OAAO,OAAO,CAAC,4BAA4B,CAAC;SAC/C;QAED,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE;YACd,KAAK,KAAK;gBACN,OAAO,KAAK,CAAC;YACjB,KAAK,UAAU;gBACX,OAAO,UAAU,CAAC;YACtB;gBACI,OAAO,IAAI,CAAC;SACnB;KACJ;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -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"}