import type { Subject } from "~/types/api"; import { Link } from "react-router"; import { formatGradeBySystem, type GradeSystem } from "~/utils/gradeSystems"; import { calculateTargetProgress, getTargetStatusBgColor } from "~/utils/gradeCalculations"; interface SubjectCardProps { subject: Subject; averageGrade?: number; calculatedAverage?: number; gradeSystem?: string; onDelete?: () => void; } export function SubjectCard({ subject, averageGrade, calculatedAverage, gradeSystem, onDelete }: SubjectCardProps) { // Use provided gradeSystem, fallback to subject's own system const displaySystem = (gradeSystem || subject.grade_system || "percentage") as GradeSystem; // Calculate target progress if grade is available const targetProgress = averageGrade !== undefined ? calculateTargetProgress(subject.target_grade ?? averageGrade, subject) : null; const hasTaget = targetProgress && targetProgress.status !== "no-target"; const isOverridden = calculatedAverage !== undefined && averageGrade !== undefined && Math.abs(calculatedAverage - averageGrade) > 0.01; return (
{subject.teacher}
)} {onDelete && ( )}Current Average
Grading Categories: