mirror of
https://github.com/Kingsrook/qqq-frontend-material-dashboard.git
synced 2025-07-18 05:10:45 +00:00
Update to not show old-query errors; fix loading state on refresh button;
This commit is contained in:
@ -171,6 +171,9 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
const [receivedCountTimestamp, setReceivedCountTimestamp] = useState(new Date());
|
const [receivedCountTimestamp, setReceivedCountTimestamp] = useState(new Date());
|
||||||
const [queryResults, setQueryResults] = useState({} as any);
|
const [queryResults, setQueryResults] = useState({} as any);
|
||||||
const [receivedQueryTimestamp, setReceivedQueryTimestamp] = useState(new Date());
|
const [receivedQueryTimestamp, setReceivedQueryTimestamp] = useState(new Date());
|
||||||
|
const [queryErrors, setQueryErrors] = useState({} as any);
|
||||||
|
const [receivedQueryErrorTimestamp, setReceivedQueryErrorTimestamp] = useState(new Date());
|
||||||
|
|
||||||
|
|
||||||
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
const [, forceUpdate] = useReducer((x) => x + 1, 0);
|
||||||
|
|
||||||
@ -202,6 +205,7 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
|
|
||||||
const updateTable = () =>
|
const updateTable = () =>
|
||||||
{
|
{
|
||||||
|
setLoading(true);
|
||||||
setRows([]);
|
setRows([]);
|
||||||
(async () =>
|
(async () =>
|
||||||
{
|
{
|
||||||
@ -256,19 +260,27 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
})
|
})
|
||||||
.catch((error) =>
|
.catch((error) =>
|
||||||
{
|
{
|
||||||
|
console.log(`Received error for query ${thisQueryId}`);
|
||||||
|
console.log(error);
|
||||||
|
|
||||||
|
var errorMessage;
|
||||||
if (error && error.message)
|
if (error && error.message)
|
||||||
{
|
{
|
||||||
setAlertContent(error.message);
|
errorMessage = error.message;
|
||||||
}
|
}
|
||||||
else if(error && error.response && error.response.data && error.response.data.error)
|
else if(error && error.response && error.response.data && error.response.data.error)
|
||||||
{
|
{
|
||||||
setAlertContent(error.response.data.error);
|
errorMessage = error.response.data.error;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
setAlertContent("Unexpected error running query");
|
errorMessage = "Unexpected error running query";
|
||||||
console.log(error);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
queryErrors[thisQueryId] = errorMessage;
|
||||||
|
setQueryErrors(queryErrors);
|
||||||
|
setReceivedQueryErrorTimestamp(new Date());
|
||||||
|
|
||||||
throw error;
|
throw error;
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
@ -398,9 +410,33 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
setColumns(columns);
|
setColumns(columns);
|
||||||
setRows(rows);
|
setRows(rows);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
|
setAlertContent(null);
|
||||||
forceUpdate();
|
forceUpdate();
|
||||||
}, [receivedQueryTimestamp]);
|
}, [receivedQueryTimestamp]);
|
||||||
|
|
||||||
|
/////////////////////////
|
||||||
|
// display query error //
|
||||||
|
/////////////////////////
|
||||||
|
useEffect(() =>
|
||||||
|
{
|
||||||
|
if (!queryErrors[latestQueryId])
|
||||||
|
{
|
||||||
|
///////////////////////////////
|
||||||
|
// same logic as for success //
|
||||||
|
///////////////////////////////
|
||||||
|
console.log(`No query error for id ${latestQueryId}...`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(`Outputting error for query ${latestQueryId}...`);
|
||||||
|
const errorMessage = queryErrors[latestQueryId];
|
||||||
|
delete queryErrors[latestQueryId];
|
||||||
|
setLoading(false);
|
||||||
|
setAlertContent(errorMessage);
|
||||||
|
|
||||||
|
}, [receivedQueryErrorTimestamp]);
|
||||||
|
|
||||||
|
|
||||||
const handlePageChange = (page: number) =>
|
const handlePageChange = (page: number) =>
|
||||||
{
|
{
|
||||||
setPageNumber(page);
|
setPageNumber(page);
|
||||||
@ -787,7 +823,6 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
useEffect(() =>
|
useEffect(() =>
|
||||||
{
|
{
|
||||||
setLoading(true);
|
|
||||||
updateTable();
|
updateTable();
|
||||||
}, [pageNumber, rowsPerPage, columnSortModel]);
|
}, [pageNumber, rowsPerPage, columnSortModel]);
|
||||||
|
|
||||||
@ -796,9 +831,8 @@ function EntityList({table}: Props): JSX.Element
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
useEffect(() =>
|
useEffect(() =>
|
||||||
{
|
{
|
||||||
setLoading(true);
|
|
||||||
updateTable();
|
|
||||||
setTotalRecords(null);
|
setTotalRecords(null);
|
||||||
|
updateTable();
|
||||||
}, [tableState, filterModel]);
|
}, [tableState, filterModel]);
|
||||||
|
|
||||||
useEffect(() =>
|
useEffect(() =>
|
||||||
|
Reference in New Issue
Block a user