diff --git a/__mocks__/dh-core.js b/__mocks__/dh-core.js index c9f5acc257..680e8e5a88 100644 --- a/__mocks__/dh-core.js +++ b/__mocks__/dh-core.js @@ -1812,11 +1812,10 @@ class NumberFormat { } static format(pattern, number) { - if (pattern.indexOf('.') >= 0) { - return number.toFixed(4); - } else { - return number.toFixed(0); - } + const decimalIndex = pattern.indexOf('.'); + const decimalCount = + decimalIndex >= 0 ? pattern.length - decimalIndex - 1 : 0; + return number.toFixed(decimalCount); } } diff --git a/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.test.ts b/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.test.ts new file mode 100644 index 0000000000..e256989436 --- /dev/null +++ b/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.test.ts @@ -0,0 +1,41 @@ +import DecimalColumnFormatter from './DecimalColumnFormatter'; + +describe('multiplier tests', () => { + const formatter = new DecimalColumnFormatter(); + const value = 10.4; + it('handles null multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: null, + }) + ).toBe('10.4000'); + }); + it('handles undefined multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: undefined, + }) + ).toBe('10.4000'); + }); + it('ignores 0 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 0, + }) + ).toBe('10.4000'); + }); + it('handles 1 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 1, + }) + ).toBe('10.4000'); + }); + it('handles 2 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 2, + }) + ).toBe('20.8000'); + }); +}); diff --git a/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.ts b/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.ts index 70c0cc775c..42136f53bc 100644 --- a/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.ts +++ b/packages/jsapi-utils/src/formatters/DecimalColumnFormatter.ts @@ -8,7 +8,7 @@ import TableColumnFormatter, { const log = Log.module('DecimalColumnFormatter'); export type DecimalColumnFormat = TableColumnFormat & { - multiplier?: number; + multiplier?: number | null; }; export type DecimalColumnFormatterOptions = { @@ -175,7 +175,7 @@ export class DecimalColumnFormatter extends TableColumnFormatter { ? format.formatString : this.defaultFormatString; const value = - format.multiplier !== undefined && format.multiplier !== 0 + format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam; try { diff --git a/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.test.ts b/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.test.ts new file mode 100644 index 0000000000..717e236348 --- /dev/null +++ b/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.test.ts @@ -0,0 +1,41 @@ +import IntegerColumnFormatter from './IntegerColumnFormatter'; + +describe('multiplier tests', () => { + const formatter = new IntegerColumnFormatter(); + const value = 10; + it('handles null multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: null, + }) + ).toBe('10'); + }); + it('handles undefined multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: undefined, + }) + ).toBe('10'); + }); + it('ignores 0 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 0, + }) + ).toBe('10'); + }); + it('handles 1 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 1, + }) + ).toBe('10'); + }); + it('handles 2 multiplier correctly', () => { + expect( + formatter.format(value, { + multiplier: 2, + }) + ).toBe('20'); + }); +}); diff --git a/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.ts b/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.ts index 010337323e..58053bc197 100644 --- a/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.ts +++ b/packages/jsapi-utils/src/formatters/IntegerColumnFormatter.ts @@ -8,7 +8,7 @@ import TableColumnFormatter, { const log = Log.module('IntegerColumnFormatter'); export type IntegerColumnFormat = TableColumnFormat & { - multiplier?: number; + multiplier?: number | null; }; export type IntegerColumnFormatterOptions = { @@ -150,7 +150,7 @@ export class IntegerColumnFormatter extends TableColumnFormatter { ? format.formatString : this.defaultFormatString; const value = - format.multiplier !== undefined && format.multiplier !== 0 + format.multiplier != null && format.multiplier !== 0 ? valueParam * format.multiplier : valueParam; try {