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,