feat: Implement currencies formatter for saved metrics (#24517)

This commit is contained in:
Kamil Gabryjelski
2023-06-28 20:51:40 +02:00
committed by GitHub
parent e402c94a9f
commit 83ff4cd86a
61 changed files with 906 additions and 75 deletions

View File

@@ -18,6 +18,7 @@
*/
import memoizeOne from 'memoize-one';
import {
CurrencyFormatter,
DataRecord,
extractTimegrain,
GenericDataType,
@@ -84,7 +85,7 @@ const processColumns = memoizeOne(function processColumns(
props: TableChartProps,
) {
const {
datasource: { columnFormats, verboseMap },
datasource: { columnFormats, currencyFormats, verboseMap },
rawFormData: {
table_timestamp_format: tableTimestampFormat,
metrics: metrics_,
@@ -123,6 +124,7 @@ const processColumns = memoizeOne(function processColumns(
const isTime = dataType === GenericDataType.TEMPORAL;
const isNumber = dataType === GenericDataType.NUMERIC;
const savedFormat = columnFormats?.[key];
const currency = currencyFormats?.[key];
const numberFormat = config.d3NumberFormat || savedFormat;
let formatter;
@@ -155,7 +157,9 @@ const processColumns = memoizeOne(function processColumns(
// percent metrics have a default format
formatter = getNumberFormatter(numberFormat || PERCENT_3_POINT);
} else if (isMetric || (isNumber && numberFormat)) {
formatter = getNumberFormatter(numberFormat);
formatter = currency
? new CurrencyFormatter({ d3Format: numberFormat, currency })
: getNumberFormatter(numberFormat);
}
return {
key,