From 2f8939d229db3b2829e1dd7096875f4fc5196bc1 Mon Sep 17 00:00:00 2001 From: "JUST.in DO IT" Date: Mon, 4 Aug 2025 12:17:06 -0700 Subject: [PATCH] fix(native filters): throws an error when a chart containing a bigint value (#34539) --- .../FiltersConfigForm/FiltersConfigForm.tsx | 2 +- .../FiltersConfigModal.test.tsx | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx index e0a330d394b..ccc059ba200 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigForm/FiltersConfigForm.tsx @@ -676,7 +676,7 @@ const FiltersConfigForm = ( }); return excluded; }, [ - JSON.stringify(charts), + JSON.stringify(Object.values(charts).map(chart => chart.id)), formFilter?.dataset?.value, JSON.stringify(loadedDatasets), ]); diff --git a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx index e9a9e38088a..06ff8fa5f5d 100644 --- a/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx +++ b/superset-frontend/src/dashboard/components/nativeFilters/FiltersConfigModal/FiltersConfigModal.test.tsx @@ -76,6 +76,29 @@ const noTemporalColumnsState = () => { }; }; +const bigIntChartDataState = () => { + const state = defaultState(); + return { + ...state, + charts: { + ...state.charts, + 999: { + queriesResponse: [ + { + status: 'success', + data: [ + { name: 'Abigail', count: 228 }, + { name: 'Aaron', count: 123012930123123n }, + { name: 'Adam', count: 454 }, + ], + applied_filters: [{ column: 'name' }], + }, + ], + }, + }, + }; +}; + const datasetResult = (id: number) => ({ description_columns: {}, id, @@ -591,3 +614,24 @@ test('modifies the name of a filter', async () => { ), ); }); + +test('renders a filter with a chart containing BigInt values', async () => { + const nativeFilterState = [ + buildNativeFilter('NATIVE_FILTER-1', 'state', ['NATIVE_FILTER-2']), + buildNativeFilter('NATIVE_FILTER-2', 'country', []), + buildNativeFilter('NATIVE_FILTER-3', 'product', []), + ]; + const state = { + ...bigIntChartDataState(), + dashboardInfo: { + metadata: { native_filter_configuration: nativeFilterState }, + }, + dashboardLayout, + }; + defaultRender(state, { + ...props, + createNewOnOpen: false, + }); + + expect(screen.getByText(FILTER_TYPE_REGEX)).toBeInTheDocument(); +});