This is an automated email from the ASF dual-hosted git repository. jli pushed a commit to branch fix-alert-report-filters in repository https://gitbox.apache.org/repos/asf/superset.git
commit be70034ae8821d24c5212cd3e307e10607bc6cd8 Author: Joe Li <[email protected]> AuthorDate: Tue Feb 17 23:09:47 2026 -0800 fix(alerts): show friendly filter names in report edit modal Seed nativeFilterOptions from saved filterName data in the resource useEffect so the Select component displays friendly names (e.g. "Country") instead of raw NATIVE_FILTER-* IDs when editing an existing report. The dashboard tabs API overwrites these with the full list when it responds, making this a safe initial seed. Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../src/features/alerts/AlertReportModal.test.tsx | 49 ++++++++++++++++++++++ .../src/features/alerts/AlertReportModal.tsx | 7 ++++ 2 files changed, 56 insertions(+) diff --git a/superset-frontend/src/features/alerts/AlertReportModal.test.tsx b/superset-frontend/src/features/alerts/AlertReportModal.test.tsx index 91adaa3eeb4..21615be28d1 100644 --- a/superset-frontend/src/features/alerts/AlertReportModal.test.tsx +++ b/superset-frontend/src/features/alerts/AlertReportModal.test.tsx @@ -104,9 +104,31 @@ const generateMockPayload = (dashboard = true) => { // mocking resource endpoints const FETCH_DASHBOARD_ENDPOINT = 'glob:*/api/v1/report/1'; const FETCH_CHART_ENDPOINT = 'glob:*/api/v1/report/2'; +const FETCH_REPORT_WITH_FILTERS_ENDPOINT = 'glob:*/api/v1/report/3'; fetchMock.get(FETCH_DASHBOARD_ENDPOINT, { result: generateMockPayload(true) }); fetchMock.get(FETCH_CHART_ENDPOINT, { result: generateMockPayload(false) }); +fetchMock.get(FETCH_REPORT_WITH_FILTERS_ENDPOINT, { + result: { + ...generateMockPayload(true), + id: 3, + type: 'Report', + extra: { + dashboard: { + nativeFilters: [ + { + nativeFilterId: 'NATIVE_FILTER-abc123', + filterName: 'Country', + filterType: 'filter_select', + columnName: 'country', + columnLabel: 'Country', + filterValues: ['USA'], + }, + ], + }, + }, + }, +}); // Related mocks const ownersEndpoint = 'glob:*/api/v1/alert/related/owners?*'; @@ -793,3 +815,30 @@ test('filter reappears in dropdown after clearing with X icon', async () => { ).toBeInTheDocument(); }); }); + +test('edit mode shows friendly filter names instead of raw IDs', async () => { + const props = generateMockedProps(true, true); + const editProps = { + ...props, + alert: { ...validAlert, id: 3 }, + }; + + render(<AlertReportModal {...editProps} />, { + useRedux: true, + }); + + userEvent.click(screen.getByTestId('contents-panel')); + + await waitFor(() => { + const selectionItem = document.querySelector( + '.ant-select-selection-item[title="Country"]', + ); + expect(selectionItem).toBeInTheDocument(); + }); + + expect( + document.querySelector( + '.ant-select-selection-item[title="NATIVE_FILTER-abc123"]', + ), + ).not.toBeInTheDocument(); +}); diff --git a/superset-frontend/src/features/alerts/AlertReportModal.tsx b/superset-frontend/src/features/alerts/AlertReportModal.tsx index 741421e71c1..4922a6e52ac 100644 --- a/superset-frontend/src/features/alerts/AlertReportModal.tsx +++ b/superset-frontend/src/features/alerts/AlertReportModal.tsx @@ -1877,6 +1877,13 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ if (resource.extra?.dashboard?.nativeFilters) { const filters = resource.extra.dashboard.nativeFilters; setNativeFilterData(filters); + // Seed options from saved data so names display while dashboard metadata loads + const savedOptions = filters + .filter(f => f.nativeFilterId && f.filterName) + .map(f => ({ value: f.nativeFilterId!, label: f.filterName! })); + if (savedOptions.length > 0) { + setNativeFilterOptions(savedOptions); + } } // Add notification settings
