umami/src/app/(main)/websites/[id]/reports/WebsiteReports.js

62 lines
1.6 KiB
JavaScript
Raw Normal View History

2023-09-29 12:29:22 +00:00
'use client';
import Page from 'components/layout/Page';
2023-08-19 04:52:59 +00:00
import Empty from 'components/common/Empty';
2023-10-03 23:05:17 +00:00
import ReportsTable from '../../../../(main)/reports/ReportsTable';
import { useMessages, useWebsiteReports } from 'components/hooks';
2023-08-11 20:52:10 +00:00
import Link from 'next/link';
import { Button, Flexbox, Icon, Icons, Text } from 'react-basics';
2023-09-29 12:29:22 +00:00
import WebsiteHeader from '../WebsiteHeader';
2023-09-29 12:29:22 +00:00
export function WebsiteReports({ websiteId }) {
2023-08-19 04:52:59 +00:00
const { formatMessage, labels } = useMessages();
2023-08-10 20:26:33 +00:00
const {
reports,
error,
isLoading,
deleteReport,
filter,
handleFilterChange,
handlePageChange,
handlePageSizeChange,
2023-08-14 05:21:49 +00:00
} = useWebsiteReports(websiteId);
2023-07-30 07:11:26 +00:00
2023-08-14 05:21:49 +00:00
const hasData = (reports && reports.data.length !== 0) || filter;
2023-08-11 20:52:10 +00:00
2023-07-30 07:11:26 +00:00
const handleDelete = async id => {
await deleteReport(id);
};
2023-09-29 12:29:22 +00:00
if (isLoading || error) {
return <Page loading={isLoading} error={error} />;
}
return (
2023-09-29 12:29:22 +00:00
<>
<WebsiteHeader websiteId={websiteId} />
<Flexbox alignItems="center" justifyContent="end">
2023-09-29 12:29:22 +00:00
<Link href={`/reports/create`}>
<Button variant="primary">
<Icon>
<Icons.Plus />
</Icon>
<Text>{formatMessage(labels.createReport)}</Text>
</Button>
</Link>
</Flexbox>
2023-08-11 20:52:10 +00:00
{hasData && (
<ReportsTable
2023-10-14 18:07:18 +00:00
data={reports.data}
2023-08-11 20:52:10 +00:00
onDelete={handleDelete}
onFilterChange={handleFilterChange}
onPageChange={handlePageChange}
onPageSizeChange={handlePageSizeChange}
filterValue={filter}
/>
)}
2023-08-19 04:52:59 +00:00
{!hasData && <Empty />}
2023-09-29 12:29:22 +00:00
</>
);
}
2023-09-29 12:29:22 +00:00
export default WebsiteReports;