diff --git a/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts index 76ba9d3b36a52..cb299c3ac96c4 100644 --- a/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts +++ b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts @@ -78,7 +78,6 @@ export type Filter = { chartsInScope?: number[]; type: typeof NativeFilterType.NativeFilter; description: string; - values?: Record; }; export type FilterWithDataMask = Filter & { dataMask: DataMaskWithId }; diff --git a/superset-frontend/src/dashboard/util/getRelatedCharts.ts b/superset-frontend/src/dashboard/util/getRelatedCharts.ts index 46184b854a977..cfbec3b301f27 100644 --- a/superset-frontend/src/dashboard/util/getRelatedCharts.ts +++ b/superset-frontend/src/dashboard/util/getRelatedCharts.ts @@ -50,9 +50,9 @@ function getRelatedChartsForSelectFilter( } function getRelatedChartsForCrossFilter( filterKey: string, - filter: Filter, + crossFilter: any, slices: Record, - chartsInScope: number[], + scope: number[], datasources: DatasourcesState, ): number[] { const sourceSlice = slices[filterKey]; @@ -61,12 +61,15 @@ function getRelatedChartsForCrossFilter( const sourceDatasource = datasources[sourceSlice.datasource]; if (!sourceDatasource) return []; + const filters = crossFilter?.values?.filters; + + if (!filters) return []; + return Object.values(slices) .filter(slice => { - if (!chartsInScope.includes(slice.slice_id)) return false; + if (!scope.includes(slice.slice_id)) return false; if (slice.slice_id === Number(filterKey)) return false; - const filters = filter?.values?.filters ?? []; const targetDatasource = datasources[slice.datasource]; if (!targetDatasource) return false; @@ -74,7 +77,14 @@ function getRelatedChartsForCrossFilter( const targetColumnNames = targetDatasource?.column_names ?? []; - return targetColumnNames.includes(filters?.[0]?.col); + // checks for a cross filter that was removed + if ( + crossFilter.values?.filters?.length === 0 && + crossFilter.scope.includes(slice.slice_id) + ) + return true; + + return targetColumnNames.includes(filters[0]?.col); }) .map(slice => slice.slice_id); }