mirror of
https://github.com/apache/superset.git
synced 2026-04-19 08:04:53 +00:00
feat: Add currencies controls in control panels (#24718)
This commit is contained in:
committed by
GitHub
parent
1a9c559a8f
commit
f7e76d02b7
@@ -62,6 +62,7 @@ export default {
|
||||
[headerFontSize],
|
||||
[subheaderFontSize],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'time_format',
|
||||
|
||||
@@ -53,6 +53,7 @@ export default function transformProps(
|
||||
timeFormat,
|
||||
yAxisFormat,
|
||||
conditionalFormatting,
|
||||
currencyFormat,
|
||||
} = formData;
|
||||
const refs: Refs = {};
|
||||
const { data = [], coltypes = [] } = queriesData[0];
|
||||
@@ -80,6 +81,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
const headerFormatter =
|
||||
|
||||
@@ -136,6 +136,7 @@ const config: ControlPanelConfig = {
|
||||
[headerFontSize],
|
||||
[subheaderFontSize],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'time_format',
|
||||
|
||||
@@ -91,6 +91,7 @@ export default function transformProps(
|
||||
subheaderFontSize,
|
||||
forceTimestampFormatting,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
timeRangeFixed,
|
||||
} = formData;
|
||||
const granularity = extractTimegrain(rawFormData);
|
||||
@@ -180,6 +181,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
const headerFormatter =
|
||||
|
||||
@@ -119,6 +119,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'show_labels',
|
||||
|
||||
@@ -112,6 +112,7 @@ export default function transformProps(
|
||||
legendType,
|
||||
metric = '',
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
showLabels,
|
||||
showLegend,
|
||||
sliceId,
|
||||
@@ -147,6 +148,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
const transformedData: FunnelSeriesOption[] = data.map(datum => {
|
||||
|
||||
@@ -154,6 +154,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'value_formatter',
|
||||
|
||||
@@ -118,6 +118,7 @@ export default function transformProps(
|
||||
colorScheme,
|
||||
fontSize,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
animation,
|
||||
showProgress,
|
||||
overlap,
|
||||
@@ -141,6 +142,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
const colorFn = CategoricalColorNamespace.getScale(colorScheme as string);
|
||||
const axisLineWidth = calculateAxisLineWidth(data, fontSize, overlap);
|
||||
|
||||
@@ -389,6 +389,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
@@ -427,6 +428,15 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'currency_format_secondary',
|
||||
config: {
|
||||
...sharedControls.currency_format,
|
||||
label: t('Secondary currency format'),
|
||||
},
|
||||
},
|
||||
],
|
||||
[
|
||||
{
|
||||
name: 'yAxisTitleSecondary',
|
||||
|
||||
@@ -36,9 +36,9 @@ import {
|
||||
ensureIsArray,
|
||||
buildCustomFormatters,
|
||||
ValueFormatter,
|
||||
NumberFormatter,
|
||||
QueryFormMetric,
|
||||
getCustomFormatter,
|
||||
CurrencyFormatter,
|
||||
} from '@superset-ui/core';
|
||||
import { getOriginalSeries } from '@superset-ui/chart-controls';
|
||||
import { EChartsCoreOption, SeriesOption } from 'echarts';
|
||||
@@ -92,7 +92,7 @@ import { getYAxisFormatter } from '../utils/getYAxisFormatter';
|
||||
|
||||
const getFormatter = (
|
||||
customFormatters: Record<string, ValueFormatter>,
|
||||
defaultFormatter: NumberFormatter,
|
||||
defaultFormatter: ValueFormatter,
|
||||
metrics: QueryFormMetric[],
|
||||
formatterKey: string,
|
||||
forcePercentFormat: boolean,
|
||||
@@ -167,7 +167,9 @@ export default function transformProps(
|
||||
truncateYAxis,
|
||||
tooltipTimeFormat,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
yAxisFormatSecondary,
|
||||
currencyFormatSecondary,
|
||||
xAxisTimeFormat,
|
||||
yAxisBounds,
|
||||
yAxisBoundsSecondary,
|
||||
@@ -221,21 +223,32 @@ export default function transformProps(
|
||||
const xAxisDataType = dataTypes?.[xAxisLabel] ?? dataTypes?.[xAxisOrig];
|
||||
const xAxisType = getAxisType(xAxisDataType);
|
||||
const series: SeriesOption[] = [];
|
||||
const formatter = getNumberFormatter(contributionMode ? ',.0%' : yAxisFormat);
|
||||
const formatterSecondary = getNumberFormatter(
|
||||
contributionMode ? ',.0%' : yAxisFormatSecondary,
|
||||
);
|
||||
const formatter = contributionMode
|
||||
? getNumberFormatter(',.0%')
|
||||
: currencyFormat?.symbol
|
||||
? new CurrencyFormatter({ d3Format: yAxisFormat, currency: currencyFormat })
|
||||
: getNumberFormatter(yAxisFormat);
|
||||
const formatterSecondary = contributionMode
|
||||
? getNumberFormatter(',.0%')
|
||||
: currencyFormatSecondary?.symbol
|
||||
? new CurrencyFormatter({
|
||||
d3Format: yAxisFormatSecondary,
|
||||
currency: currencyFormatSecondary,
|
||||
})
|
||||
: getNumberFormatter(yAxisFormatSecondary);
|
||||
const customFormatters = buildCustomFormatters(
|
||||
[...ensureIsArray(metrics), ...ensureIsArray(metricsB)],
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
const customFormattersSecondary = buildCustomFormatters(
|
||||
[...ensureIsArray(metrics), ...ensureIsArray(metricsB)],
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
yAxisFormatSecondary,
|
||||
currencyFormatSecondary,
|
||||
);
|
||||
|
||||
const primarySeries = new Set<string>();
|
||||
@@ -498,7 +511,7 @@ export default function transformProps(
|
||||
metrics,
|
||||
!!contributionMode,
|
||||
customFormatters,
|
||||
yAxisFormat,
|
||||
formatter,
|
||||
),
|
||||
},
|
||||
scale: truncateYAxis,
|
||||
@@ -520,7 +533,7 @@ export default function transformProps(
|
||||
metricsB,
|
||||
!!contributionMode,
|
||||
customFormattersSecondary,
|
||||
yAxisFormatSecondary,
|
||||
formatterSecondary,
|
||||
),
|
||||
},
|
||||
scale: truncateYAxis,
|
||||
|
||||
@@ -127,6 +127,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'date_format',
|
||||
|
||||
@@ -165,6 +165,7 @@ export default function transformProps(
|
||||
legendType,
|
||||
metric = '',
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
dateFormat,
|
||||
outerRadius,
|
||||
showLabels,
|
||||
@@ -211,6 +212,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
let totalValue = 0;
|
||||
|
||||
@@ -136,6 +136,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'date_format',
|
||||
|
||||
@@ -195,6 +195,7 @@ export default function transformProps(
|
||||
linearColorScheme,
|
||||
labelType,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
dateFormat,
|
||||
showLabels,
|
||||
showLabelsThreshold,
|
||||
@@ -208,6 +209,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
const secondaryValueFormatter = secondaryMetric
|
||||
? getValueFormatter(
|
||||
@@ -215,6 +217,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
)
|
||||
: undefined;
|
||||
|
||||
|
||||
@@ -215,6 +215,7 @@ const config: ControlPanelConfig = {
|
||||
// eslint-disable-next-line react/jsx-key
|
||||
[<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -194,6 +194,7 @@ function createAxisControl(axis: 'x' | 'y'): ControlSetRow[] {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -203,6 +203,7 @@ const config: ControlPanelConfig = {
|
||||
// eslint-disable-next-line react/jsx-key
|
||||
[<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -147,6 +147,7 @@ const config: ControlPanelConfig = {
|
||||
// eslint-disable-next-line react/jsx-key
|
||||
[<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -147,6 +147,7 @@ const config: ControlPanelConfig = {
|
||||
[<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
|
||||
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -197,6 +197,7 @@ const config: ControlPanelConfig = {
|
||||
// eslint-disable-next-line react/jsx-key
|
||||
[<ControlSubSectionHeader>{t('Y Axis')}</ControlSubSectionHeader>],
|
||||
['y_axis_format'],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'logAxis',
|
||||
|
||||
@@ -37,6 +37,7 @@ import {
|
||||
TimeseriesChartDataResponseResult,
|
||||
buildCustomFormatters,
|
||||
getCustomFormatter,
|
||||
CurrencyFormatter,
|
||||
} from '@superset-ui/core';
|
||||
import {
|
||||
extractExtraMetrics,
|
||||
@@ -168,6 +169,7 @@ export default function transformProps(
|
||||
xAxisTitleMargin,
|
||||
yAxisBounds,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
yAxisTitle,
|
||||
yAxisTitleMargin,
|
||||
yAxisTitlePosition,
|
||||
@@ -245,12 +247,15 @@ export default function transformProps(
|
||||
|
||||
const forcePercentFormatter = Boolean(contributionMode || isAreaExpand);
|
||||
const percentFormatter = getNumberFormatter(',.0%');
|
||||
const defaultFormatter = getNumberFormatter(yAxisFormat);
|
||||
const defaultFormatter = currencyFormat?.symbol
|
||||
? new CurrencyFormatter({ d3Format: yAxisFormat, currency: currencyFormat })
|
||||
: getNumberFormatter(yAxisFormat);
|
||||
const customFormatters = buildCustomFormatters(
|
||||
metrics,
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
yAxisFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
const array = ensureIsArray(chartProps.rawFormData?.time_compare);
|
||||
@@ -468,7 +473,7 @@ export default function transformProps(
|
||||
metrics,
|
||||
forcePercentFormatter,
|
||||
customFormatters,
|
||||
yAxisFormat,
|
||||
defaultFormatter,
|
||||
),
|
||||
},
|
||||
scale: truncateYAxis,
|
||||
|
||||
@@ -119,6 +119,7 @@ const config: ControlPanelConfig = {
|
||||
},
|
||||
},
|
||||
],
|
||||
['currency_format'],
|
||||
[
|
||||
{
|
||||
name: 'date_format',
|
||||
|
||||
@@ -133,6 +133,7 @@ export default function transformProps(
|
||||
labelType,
|
||||
labelPosition,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
dateFormat,
|
||||
showLabels,
|
||||
showUpperLabels,
|
||||
@@ -149,6 +150,7 @@ export default function transformProps(
|
||||
currencyFormats,
|
||||
columnFormats,
|
||||
numberFormat,
|
||||
currencyFormat,
|
||||
);
|
||||
|
||||
const formatter = (params: TreemapSeriesCallbackDataParams) =>
|
||||
|
||||
@@ -22,7 +22,6 @@ import {
|
||||
ensureIsArray,
|
||||
getNumberFormatter,
|
||||
isSavedMetric,
|
||||
NumberFormats,
|
||||
QueryFormMetric,
|
||||
ValueFormatter,
|
||||
} from '@superset-ui/core';
|
||||
@@ -31,7 +30,7 @@ export const getYAxisFormatter = (
|
||||
metrics: QueryFormMetric[],
|
||||
forcePercentFormatter: boolean,
|
||||
customFormatters: Record<string, ValueFormatter>,
|
||||
yAxisFormat: string = NumberFormats.SMART_NUMBER,
|
||||
defaultFormatter: ValueFormatter,
|
||||
) => {
|
||||
if (forcePercentFormatter) {
|
||||
return getNumberFormatter(',.0%');
|
||||
@@ -50,5 +49,5 @@ export const getYAxisFormatter = (
|
||||
) {
|
||||
return customFormatters[metricsArray[0]];
|
||||
}
|
||||
return getNumberFormatter(yAxisFormat);
|
||||
return defaultFormatter ?? getNumberFormatter();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user