remix-demo
react router (remix) demo
git clone https://9o.is/git/remix-demo.git
report.tsx
(1906B)
1 import { useLoaderData } from "@remix-run/react";
2 import type { LoaderArgs, MetaFunction } from "@remix-run/server-runtime";
3 import Heading from "~/components/Heading";
4 import CenteredLayout from "~/components/layouts/CenteredLayout";
5 import SubHeading from "~/components/SubHeading";
6 import { generateReport } from "~/controllers/adminReport.server";
7 import { formatDateWithoutTime } from "~/utils/date";
8
9 export const meta: MetaFunction = () => ({
10 title: "Admin Report | Calories Counter",
11 });
12
13 export function loader({ request }: LoaderArgs) {
14 return generateReport(request);
15 }
16
17 export default function AdminReport() {
18 const { thisWeek, lastWeek } = useLoaderData();
19 return (
20 <section>
21 <CenteredLayout>
22 <Heading>Admin Report</Heading>
23 <section>
24 <SubHeading>This Week</SubHeading>
25 <p>
26 There were a total of{" "}
27 <em className="font-semibold">{thisWeek.total} food entries</em> and
28 an average of{" "}
29 <em className="font-semibold">
30 {thisWeek.averagePerUser} calories
31 </em>{" "}
32 consumed per user from{" "}
33 {formatDateWithoutTime(new Date(thisWeek.start))} to{" "}
34 {formatDateWithoutTime(new Date(thisWeek.end))}.
35 </p>
36 </section>
37 <section>
38 <SubHeading>Last Week</SubHeading>
39 <p>
40 There were a total of{" "}
41 <em className="font-semibold">{lastWeek.total} food entries</em> and
42 an average of{" "}
43 <em className="font-semibold">
44 {lastWeek.averagePerUser} calories
45 </em>{" "}
46 consumed per user from{" "}
47 {formatDateWithoutTime(new Date(lastWeek.start))} to{" "}
48 {formatDateWithoutTime(new Date(lastWeek.end))}.
49 </p>
50 </section>
51 </CenteredLayout>
52 </section>
53 );
54 }