From 7f2db7155e26b8d947813f0e57ed574e9d334eeb Mon Sep 17 00:00:00 2001 From: Regalijan Date: Wed, 10 Jan 2024 16:37:11 -0500 Subject: [PATCH] Create card generator for et calendar --- app/routes/events-team.tsx | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 app/routes/events-team.tsx diff --git a/app/routes/events-team.tsx b/app/routes/events-team.tsx new file mode 100644 index 0000000..945a052 --- /dev/null +++ b/app/routes/events-team.tsx @@ -0,0 +1,87 @@ +import { + Box, + Card, + CardBody, + CardHeader, + Container, + Heading, + Link, + Stack, + StackDivider, + Text, + VStack, +} from "@chakra-ui/react"; +import { useLoaderData } from "@remix-run/react"; +import { type ReactNode } from "react"; + +export async function loader({ context }: { context: RequestContext }) { + const now = new Date(); + const monthEventList = await context.env.D1.prepare( + "SELECT * FROM events WHERE month = ? AND year = ?;", + ) + .bind(now.getUTCMonth() + 1, now.getUTCFullYear()) + .all(); + + if (monthEventList.error) + throw new Response(null, { + status: 500, + }); + + return monthEventList.results; +} + +export default function () { + const data = useLoaderData(); + const daysInThisMonth = new Date().setUTCDate(0); + const dayCards: ReactNode[] = []; + + for (let i = 0; i < daysInThisMonth; i++) { + const dayData: { [k: string]: any }[] = data.filter( + (row) => row.day === i + 1, + ); + + if (!dayData.length) continue; + + const fotd = dayData.find((d) => d.type === "fotd"); + const gamenight = dayData.find((d) => d.type === "gamenight"); + const qotd = dayData.find((d) => d.type === "qotd"); + + const dayCard = ( + + + + {new Date( + dayData[0].year, + dayData[0].month, + dayData[0].day, + ).toDateString()} + + + + } spacing={4}> + + FACT OF THE DAY + {fotd ? Booked : Book} + + + GAMENIGHT + {gamenight ? Booked : Book} + + + QUESTION OF THE DAY + {qotd ? Booked : Book} + + + + + ); + + dayCards.push(dayCard); + } + + return ( + + {dayCards} + + ); +}