This is an automated email from the ASF dual-hosted git repository. hugh pushed a commit to branch hm/ar-filters in repository https://gitbox.apache.org/repos/asf/superset.git
commit 0d1422bc60319a44341d64213bac12c1fb9b8fdd Author: Hugh Miles <[email protected]> AuthorDate: Tue Apr 8 12:30:57 2025 -0400 fix state with edit --- .../src/features/alerts/AlertReportModal.tsx | 38 ++++++++++------------ superset/config.py | 1 + 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/superset-frontend/src/features/alerts/AlertReportModal.tsx b/superset-frontend/src/features/alerts/AlertReportModal.tsx index 12abf05de6..822a58a95b 100644 --- a/superset-frontend/src/features/alerts/AlertReportModal.tsx +++ b/superset-frontend/src/features/alerts/AlertReportModal.tsx @@ -521,7 +521,12 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ const [dashboardOptions, setDashboardOptions] = useState<MetaObject[]>([]); const [chartOptions, setChartOptions] = useState<MetaObject[]>([]); const [tabOptions, setTabOptions] = useState<TabNode[]>([]); - const [nativeFilterOptions, setNativeFilterOptions] = useState<object[]>([]); + const [nativeFilterOptions, setNativeFilterOptions] = useState< + { + value: string; + name: string; + }[] + >([]); const [tabNativeFilters, setTabNativeFilters] = useState<object>({}); const [nativeFilterData, setNativeFilterData] = useState<ExtraNativeFilter[]>( [ @@ -534,8 +539,6 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ ], ); - console.log('nativeFilterData', nativeFilterData); - // Validation const [validationStatus, setValidationStatus] = useState<ValidationObject>({ [Sections.General]: { @@ -598,8 +601,6 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ const [emailSubject, setEmailSubject] = useState<string>(''); const [emailError, setEmailError] = useState(false); - console.log('filtersEnabled', filtersEnabled); - const onNotificationAdd = () => { setNotificationSettings([ ...notificationSettings, @@ -1011,8 +1012,6 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ addNativeFilterOptions(nativeFilters.all); } const anchor = currentAlert?.extra?.dashboard?.anchor; - console.log(nativeFilters); - console.log('anchor', anchor); if (anchor) { try { const parsedAnchor = JSON.parse(anchor); @@ -1048,8 +1047,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ ); } }) - .catch(e => { - console.log(e); + .catch(() => { addDangerToast(t('There was an error retrieving dashboard tabs.')); }); } @@ -1340,8 +1338,6 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ const filter = filters.filter((f: any) => f.id === nativeFilterId)[0]; const filterName = filter.name; - console.log('onChangeDashboardFilter', filter); - const filterAlreadyExist = nativeFilterData.some( filter => filter.nativeFilterId === nativeFilterId, ); @@ -2088,7 +2084,7 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ > {(fields, { add, remove }) => ( <div> - {fields.map(({ key, name }) => ( + {fields.map(({ key, name: idx }) => ( <div className="filters-container" key={key}> <div className="filters-dash-container"> <div className="control-label"> @@ -2105,12 +2101,12 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ ariaLabel={t('Select Filter')} placeholder={t('Select Filter')} // @ts-ignore - value={nativeFilterData[key]?.filterName} + value={nativeFilterData[idx]?.filterName} // @ts-ignore options={filterNativeFilterOptions()} onChange={value => // @ts-ignore - onChangeDashboardFilter(key, value) + onChangeDashboardFilter(idx, value) } oneLine /> @@ -2121,27 +2117,27 @@ const AlertReportModal: FunctionComponent<AlertReportModalProps> = ({ ariaLabel={t('Value')} placeholder={t('Select Value')} disabled={ - !nativeFilterData[key]?.optionFilterValues + !nativeFilterData[idx]?.optionFilterValues } - value={nativeFilterData[key]?.filterValues} + value={nativeFilterData[idx]?.filterValues} // @ts-ignore options={ - nativeFilterData[key]?.optionFilterValues + nativeFilterData[idx]?.optionFilterValues } onChange={value => // @ts-ignore - onChangeDashboardFilterValue(key, value) + onChangeDashboardFilterValue(idx, value) } mode="multiple" /> </div> - {name !== 0 && ( + {(idx !== 0 || isEditMode) && ( <div className="filters-delete"> <Icons.DeleteOutlined className="filters-trashcan" onClick={() => { - handleRemoveFilterField(name); - remove(name); + handleRemoveFilterField(idx); + remove(idx); }} /> </div> diff --git a/superset/config.py b/superset/config.py index 63a748189b..1b510ae63c 100644 --- a/superset/config.py +++ b/superset/config.py @@ -495,6 +495,7 @@ DEFAULT_FEATURE_FLAGS: dict[str, bool] = { # Enables Alerts and reports new implementation "ALERT_REPORTS": False, "ALERT_REPORT_TABS": True, + "ALERT_REPORTS_FILTER": False, "ALERT_REPORT_SLACK_V2": False, "DASHBOARD_RBAC": False, "ENABLE_ADVANCED_DATA_TYPES": False,
