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/13 13:20:57 UTC
(superset) branch master updated: fix(CrossFilters): Do not reload unrelated filters in global scope (#30252)
This is an automated email from the ASF dual-hosted git repository.
diegopucci 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 dbab2fb955 fix(CrossFilters): Do not reload unrelated filters in global scope (#30252)
dbab2fb955 is described below
commit dbab2fb9550900546714b9f5e7ed25242ccbd792
Author: Geido <60...@users.noreply.github.com>
AuthorDate: Fri Sep 13 15:20:51 2024 +0200
fix(CrossFilters): Do not reload unrelated filters in global scope (#30252)
Co-authored-by: JUST.in DO IT <ju...@airbnb.com>
---
.../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..880b826870 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, Set<number>> = Object.values(
+ charts,
+ ).reduce((acc: Record<string, Set<number>>, chart) => {
+ if (!chart.form_data) {
+ return acc;
+ }
+ const { datasource } = chart.form_data;
+ if (!acc[datasource]) {
+ acc[datasource] = new Set();
+ }
+ acc[datasource].add(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]?.has(id),
)
: getChartIdsInFilterScope(
chartConfiguration[chartId].crossFilters.scope,