import { useEffect, useState } from "react"; import TableCard from "~/components/TableCard"; import { Card } from "./ui/card"; import PaginationButtons from "./PaginationButtons"; import { SearchFilters } from "~/lib/types"; interface PaginatedTableCardProps { siteId: string; interval: string; dataFetcher: any; columnHeaders: string[]; filters?: SearchFilters; loaderUrl: string; onClick?: (key: string) => void; timezone?: string; labelFormatter?: (label: string) => string; } const PaginatedTableCard = ({ siteId, interval, dataFetcher, columnHeaders, filters, loaderUrl, onClick, timezone, labelFormatter, }: PaginatedTableCardProps) => { const countsByProperty = dataFetcher.data?.countsByProperty || []; const [page, setPage] = useState(1); useEffect(() => { const params = { site: siteId, interval, timezone, ...filters, page, }; dataFetcher.submit(params, { method: "get", action: loaderUrl, }); // NOTE: dataFetcher is intentionally omitted from the useEffect dependency array // eslint-disable-next-line react-hooks/exhaustive-deps }, [loaderUrl, siteId, interval, filters, timezone, page]); // function handlePagination(page: number) { setPage(page); } const hasMore = countsByProperty.length === 10; return ( {countsByProperty ? (
) : null}
); }; export default PaginatedTableCard;