diff --git a/src/plugins/built-in/assessmentsOverview/api.ts b/src/plugins/built-in/assessmentsOverview/api.ts index 38df693c..3b1d32fd 100644 --- a/src/plugins/built-in/assessmentsOverview/api.ts +++ b/src/plugins/built-in/assessmentsOverview/api.ts @@ -28,9 +28,17 @@ async function fetchJSON(url: string, body: any) { async function loadSubjects() { const res = await fetchJSON("/seqta/student/load/subjects?", {}); - return res.payload - .filter((s: any) => s.active === 1) + const activeGroup = res.payload.find((s: any) => s.active === 1); + const activeYear = activeGroup?.year; + const allSubjects = res.payload + .filter((s: any) => s.year === activeYear) .flatMap((s: any) => s.subjects); + const seen = new Set(); + return allSubjects.filter((s: Subject) => { + if (seen.has(s.code)) return false; + seen.add(s.code); + return true; + }); } async function loadPrefs(student: number) { diff --git a/src/seqta/utils/Loaders/LoadHomePage.ts b/src/seqta/utils/Loaders/LoadHomePage.ts index dcbd553d..e590e097 100644 --- a/src/seqta/utils/Loaders/LoadHomePage.ts +++ b/src/seqta/utils/Loaders/LoadHomePage.ts @@ -113,7 +113,16 @@ export async function loadHomePage() { callHomeTimetable(TodayFormatted, true); const activeClass = classes.find((c: any) => c.hasOwnProperty("active")); - const activeSubjects = activeClass?.subjects || []; + const activeYear = activeClass?.year; + const allSubjectsInYear = classes + .filter((c: any) => c.year === activeYear) + .flatMap((c: any) => c.subjects || []); + const seen = new Set(); + const activeSubjects = allSubjectsInYear.filter((s: any) => { + if (seen.has(s.code)) return false; + seen.add(s.code); + return true; + }); const activeSubjectCodes = activeSubjects.map((s: any) => s.code); const currentAssessments = assessments .filter((a: any) => activeSubjectCodes.includes(a.code))