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,

Reply via email to