import type { Grade, Subject } from "~/types/api"; import { formatGrade } from "~/utils/gradeCalculations"; interface GradeTableProps { grades: Grade[]; subject?: Subject; onEdit?: (grade: Grade) => void; onDelete?: (gradeId: string) => void; deletingGradeId?: string | null; } export function GradeTable({ grades, subject, onEdit, onDelete, deletingGradeId }: GradeTableProps) { if (grades.length === 0) { return (
No grades recorded yet. Add your first grade!
); } return (
{grades.map((grade) => { const percentage = (grade.grade / grade.max_grade) * 100; const category = subject?.grading_categories.find( (c) => c.name === grade.category_name ); return ( ); })}
Date Name Category Grade Percentage Weight Actions
{new Date(grade.date).toLocaleDateString()}
{grade.name || "Unnamed"}
{grade.notes && (
{grade.notes}
)}
{grade.category_name} {grade.grade} / {grade.max_grade} {formatGrade(percentage)}% {grade.weight_in_category}x
{onEdit && ( )} {onDelete && ( )}
); }