From f095f524b7e07f81363e524b48241d6215dd58e8 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 15 Oct 2026 19:33:53 +0200 Subject: mass-graduation: prevent re-graduation of already graduated students --- src/mass-graduation.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/mass-graduation.js b/src/mass-graduation.js index 7ff8f1d..047ec19 100644 --- a/src/mass-graduation.js +++ b/src/mass-graduation.js @@ -146,6 +146,7 @@ async function loadGroup() { } } +const graduatedStudents = new Set(); function submitMassGraduation() { const state = document.getElementById("submit-mass-graduation-state"); state.innerHTML = ""; @@ -158,8 +159,11 @@ function submitMassGraduation() { const promises = []; for (const li of document.querySelectorAll("li.group-member, li.group-mandatory-member")) { const student = li.student; + if (graduatedStudents.has(student)) continue; + const mandatory = li.classList.contains("group-mandatory-member"); if (li.querySelector(".group-member-green").innerHTML === "X") { + graduatedStudents.add(student); promises.push( submitGraduationChange( GraduationChange.newGreenPointChange(mandatory, "", name), @@ -168,6 +172,7 @@ function submitMassGraduation() { ); } if (li.querySelector(".group-member-orange").innerHTML === "X") { + graduatedStudents.add(student); promises.push( submitGraduationChange( GraduationChange.newOrangePointChange(mandatory, "", name), @@ -176,6 +181,7 @@ function submitMassGraduation() { ); } if (li.querySelector(".group-member-red").innerHTML === "X") { + graduatedStudents.add(student); promises.push( submitGraduationChange( GraduationChange.newRedPointChange(mandatory, "", name), -- cgit v1.2.3