2023-08-11 22:52:10 +02:00
|
|
|
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
|
2023-07-10 13:35:19 +02:00
|
|
|
import Page from 'components/layout/Page';
|
|
|
|
import ReportsTable from 'components/pages/reports/ReportsTable';
|
2023-08-14 07:21:49 +02:00
|
|
|
import { useMessages, useWebsiteReports } from 'hooks';
|
2023-08-11 22:52:10 +02:00
|
|
|
import Link from 'next/link';
|
|
|
|
import { Button, Flexbox, Icon, Icons, Text } from 'react-basics';
|
2023-07-10 13:35:19 +02:00
|
|
|
import WebsiteHeader from './WebsiteHeader';
|
|
|
|
|
|
|
|
export function WebsiteReportsPage({ websiteId }) {
|
2023-08-11 22:52:10 +02:00
|
|
|
const { formatMessage, labels, messages } = useMessages();
|
2023-08-10 22:26:33 +02:00
|
|
|
const {
|
|
|
|
reports,
|
|
|
|
error,
|
|
|
|
isLoading,
|
|
|
|
deleteReport,
|
|
|
|
filter,
|
|
|
|
handleFilterChange,
|
|
|
|
handlePageChange,
|
|
|
|
handlePageSizeChange,
|
2023-08-14 07:21:49 +02:00
|
|
|
} = useWebsiteReports(websiteId);
|
2023-07-30 09:11:26 +02:00
|
|
|
|
2023-08-14 07:21:49 +02:00
|
|
|
const hasData = (reports && reports.data.length !== 0) || filter;
|
2023-08-11 22:52:10 +02:00
|
|
|
|
2023-07-30 09:11:26 +02:00
|
|
|
const handleDelete = async id => {
|
|
|
|
await deleteReport(id);
|
|
|
|
};
|
2023-07-10 13:35:19 +02:00
|
|
|
|
|
|
|
return (
|
|
|
|
<Page loading={isLoading} error={error}>
|
|
|
|
<WebsiteHeader websiteId={websiteId} />
|
|
|
|
<Flexbox alignItems="center" justifyContent="end">
|
|
|
|
<Link href="/reports/create">
|
|
|
|
<Button variant="primary">
|
|
|
|
<Icon>
|
|
|
|
<Icons.Plus />
|
|
|
|
</Icon>
|
|
|
|
<Text>{formatMessage(labels.createReport)}</Text>
|
|
|
|
</Button>
|
|
|
|
</Link>
|
|
|
|
</Flexbox>
|
2023-08-11 22:52:10 +02:00
|
|
|
{hasData && (
|
|
|
|
<ReportsTable
|
|
|
|
data={reports}
|
|
|
|
onDelete={handleDelete}
|
|
|
|
onFilterChange={handleFilterChange}
|
|
|
|
onPageChange={handlePageChange}
|
|
|
|
onPageSizeChange={handlePageSizeChange}
|
|
|
|
filterValue={filter}
|
|
|
|
/>
|
|
|
|
)}
|
2023-08-14 19:39:24 +02:00
|
|
|
{!hasData && <EmptyPlaceholder message={formatMessage(messages.noDataAvailable)} />}
|
2023-07-10 13:35:19 +02:00
|
|
|
</Page>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
export default WebsiteReportsPage;
|