"use client"; import { CalendarMonthModel, getWeekNumber } from "./calendarMonthUtils"; import { DayOfWeek } from "@/models/local/localCourse"; import Day from "./day/Day"; import { Expandable } from "@/components/Expandable"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; import { getDateFromStringOrThrow } from "@/models/local/timeUtils"; export const CalendarMonth = ({ month }: { month: CalendarMonthModel }) => { const weekInMilliseconds = 604_800_000; const isInPast = new Date(month.year, month.month, 1) < new Date(Date.now() - weekInMilliseconds); const monthName = new Date(month.year, month.month - 1, 1).toLocaleString( "default", { month: "long" } ); const weekDaysList: DayOfWeek[] = Object.values(DayOfWeek); return ( <> (

setIsExpanded((e) => !e)} role="button" > {monthName}

)} >
{weekDaysList.map((day) => (
{day}
))}
{month.daysByWeek.map((week, weekIndex) => ( ))}
); }; function CalendarWeek({ week, monthNumber, }: { week: string[]; //date strings monthNumber: number; }) { const { data: settings } = useLocalCourseSettingsQuery(); const startDate = getDateFromStringOrThrow( settings.startDate, "week calculation start date" ); const firstDateString = getDateFromStringOrThrow( week[0], "week calculation first day of week" ); const weekNumber = getWeekNumber(startDate, firstDateString); return (
{weekNumber.toString().padStart(2, "0")}
{week.map((day, dayIndex) => ( ))}
); }