2023-08-14 07:21:49 +02:00
|
|
|
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
|
2023-06-15 12:27:41 +02:00
|
|
|
import Page from 'components/layout/Page';
|
|
|
|
import PageHeader from 'components/layout/PageHeader';
|
|
|
|
import { useMessages, useReports } from 'hooks';
|
2023-08-14 07:21:49 +02:00
|
|
|
import Link from 'next/link';
|
2023-08-14 19:39:24 +02:00
|
|
|
import { Button, Icon, Icons, Text } from 'react-basics';
|
2023-06-15 12:27:41 +02:00
|
|
|
import ReportsTable from './ReportsTable';
|
|
|
|
|
2023-07-10 13:35:19 +02:00
|
|
|
export function ReportsPage() {
|
2023-08-14 07:21:49 +02:00
|
|
|
const { formatMessage, labels, messages } = useMessages();
|
|
|
|
const {
|
|
|
|
reports,
|
|
|
|
error,
|
|
|
|
isLoading,
|
2023-08-14 19:39:24 +02:00
|
|
|
deleteReport,
|
2023-08-14 07:21:49 +02:00
|
|
|
filter,
|
|
|
|
handleFilterChange,
|
|
|
|
handlePageChange,
|
|
|
|
handlePageSizeChange,
|
|
|
|
} = useReports();
|
|
|
|
|
|
|
|
const hasData = (reports && reports?.data.length !== 0) || filter;
|
2023-06-15 12:27:41 +02:00
|
|
|
|
2023-08-14 19:39:24 +02:00
|
|
|
const handleDelete = async id => {
|
|
|
|
await deleteReport(id);
|
|
|
|
};
|
|
|
|
|
2023-06-15 12:27:41 +02:00
|
|
|
return (
|
|
|
|
<Page loading={isLoading} error={error}>
|
2023-07-10 13:35:19 +02:00
|
|
|
<PageHeader title={formatMessage(labels.reports)}>
|
2023-06-15 12:27:41 +02:00
|
|
|
<Link href="/reports/create">
|
|
|
|
<Button variant="primary">
|
|
|
|
<Icon>
|
|
|
|
<Icons.Plus />
|
|
|
|
</Icon>
|
|
|
|
<Text>{formatMessage(labels.createReport)}</Text>
|
|
|
|
</Button>
|
|
|
|
</Link>
|
|
|
|
</PageHeader>
|
2023-08-14 07:21:49 +02:00
|
|
|
|
|
|
|
{hasData && (
|
|
|
|
<ReportsTable
|
|
|
|
data={reports}
|
|
|
|
showSearch={true}
|
|
|
|
showPaging={true}
|
|
|
|
onFilterChange={handleFilterChange}
|
|
|
|
onPageChange={handlePageChange}
|
|
|
|
onPageSizeChange={handlePageSizeChange}
|
2023-08-14 19:39:24 +02:00
|
|
|
onDelete={deleteReport}
|
2023-08-14 07:21:49 +02:00
|
|
|
filterValue={filter}
|
|
|
|
showDomain={true}
|
|
|
|
/>
|
|
|
|
)}
|
|
|
|
{!hasData && (
|
2023-08-14 19:39:24 +02:00
|
|
|
<EmptyPlaceholder message={formatMessage(messages.noDataAvailable)}></EmptyPlaceholder>
|
2023-08-14 07:21:49 +02:00
|
|
|
)}
|
2023-06-15 12:27:41 +02:00
|
|
|
</Page>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2023-07-10 13:35:19 +02:00
|
|
|
export default ReportsPage;
|