import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { useTimetable } from "@/hooks/queries"; const days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] as const; const hours = ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00", "16:00", "17:00"]; export default function StudentTimetable() { const { data: timetableSessions = [], isLoading } = useTimetable(); if (isLoading) return
; const mySessions = timetableSessions.filter(s => ["c1", "c2", "c5", "c8"].includes(s.courseId)); function getSessionAt(day: string, hour: string) { return mySessions.find(s => s.day === day && s.startTime <= hour && s.endTime > hour); } function isStart(day: string, hour: string) { return mySessions.find(s => s.day === day && s.startTime === hour); } function getSpan(session: (typeof mySessions)[0]) { const start = parseInt(session.startTime.split(":")[0]); const end = parseInt(session.endTime.split(":")[0]); const startMin = parseInt(session.startTime.split(":")[1]); const endMin = parseInt(session.endTime.split(":")[1]); return (end - start) + (endMin > 0 ? 0.5 : 0) - (startMin > 0 ? 0.5 : 0); } return (

Timetable

Your weekly class schedule.

{days.map(d => (
{d}
))}
{hours.map(hour => (
{hour}
{days.map(day => { const session = isStart(day, hour); const occupied = getSessionAt(day, hour); if (session) { return (

{session.courseName}

{session.startTime}-{session.endTime}

{session.room}

); } if (occupied && !session) return
; return
; })}
))}
); }