You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2024/09/12 15:09:59 UTC
(superset) 01/01: fix(CrossFilters): Do not reload unrelated filters in global scope
This is an automated email from the ASF dual-hosted git repository.
diegopucci pushed a commit to branch geido/fix/cross-filters-rendering
in repository https://gitbox.apache.org/repos/asf/superset.git
commit 17c574a28dbf608b7d8bb4b6d121fe6efec7b42d
Author: Diego Pucci <di...@gmail.com>
AuthorDate: Thu Sep 12 17:09:46 2024 +0200
fix(CrossFilters): Do not reload unrelated filters in global scope
---
.../src/dashboard/util/crossFilters.test.ts | 4 ++--
superset-frontend/src/dashboard/util/crossFilters.ts | 19 ++++++++++++++++++-
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/superset-frontend/src/dashboard/util/crossFilters.test.ts b/superset-frontend/src/dashboard/util/crossFilters.test.ts
index b88579cc84..e811856a4a 100644
--- a/superset-frontend/src/dashboard/util/crossFilters.test.ts
+++ b/superset-frontend/src/dashboard/util/crossFilters.test.ts
@@ -294,14 +294,14 @@ test('Recalculate charts in global filter scope when charts change', () => {
id: 2,
crossFilters: {
scope: 'global',
- chartsInScope: [1, 3],
+ chartsInScope: [1],
},
},
'3': {
id: 3,
crossFilters: {
scope: 'global',
- chartsInScope: [1, 2],
+ chartsInScope: [],
},
},
},
diff --git a/superset-frontend/src/dashboard/util/crossFilters.ts b/superset-frontend/src/dashboard/util/crossFilters.ts
index 903a1f74fb..768124c5d9 100644
--- a/superset-frontend/src/dashboard/util/crossFilters.ts
+++ b/superset-frontend/src/dashboard/util/crossFilters.ts
@@ -52,6 +52,20 @@ export const getCrossFiltersConfiguration = (
return undefined;
}
+ const chartsByDataSource: Record<string, number[]> = Object.values(
+ charts,
+ ).reduce((acc: Record<string, number[]>, chart) => {
+ if (!chart.form_data) {
+ return acc;
+ }
+ const { datasource } = chart.form_data;
+ if (!acc[datasource]) {
+ acc[datasource] = [];
+ }
+ acc[datasource].push(chart.id);
+ return acc;
+ }, {});
+
const globalChartConfiguration = metadata.global_chart_configuration?.scope
? {
scope: metadata.global_chart_configuration.scope,
@@ -97,10 +111,13 @@ export const getCrossFiltersConfiguration = (
},
};
}
+ const chartDataSource = charts[chartId].form_data.datasource;
chartConfiguration[chartId].crossFilters.chartsInScope =
isCrossFilterScopeGlobal(chartConfiguration[chartId].crossFilters.scope)
? globalChartConfiguration.chartsInScope.filter(
- id => id !== Number(chartId),
+ id =>
+ id !== Number(chartId) &&
+ chartsByDataSource[chartDataSource].includes(id),
)
: getChartIdsInFilterScope(
chartConfiguration[chartId].crossFilters.scope,