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.
{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
;
})}
))}
);
}