import { useCallback, useEffect, useState } from "react"; import Column from "../../components/common/columns"; import { Paginated } from "../../services/Paginated"; import ErrorLogsTable from "./components/errorLogsTable"; import errorLogsService, { ErrorLog } from "./services/errorLogsService"; import { useTranslation } from "react-i18next"; import { Namespaces } from "../../i18n/i18n"; const ErrorLogs = (): JSX.Element => { const { t } = useTranslation(); const [pagedData, setPagedData] = useState>({ page: 1, pageSize: 10, count: 0, totalPages: 1, data: [], }); const [sortColumn, setSortColumn] = useState>({ key: "Id", label: t("Id"), order: "desc", }); const [filters, setFilters] = useState>( new Map(), ); const loadErrorLogs = useCallback( async ( page: number, pageSize: number, column: Column, filterMap: Map, ) => { const data = await errorLogsService.getErrorLogs( page, pageSize, column.key, column.order === "asc", filterMap, ); if (data) { setPagedData(data); } }, [], ); useEffect(() => { loadErrorLogs(pagedData.page, pagedData.pageSize, sortColumn, filters); }, [loadErrorLogs]); const changePage = useCallback( async (page: number, pageSize: number) => { await loadErrorLogs(page, pageSize, sortColumn, filters); }, [loadErrorLogs, sortColumn, filters], ); const onSort = useCallback( async (nextSortColumn: Column) => { setSortColumn(nextSortColumn); await loadErrorLogs( pagedData.page, pagedData.pageSize, nextSortColumn, filters, ); }, [loadErrorLogs, pagedData.page, pagedData.pageSize, filters], ); const onSearch = useCallback( async (name: string, value: string) => { const nextFilters = new Map(filters); nextFilters.set(name, value); setFilters(nextFilters); await loadErrorLogs( pagedData.page, pagedData.pageSize, sortColumn, nextFilters, ); }, [loadErrorLogs, pagedData.page, pagedData.pageSize, sortColumn, filters], ); return (
); }; export default ErrorLogs;