From a20cf5ca27f6aab0a9d9eb0860535187e4d49dd6 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 7 Aug 2026 10:54:02 +0200 Subject: mass-graduation: fix handling of mandatory members --- src/mass-graduation.js | 21 +++++++++++++++------ src/mock.ts | 5 ++--- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/mass-graduation.js b/src/mass-graduation.js index a761130..7da1c0f 100644 --- a/src/mass-graduation.js +++ b/src/mass-graduation.js @@ -31,7 +31,7 @@ function chooseMandatory(graduations) { graduations.sort((g1, g2) => g1.mandatory - g2.mandatory); // Get all graduations with smaller mandatory amount than the one with the highest amount - const mandatoryCandidates = graduations.filter( + let mandatoryCandidates = graduations.filter( (g) => g.mandatory < graduations[graduations.length - 1].mandatory, ); let rest; @@ -123,22 +123,31 @@ function submitMassGraduation() { // TODO(muhq): await graduation promises const promises = []; - for (const li of document.querySelectorAll("li.group-member")) { - const reason = li.querySelector(".group-member-point-reason").value; + for (const li of document.querySelectorAll("li.group-member, li.group-mandatory-member")) { const student = li.student; + const mandatory = li.classList.contains("group-mandatory-member"); if (li.querySelector(".group-member-green").innerHTML === "X") { promises.push( - submitGraduationChange(student, GraduationChange.newGreenPointChange(reason, name)), + submitGraduationChange( + student.graduation, + GraduationChange.newGreenPointChange(mandatory, "", name), + ), ); } if (li.querySelector(".group-member-orange").innerHTML === "X") { promises.push( - submitGraduationChange(student, GraduationChange.newOrangePointChange(reason, name)), + submitGraduationChange( + student.graduation, + GraduationChange.newOrangePointChange(mandatory, "", name), + ), ); } if (li.querySelector(".group-member-red").innerHTML === "X") { promises.push( - submitGraduationChange(student, GraduationChange.newRedPointChange(reason, name)), + submitGraduationChange( + student.graduation, + GraduationChange.newRedPointChange(mandatory, "", name), + ), ); } } diff --git a/src/mock.ts b/src/mock.ts index 6b12217..df4424f 100644 --- a/src/mock.ts +++ b/src/mock.ts @@ -66,9 +66,8 @@ async function fetchGraduationMock(s: Student) { return graduations.get(s); } -function submitGraduationChangeMock(s: Student, c: GraduationChange) { - if (s.graduation === null) throw new Error("no graduation"); - s.graduation.addChange(c); +function submitGraduationChangeMock(g: Graduation, c: GraduationChange) { + g.addChange(c); } export { -- cgit v1.2.3