"use client"; import { getDateFromStringOrThrow, getDateOnlyMarkdownString, } from "@/models/local/timeUtils"; import { useDraggingContext } from "../../context/draggingContext"; import { useCourseContext } from "../../context/courseContext"; import Link from "next/link"; import { useLocalCourseSettingsQuery } from "@/hooks/localCourse/localCoursesHooks"; import { getDayOfWeek } from "@/models/local/localCourse"; import { getLectureUrl } from "@/services/urlUtils"; import DropTargetStyling from "../../../../../components/DropTargetStyling"; import { ItemInDay } from "./ItemInDay"; import { useTodaysItems } from "./useTodaysItems"; import Modal from "@/components/Modal"; import NewItemForm from "../../modules/NewItemForm"; export default function Day({ day, month }: { day: string; month: number }) { const dayAsDate = getDateFromStringOrThrow( day, "calculating same month in day" ); const isToday = getDateOnlyMarkdownString(new Date()) === getDateOnlyMarkdownString(dayAsDate); const { data: settings } = useLocalCourseSettingsQuery(); const { itemDropOnDay } = useDraggingContext(); const { todaysAssignments, todaysQuizzes, todaysPages } = useTodaysItems(day); const isInSameMonth = dayAsDate.getMonth() + 1 == month; const classOnThisDay = settings.daysOfWeek.includes(getDayOfWeek(dayAsDate)); const meetingClasses = classOnThisDay ? " bg-slate-900 " : " "; const monthClass = isInSameMonth ? isToday ? " border border-blue-700 shadow-[0_0px_10px_0px] shadow-blue-500/50 " : " border border-slate-700 " : " "; return (
itemDropOnDay(e, day)} onDragOver={(e) => e.preventDefault()} >
{todaysAssignments.map( ({ assignment, moduleName, status, message }) => ( ) )} {todaysQuizzes.map(({ quiz, moduleName, status, message }) => ( ))} {todaysPages.map(({ page, moduleName, status, message }) => ( ))}
); } function DayTitle({ day, dayAsDate }: { day: string; dayAsDate: Date }) { const { courseName } = useCourseContext(); return (
{dayAsDate.getDate()} {({ closeModal }) => (

)}
); }