feat: Add currencies controls in control panels (#24718)

This commit is contained in:
Kamil Gabryjelski
2023-08-02 19:22:45 +02:00
committed by Michael S. Molina
parent dfd699f440
commit 10e781d0ff
63 changed files with 697 additions and 306 deletions

View File

@@ -142,6 +142,7 @@ export default function PivotTableChart(props: PivotTableProps) {
rowTotals,
rowSubTotals,
valueFormat,
currencyFormat,
emitCrossFilters,
setDataMask,
selectedFilters,
@@ -157,8 +158,14 @@ export default function PivotTableChart(props: PivotTableProps) {
const theme = useTheme();
const defaultFormatter = useMemo(
() => getNumberFormatter(valueFormat),
[valueFormat],
() =>
currencyFormat?.symbol
? new CurrencyFormatter({
currency: currencyFormat,
d3Format: valueFormat,
})
: getNumberFormatter(valueFormat),
[valueFormat, currencyFormat],
);
const customFormatsArray = useMemo(
() =>
@@ -170,9 +177,9 @@ export default function PivotTableChart(props: PivotTableProps) {
).map(metricName => [
metricName,
columnFormats[metricName] || valueFormat,
currencyFormats[metricName],
currencyFormats[metricName] || currencyFormat,
]),
[columnFormats, currencyFormats, valueFormat],
[columnFormats, currencyFormat, currencyFormats, valueFormat],
);
const hasCustomMetricFormatters = customFormatsArray.length > 0;
const metricFormatters = useMemo(

View File

@@ -296,6 +296,7 @@ const config: ControlPanelConfig = {
},
},
],
['currency_format'],
[
{
name: 'date_format',

View File

@@ -104,6 +104,7 @@ export default function transformProps(chartProps: ChartProps<QueryFormData>) {
metricsLayout,
conditionalFormatting,
timeGrainSqla,
currencyFormat,
} = formData;
const { selectedFilters } = filterState;
const granularity = extractTimegrain(rawFormData);
@@ -161,6 +162,7 @@ export default function transformProps(chartProps: ChartProps<QueryFormData>) {
rowTotals,
rowSubTotals,
valueFormat,
currencyFormat,
emitCrossFilters,
setDataMask,
selectedFilters,

View File

@@ -67,6 +67,7 @@ interface PivotTableCustomizeProps {
rowTotals: boolean;
rowSubTotals: boolean;
valueFormat: string;
currencyFormat: Currency;
setDataMask: SetDataMaskHook;
emitCrossFilters?: boolean;
selectedFilters?: SelectedFiltersType;

View File

@@ -54,6 +54,7 @@ const formData: PivotTableQueryFormData = {
margin: 0,
time_grain_sqla: TimeGranularity.MONTH,
temporal_columns_lookup: { col1: true },
currencyFormat: { symbol: 'USD', symbolPosition: 'prefix' },
};
test('should build groupby with series in form data', () => {

View File

@@ -45,6 +45,7 @@ describe('PivotTableChart transformProps', () => {
dateFormat: '',
legacy_order_by: 'count',
order_desc: true,
currencyFormat: { symbol: 'USD', symbolPosition: 'prefix' },
};
const chartProps = new ChartProps<QueryFormData>({
formData,
@@ -91,6 +92,7 @@ describe('PivotTableChart transformProps', () => {
emitCrossFilters: false,
columnFormats: {},
currencyFormats: {},
currencyFormat: { symbol: 'USD', symbolPosition: 'prefix' },
});
});
});