diff --git a/superset/assets/src/dashboard/components/filterscope/FilterScopeSelector.jsx b/superset/assets/src/dashboard/components/filterscope/FilterScopeSelector.jsx index aeab3766926f..bbf398a9086f 100644 --- a/superset/assets/src/dashboard/components/filterscope/FilterScopeSelector.jsx +++ b/superset/assets/src/dashboard/components/filterscope/FilterScopeSelector.jsx @@ -86,10 +86,12 @@ export default class FilterScopeSelector extends React.PureComponent { selectedChartId: filterId, }); const expanded = getFilterScopeParentNodes(nodes, 1); - // display filter_box chart as checked, but do not show checkbox - const chartIdsInFilterScope = getChartIdsInFilterScope({ - filterScope: dashboardFilters[filterId].scopes[columnName], - }); + // force display filter_box chart as unchecked, but show checkbox as disabled + const chartIdsInFilterScope = ( + getChartIdsInFilterScope({ + filterScope: dashboardFilters[filterId].scopes[columnName], + }) || [] + ).filter(id => id !== filterId); return { ...mapByChartId, diff --git a/superset/assets/src/dashboard/util/getRevertedFilterScope.js b/superset/assets/src/dashboard/util/getRevertedFilterScope.js index 92e4a299eadd..b31f275a8015 100644 --- a/superset/assets/src/dashboard/util/getRevertedFilterScope.js +++ b/superset/assets/src/dashboard/util/getRevertedFilterScope.js @@ -16,6 +16,8 @@ * specific language governing permissions and limitations * under the License. */ +import { getChartIdAndColumnFromFilterKey } from './getDashboardFilterKey'; + export default function getRevertedFilterScope({ checked = [], filterFields = [], @@ -29,14 +31,19 @@ export default function getRevertedFilterScope({ }; }, {}); - return filterFields.reduce( - (map, filterField) => ({ + return filterFields.reduce((map, filterField) => { + const { chartId } = getChartIdAndColumnFromFilterKey(filterField); + // force display filter_box chart as unchecked, but show checkbox as disabled + const updatedCheckedIds = ( + checkedChartIdsByFilterField[filterField] || [] + ).filter(id => id !== chartId); + + return { ...map, [filterField]: { ...filterScopeMap[filterField], - checked: checkedChartIdsByFilterField[filterField], + checked: updatedCheckedIds, }, - }), - {}, - ); + }; + }, {}); }