From d66a2da82471362472f6ea5371f74b6c14350ffb Mon Sep 17 00:00:00 2001 From: Luca Steeb Date: Sun, 31 Dec 2023 20:36:30 +0700 Subject: [PATCH] fix(data-table): add error state, refactor (#38) --- .../molecules/data-table/data-table.tsx | 10 ++++++- frontend/app/src/pages/main/events/index.tsx | 28 +++++++++++++------ 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/frontend/app/src/components/molecules/data-table/data-table.tsx b/frontend/app/src/components/molecules/data-table/data-table.tsx index d803876a8..23a39b3df 100644 --- a/frontend/app/src/components/molecules/data-table/data-table.tsx +++ b/frontend/app/src/components/molecules/data-table/data-table.tsx @@ -44,6 +44,7 @@ export interface IDGetter { interface DataTableProps { columns: ColumnDef[]; data: TData[]; + error?: Error | null; filters: ToolbarFilters; actions?: JSX.Element[]; sorting?: SortingState; @@ -73,6 +74,7 @@ interface DataTableProps { export function DataTable({ columns, + error, data, filters, actions = [], @@ -193,7 +195,13 @@ export function DataTable({ ))} - {table.getRowModel().rows?.length ? ( + {error ? ( + + + {error.message || 'An error occurred.'} + + + ) : table.getRowModel().rows?.length ? ( table.getRowModel().rows.map((row) => getTableRow(row)) ) : ( diff --git a/frontend/app/src/pages/main/events/index.tsx b/frontend/app/src/pages/main/events/index.tsx index 5ba0f0343..330d6ed31 100644 --- a/frontend/app/src/pages/main/events/index.tsx +++ b/frontend/app/src/pages/main/events/index.tsx @@ -131,7 +131,12 @@ function EventsTable() { return pagination.pageIndex * pagination.pageSize; }, [pagination]); - const listEventsQuery = useQuery({ + const { + data, + isLoading, + refetch, + error: eventsError, + } = useQuery({ ...queries.events.list(tenant.metadata.id, { keys, orderByField, @@ -148,23 +153,27 @@ function EventsTable() { await api.eventUpdateReplay(tenant.metadata.id, data); }, onSuccess: () => { - listEventsQuery.refetch(); + refetch(); }, onError: handleApiError, }); - const listEventKeysQuery = useQuery({ + const { + data: eventKeys, + isLoading: eventKeysIsLoading, + error: eventKeysError, + } = useQuery({ ...queries.events.listKeys(tenant.metadata.id), }); const eventKeyFilters = useMemo((): FilterOption[] => { return ( - listEventKeysQuery.data?.rows?.map((key) => ({ + eventKeys?.rows?.map((key) => ({ value: key, label: key, })) || [] ); - }, [listEventKeysQuery.data?.rows]); + }, [eventKeys?.rows]); // useEffect(() => { // if (listEventsQuery.data?.pagination) { @@ -202,7 +211,7 @@ function EventsTable() { className="h-8 px-2 lg:px-3" size="sm" onClick={() => { - listEventsQuery.refetch(); + refetch(); setRotate(!rotate); }} variant={'outline'} @@ -226,9 +235,10 @@ function EventsTable() { {selectedEvent && } row.metadata.id}