Skip to content
Snippets Groups Projects
Unverified Commit 6a68d414 authored by Paul Rosenzweig's avatar Paul Rosenzweig Committed by GitHub
Browse files

respect number_style=percent when using compact formatting (#10033)

parent b91f3a27
No related merge requests found
...@@ -156,7 +156,7 @@ export function formatNumber(number: number, options: FormattingOptions = {}) { ...@@ -156,7 +156,7 @@ export function formatNumber(number: number, options: FormattingOptions = {}) {
} }
if (options.compact) { if (options.compact) {
return formatNumberCompact(number); return formatNumberCompact(number, options);
} else if (options.number_style === "scientific") { } else if (options.number_style === "scientific") {
return formatNumberScientific(number, options); return formatNumberScientific(number, options);
} else { } else {
...@@ -248,7 +248,14 @@ function formatNumberScientific( ...@@ -248,7 +248,14 @@ function formatNumberScientific(
} }
} }
function formatNumberCompact(value: number) { function formatNumberCompact(value: number, options: FormattingOptions) {
if (options.number_style === "percent") {
return formatNumberCompactWithoutOptions(value * 100) + "%";
}
return formatNumberCompactWithoutOptions(value);
}
function formatNumberCompactWithoutOptions(value: number) {
if (value === 0) { if (value === 0) {
// 0 => 0 // 0 => 0
return "0"; return "0";
......
...@@ -46,6 +46,19 @@ describe("formatting", () => { ...@@ -46,6 +46,19 @@ describe("formatting", () => {
expect(formatNumber(1000, { compact: true })).toEqual("1.0k"); expect(formatNumber(1000, { compact: true })).toEqual("1.0k");
expect(formatNumber(1111, { compact: true })).toEqual("1.1k"); expect(formatNumber(1111, { compact: true })).toEqual("1.1k");
}); });
it("should format compact percentages", () => {
const options = { compact: true, number_style: "percent" };
expect(formatNumber(0, options)).toEqual("0%");
expect(formatNumber(0.001, options)).toEqual("0.1%");
expect(formatNumber(0.0001, options)).toEqual("~ 0%");
expect(formatNumber(0.001234, options)).toEqual("0.12%");
expect(formatNumber(0.1, options)).toEqual("10%");
expect(formatNumber(0.1234, options)).toEqual("12%");
expect(formatNumber(0.019, options)).toEqual("2%");
expect(formatNumber(0.021, options)).toEqual("2%");
expect(formatNumber(11.11, options)).toEqual("1.1k%");
expect(formatNumber(-0.22, options)).toEqual("-22%");
});
}); });
// FIXME: failing on CI // FIXME: failing on CI
xit("should format to correct number of decimal places", () => { xit("should format to correct number of decimal places", () => {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment