Skip to content

Commit 41bbf7a

Browse files
committed
some error message update
1 parent 3720390 commit 41bbf7a

File tree

3 files changed

+28
-17
lines changed

3 files changed

+28
-17
lines changed

py-src/data_formulator/tables_routes.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,8 @@ def sanitize_db_error_message(error: Exception) -> Tuple[str, int]:
701701
r"Permission denied": ("Access denied", 403),
702702

703703
# Data loader errors
704-
r"Entity ID": ("Entity ID not found", 500),
704+
r"Entity ID": ("Entity ID not found, please check the data loader parameters", 500),
705+
r"session_id": ("session_id not found, please refresh the page", 500),
705706
}
706707

707708
# Check if error matches any safe pattern

src/views/DBTableManager.tsx

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ import { CustomReactTable } from './ReactTable';
5959
import { DictTable } from '../components/ComponentType';
6060
import { Type } from '../data/types';
6161
import { useDispatch, useSelector } from 'react-redux';
62-
import { dfActions } from '../app/dfSlice';
62+
import { dfActions, getSessionId } from '../app/dfSlice';
6363
import { alpha } from '@mui/material';
6464
import { DataFormulatorState } from '../app/dfSlice';
6565
import { fetchFieldSemanticType } from '../app/dfSlice';
@@ -278,6 +278,12 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
278278
fetchDataLoaders();
279279
}, []);
280280

281+
useEffect(() => {
282+
if (errorMessage?.content.includes("session_id not found")) {
283+
dispatch(getSessionId());
284+
}
285+
}, [errorMessage])
286+
281287
useEffect(() => {
282288
if (dbTables.length == 0) {
283289
setSelectedTabKey("");
@@ -295,7 +301,8 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
295301
setDbTables(data.tables);
296302
}
297303
} catch (error) {
298-
console.error('Failed to fetch tables:', error);
304+
setErrorMessage({content: 'Failed to fetch tables, please check if the server is running', severity: "error"});
305+
setShowError(true);
299306
}
300307
};
301308

@@ -343,7 +350,7 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
343350
}
344351
} catch (error) {
345352
console.error('Failed to upload table:', error);
346-
setErrorMessage({content: 'Failed to upload table. The server may need to be restarted.', severity: "error"});
353+
setErrorMessage({content: 'Failed to upload table, please check if the server is running', severity: "error"});
347354
setShowError(true);
348355
} finally {
349356
setIsUploading(false);
@@ -377,7 +384,7 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
377384
}
378385
} catch (error) {
379386
console.error('Failed to upload table:', error);
380-
setErrorMessage({content: 'Failed to upload table. The server may need to be restarted.', severity: "error"});
387+
setErrorMessage({content: 'Failed to upload table, please check if the server is running', severity: "error"});
381388
setShowError(true);
382389
} finally {
383390
setIsUploading(false);
@@ -423,9 +430,13 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
423430
if (data.status === 'success') {
424431
fetchTables();
425432
setSelectedTabKey(dbTables.length > 0 ? dbTables[0].name : "");
433+
} else {
434+
setErrorMessage({content: data.error || 'Failed to delete table', severity: "error"});
435+
setShowError(true);
426436
}
427437
} catch (error) {
428-
console.error('Failed to delete table:', error);
438+
setErrorMessage({content: 'Failed to delete table, please check if the server is running', severity: "error"});
439+
setShowError(true);
429440
}
430441
};
431442

@@ -455,7 +466,7 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
455466
}
456467
} catch (error) {
457468
console.error('Failed to analyze table data:', error);
458-
setErrorMessage({content: 'Failed to analyze table data', severity: "error"});
469+
setErrorMessage({content: 'Failed to analyze table data, please check if the server is running', severity: "error"});
459470
setShowError(true);
460471
}
461472
};
@@ -572,11 +583,11 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
572583
<Box sx={{flexGrow: 1, bgcolor: 'background.paper', display: 'flex', flexDirection: 'row', minHeight: 400 }}>
573584
<Box sx={{display: "flex", flexDirection: "column", width: "180px", borderRight: 1, borderColor: 'divider'}}>
574585
<Tabs
586+
value={0} // not used, just to keep MUI happy
575587
orientation="vertical"
576588
variant="scrollable"
577589
scrollButtons={dbTables.length > 8 ? "auto" : false}
578590
allowScrollButtonsMobile
579-
value={selectedTabKey}
580591
aria-label="Database tables"
581592
sx={{
582593
maxHeight: '360px',
@@ -629,14 +640,13 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
629640
orientation="vertical"
630641
textColor="secondary"
631642
indicatorColor="secondary"
632-
value={selectedTabKey}
643+
value={0} // not used, just to keep MUI happy
633644
sx={{px: 0.5}}
634645
>
635646
<Typography variant="caption" sx={{color: "text.secondary", fontWeight: "bold", px: 1}}>connect external data</Typography>
636647
{["file upload", "mysql", "kusto"].map((dataLoaderType, i) => (
637648
<Tab
638649
key={`dataLoader:${dataLoaderType}`}
639-
value={`dataLoader:${dataLoaderType}`}
640650
wrapped
641651
label={<Typography variant="caption"
642652
sx={{textTransform: "none", width: "calc(100% - 4px)", textAlign: 'left',
@@ -651,7 +661,7 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
651661
))}
652662
</Tabs>
653663
</Box>
654-
<TabPanel key={`dataLoader:file upload`} sx={{width: 960, }} show={selectedTabKey === ''}>
664+
<TabPanel key={`dataLoader:note`} sx={{width: 960, }} show={selectedTabKey === ''}>
655665
<Typography variant="caption" sx={{color: "text.secondary", px: 1}}>The database is empty, refresh the table list or import some data to get started.</Typography>
656666
</TabPanel>
657667
<TabPanel key={`dataLoader:file upload`} sx={{width: 960, }} show={selectedTabKey === 'dataLoader:file upload'}>
@@ -661,6 +671,7 @@ export const DBTableSelectionDialog: React.FC<{ buttonElement: any }> = function
661671
<TabPanel key={`dataLoader:${dataLoaderType}`} sx={{width: 960, position: "relative", maxWidth: '100%'}}
662672
show={selectedTabKey === 'dataLoader:' + dataLoaderType}>
663673
<DataLoaderForm
674+
key={`data-loader-form-${dataLoaderType}`}
664675
dataLoaderType={dataLoaderType}
665676
paramDefs={paramDefs}
666677
onImport={() => {
@@ -998,14 +1009,13 @@ export const DataLoaderForm: React.FC<{
9981009
return [table.name, table.metadata];
9991010
})));
10001011
} else {
1001-
console.error('Failed to fetch data loader tables:', data.message);
1012+
console.error('Failed to fetch data loader tables: {}', data.message);
10021013
onFinish("error", `Failed to fetch data loader tables: ${data.message}`);
10031014
}
10041015
setIsConnecting(false);
10051016
})
10061017
.catch(error => {
1007-
console.error('Failed to fetch data loader tables:', error);
1008-
onFinish("error", `Failed to fetch data loader tables: ${error}`);
1018+
onFinish("error", `Failed to fetch data loader tables, please check the server is running`);
10091019
setIsConnecting(false);
10101020
});
10111021
}}>

src/views/VisualizationView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import AnimateOnChange from 'react-animate-on-change'
4242

4343
import '../scss/VisualizationView.scss';
4444
import { useDispatch, useSelector } from 'react-redux';
45-
import { DataFormulatorState, dfActions } from '../app/dfSlice';
45+
import { DataFormulatorState, dfActions, getSessionId } from '../app/dfSlice';
4646
import { assembleVegaChart, extractFieldsFromEncodingMap, getUrls, prepVisTable } from '../app/utils';
4747
import { Chart, EncodingItem, EncodingMap, FieldItem } from '../components/ComponentType';
4848
import { DictTable } from "../components/ComponentType";
@@ -236,8 +236,6 @@ export let checkChartAvailabilityOnPreparedData = (chart: Chart, conceptShelfIte
236236
}
237237
return undefined;
238238
}).filter(f => f != undefined);
239-
console.log("visFieldsFinalNames", visFieldsFinalNames);
240-
console.log("visTableRows", visTableRows.slice(0, 10));
241239
return visFieldsFinalNames.length > 0 && visTableRows.length > 0 && visFieldsFinalNames.every(name => Object.keys(visTableRows[0]).includes(name));
242240
}
243241

@@ -365,6 +363,8 @@ export const ChartEditorFC: FC<{ cachedCandidates: DictTable[],
365363
const [errorMessage, setErrorMessage] = useState<{content: string, severity: "error" | "warning" | "info" | "success"}>({content: "", severity: "error"});
366364
const [showError, setShowError] = useState<boolean>(false);
367365

366+
367+
368368
let createVisTableRowsLocal = (rows: any[]) => {
369369
if (visFields.length == 0) {
370370
return rows;

0 commit comments

Comments
 (0)