mirror of
https://github.com/kremalicious/umami.git
synced 2025-02-02 04:49:32 +01:00
61 lines
1.7 KiB
JavaScript
61 lines
1.7 KiB
JavaScript
import EmptyPlaceholder from 'components/common/EmptyPlaceholder';
|
|
import Page from 'components/layout/Page';
|
|
import ReportsTable from 'components/pages/reports/ReportsTable';
|
|
import { useMessages, useReports } from 'hooks';
|
|
import Link from 'next/link';
|
|
import { Button, Flexbox, Icon, Icons, Text } from 'react-basics';
|
|
import WebsiteHeader from './WebsiteHeader';
|
|
|
|
export function WebsiteReportsPage({ websiteId }) {
|
|
const { formatMessage, labels, messages } = useMessages();
|
|
const {
|
|
reports,
|
|
error,
|
|
isLoading,
|
|
deleteReport,
|
|
filter,
|
|
handleFilterChange,
|
|
handlePageChange,
|
|
handlePageSizeChange,
|
|
} = useReports(websiteId);
|
|
|
|
const hasData = reports && reports.data.length !== 0;
|
|
|
|
const handleDelete = async id => {
|
|
await deleteReport(id);
|
|
};
|
|
|
|
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>
|
|
{hasData && (
|
|
<ReportsTable
|
|
data={reports}
|
|
onDelete={handleDelete}
|
|
onFilterChange={handleFilterChange}
|
|
onPageChange={handlePageChange}
|
|
onPageSizeChange={handlePageSizeChange}
|
|
filterValue={filter}
|
|
/>
|
|
)}
|
|
{!hasData && (
|
|
<EmptyPlaceholder message={formatMessage(messages.noReportsConfigured)}>
|
|
{/* {addButton} */}
|
|
</EmptyPlaceholder>
|
|
)}
|
|
</Page>
|
|
);
|
|
}
|
|
|
|
export default WebsiteReportsPage;
|