From 7eefe190f52630e015706248ab4ccbc84307032c Mon Sep 17 00:00:00 2001 From: Regalijan Date: Tue, 17 Sep 2024 02:44:15 -0400 Subject: [PATCH] Finish loader for event calendar --- app/routes/events-calendar.tsx | 48 ++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 11 deletions(-) diff --git a/app/routes/events-calendar.tsx b/app/routes/events-calendar.tsx index be25802..ad02fd9 100644 --- a/app/routes/events-calendar.tsx +++ b/app/routes/events-calendar.tsx @@ -1,31 +1,57 @@ import calendarStyles from "react-big-calendar/lib/css/react-big-calendar.css"; import { Calendar, dayjsLocalizer } from "react-big-calendar"; import dayjs from "dayjs"; +import { type LinksFunction } from "@remix-run/cloudflare"; import { Container } from "@chakra-ui/react"; +import { useLoaderData } from "@remix-run/react"; + +export const links: LinksFunction = () => { + return [{ href: calendarStyles, rel: "stylesheet" }]; +}; export async function loader({ context }: { context: RequestContext }) { const now = new Date(); - const eventsData = await context.env.D1.prepare("SELECT answer, approved, created_by, day, details, id, month, pending, performed_at, reached_minimum_player_count, type, year FROM events WHERE month = ? AND year = ? ORDER BY day;") + const eventsData = await context.env.D1.prepare( + "SELECT answer, approved, created_by, day, details, id, month, pending, performed_at, reached_minimum_player_count, type, year FROM events WHERE month = ? AND year = ? ORDER BY day;", + ) .bind(now.getUTCMonth() + 1, now.getUTCFullYear()) .all(); - if (eventsData.error) throw new Response(null, { - status: 500, - }); + if (eventsData.error) + throw new Response(null, { + status: 500, + }); - const eventList = eventsData.results.map(e => { + const calendarData = eventsData.results.map((e) => { return { id: e.id, title: (e.type as string).toUpperCase(), allDay: true, - start: new Date(e.year, e.month, e.day), - end: new Date(e.year, e.month, e.day) - } - }) + start: new Date( + e.year as number, + (e.month as number) - 1, + e.day as number, + ), + end: new Date(e.year as number, (e.month as number) - 1, e.day as number), + }; + }); + + return { + calendarData, + eventList: eventsData.results, + }; } export default function () { + const data = useLoaderData(); + return ( - - ) + + + + ); }