You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by kg...@apache.org on 2023/03/14 14:50:27 UTC
[superset] branch master updated: fix(chart-controls): Error if x_axis_sort and timeseries_limit_metric are included in main metrics (#23365)
This is an automated email from the ASF dual-hosted git repository.
kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 63513a5873 fix(chart-controls): Error if x_axis_sort and timeseries_limit_metric are included in main metrics (#23365)
63513a5873 is described below
commit 63513a5873460ee508c71b504d5e1cfb5f42bbb8
Author: Kamil Gabryjelski <ka...@gmail.com>
AuthorDate: Tue Mar 14 15:50:03 2023 +0100
fix(chart-controls): Error if x_axis_sort and timeseries_limit_metric are included in main metrics (#23365)
---
.../src/operators/utils/extractExtraMetrics.ts | 5 ++--
.../src/shared-controls/customControls.tsx | 12 ++++----
.../operators/utils/extractExtraMetrics.test.ts | 32 ++++++++++++++++++++++
3 files changed, 40 insertions(+), 9 deletions(-)
diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/operators/utils/extractExtraMetrics.ts b/superset-frontend/packages/superset-ui-chart-controls/src/operators/utils/extractExtraMetrics.ts
index 74928f836f..28d9ec40ad 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/src/operators/utils/extractExtraMetrics.ts
+++ b/superset-frontend/packages/superset-ui-chart-controls/src/operators/utils/extractExtraMetrics.ts
@@ -25,12 +25,13 @@ import {
export function extractExtraMetrics(
formData: QueryFormData,
): QueryFormMetric[] {
- const { groupby, timeseries_limit_metric, x_axis_sort } = formData;
+ const { groupby, timeseries_limit_metric, x_axis_sort, metrics } = formData;
const extra_metrics: QueryFormMetric[] = [];
if (
!(groupby || []).length &&
timeseries_limit_metric &&
- getMetricLabel(timeseries_limit_metric) === x_axis_sort
+ getMetricLabel(timeseries_limit_metric) === x_axis_sort &&
+ !metrics?.some(metric => getMetricLabel(metric) === x_axis_sort)
) {
extra_metrics.push(timeseries_limit_metric);
}
diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx
index 8e8f4d8400..5ac303f54d 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx
+++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/customControls.tsx
@@ -79,6 +79,7 @@ export const xAxisSortControl = {
...ensureIsArray(controls?.metrics?.value as QueryFormMetric),
controls?.timeseries_limit_metric?.value as QueryFormMetric,
].filter(Boolean);
+ const metricLabels = [...new Set(metrics.map(getMetricLabel))];
const options = [
...columns.map(column => {
const value = getColumnLabel(column);
@@ -87,13 +88,10 @@ export const xAxisSortControl = {
label: dataset?.verbose_map?.[value] || value,
};
}),
- ...metrics.map(metric => {
- const value = getMetricLabel(metric);
- return {
- value,
- label: dataset?.verbose_map?.[value] || value,
- };
- }),
+ ...metricLabels.map(value => ({
+ value,
+ label: dataset?.verbose_map?.[value] || value,
+ })),
];
const shouldReset = !(
diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/operators/utils/extractExtraMetrics.test.ts b/superset-frontend/packages/superset-ui-chart-controls/test/operators/utils/extractExtraMetrics.test.ts
index 89f4c11181..b7c1bf0475 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/test/operators/utils/extractExtraMetrics.test.ts
+++ b/superset-frontend/packages/superset-ui-chart-controls/test/operators/utils/extractExtraMetrics.test.ts
@@ -92,3 +92,35 @@ test('returns empty array if groupby populated', () => {
}),
).toEqual([]);
});
+
+test('returns empty array if timeseries_limit_metric and x_axis_sort are included in main metrics array', () => {
+ expect(
+ extractExtraMetrics({
+ ...baseFormData,
+ timeseries_limit_metric: 'a',
+ x_axis_sort: 'a',
+ }),
+ ).toEqual([]);
+});
+
+test('returns empty array if timeseries_limit_metric and x_axis_sort are included in main metrics array with adhoc metrics', () => {
+ expect(
+ extractExtraMetrics({
+ ...baseFormData,
+ metrics: [
+ 'a',
+ {
+ expressionType: 'SIMPLE',
+ aggregate: 'SUM',
+ column: { column_name: 'num' },
+ },
+ ],
+ timeseries_limit_metric: {
+ expressionType: 'SIMPLE',
+ aggregate: 'SUM',
+ column: { column_name: 'num' },
+ },
+ x_axis_sort: 'SUM(num)',
+ }),
+ ).toEqual([]);
+});