2023-09-29 12:29:22 +00:00
|
|
|
'use client';
|
2023-07-10 11:35:19 +00:00
|
|
|
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';
|
2023-08-21 09:06:09 +00:00
|
|
|
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-07-10 11:35:19 +00:00
|
|
|
|
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-07-10 11:35:19 +00:00
|
|
|
|
2023-09-29 12:29:22 +00:00
|
|
|
if (isLoading || error) {
|
|
|
|
|
return <Page loading={isLoading} error={error} />;
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-10 11:35:19 +00:00
|
|
|
return (
|
2023-09-29 12:29:22 +00:00
|
|
|
<>
|
2023-07-10 11:35:19 +00:00
|
|
|
<WebsiteHeader websiteId={websiteId} />
|
|
|
|
|
<Flexbox alignItems="center" justifyContent="end">
|
2023-09-29 12:29:22 +00:00
|
|
|
<Link href={`/reports/create`}>
|
2023-07-10 11:35:19 +00:00
|
|
|
<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-07-10 11:35:19 +00:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2023-09-29 12:29:22 +00:00
|
|
|
export default WebsiteReports;
|