From 9307b32f95db914a66770849a03ea4a1914507ab Mon Sep 17 00:00:00 2001 From: Kamil Gabryjelski Date: Tue, 18 Apr 2023 17:42:14 +0200 Subject: [PATCH 1/2] feat: Drill by error management --- .../Chart/DrillBy/DrillByMenuItems.tsx | 5 +- .../components/Chart/DrillBy/DrillByModal.tsx | 48 +++++++++++++++---- 2 files changed, 43 insertions(+), 10 deletions(-) diff --git a/superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx b/superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx index e5b919ff6d780..b503b1eed5db5 100644 --- a/superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx +++ b/superset-frontend/src/components/Chart/DrillBy/DrillByMenuItems.tsx @@ -39,6 +39,7 @@ import { } from '@superset-ui/core'; import Icons from 'src/components/Icons'; import { Input } from 'src/components/Input'; +import { useToasts } from 'src/components/MessageToasts/withToasts'; import { cachedSupersetGet, supersetGetCache, @@ -80,12 +81,12 @@ export const DrillByMenuItems = ({ ...rest }: DrillByMenuItemsProps) => { const theme = useTheme(); + const { addDangerToast } = useToasts(); const [searchInput, setSearchInput] = useState(''); const [dataset, setDataset] = useState(); const [columns, setColumns] = useState([]); const [showModal, setShowModal] = useState(false); const [currentColumn, setCurrentColumn] = useState(); - const handleSelection = useCallback( (event, column) => { onClick(event); @@ -143,9 +144,11 @@ export const DrillByMenuItems = ({ }) .catch(() => { supersetGetCache.delete(`/api/v1/dataset/${datasetId}`); + addDangerToast(t('Failed to load dimensions for drill by')); }); } }, [ + addDangerToast, excludedColumns, formData, groupbyFieldName, diff --git a/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx b/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx index 7f65576854873..765e40db28532 100644 --- a/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx +++ b/superset-frontend/src/components/Chart/DrillBy/DrillByModal.tsx @@ -47,6 +47,8 @@ import { noOp } from 'src/utils/common'; import { simpleFilterToAdhoc } from 'src/utils/simpleFilterToAdhoc'; import { useDatasetMetadataBar } from 'src/features/datasets/metadataBar/useDatasetMetadataBar'; import { SingleQueryResultPane } from 'src/explore/components/DataTablesPane/components/SingleQueryResultPane'; +import { useToasts } from 'src/components/MessageToasts/withToasts'; +import Alert from 'src/components/Alert'; import { Dataset, DrillByType } from '../types'; import DrillByChart from './DrillByChart'; import { ContextMenuItem } from '../ChartContextMenu/ChartContextMenu'; @@ -65,6 +67,7 @@ interface ModalFooterProps { } const ModalFooter = ({ formData, closeModal }: ModalFooterProps) => { + const { addDangerToast } = useToasts(); const [url, setUrl] = useState(''); const dashboardPageId = useContext(DashboardPageIdContext); const [datasource_id, datasource_type] = formData.datasource.split('__'); @@ -75,13 +78,24 @@ const ModalFooter = ({ formData, closeModal }: ModalFooterProps) => { `/explore/?form_data_key=${key}&dashboard_page_id=${dashboardPageId}`, ); }) - .catch(e => { - console.log(e); + .catch(() => { + addDangerToast(t('Failed to generate chart edit URL')); }); - }, [dashboardPageId, datasource_id, datasource_type, formData]); + }, [ + addDangerToast, + dashboardPageId, + datasource_id, + datasource_type, + formData, + ]); return ( <> -