diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-09-23 20:07:41 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-09-23 20:07:41 +0200 |
| commit | e4f7e56fec788089e52e783f92b4852ddaa6e9f5 (patch) | |
| tree | 4ae3525ff54b1bf36306d3c760f274681c810bd0 /src/mass-graduation.js | |
| parent | 0d6e410a7fdc272575786b3b988136465db993f0 (diff) | |
| download | bycs-sol-e4f7e56fec788089e52e783f92b4852ddaa6e9f5.tar.gz bycs-sol-e4f7e56fec788089e52e783f92b4852ddaa6e9f5.zip | |
mass-graduation: revert mandatory graduation constraint
It is not always possible to graduate all mandatory ones.
Diffstat (limited to 'src/mass-graduation.js')
| -rw-r--r-- | src/mass-graduation.js | 68 |
1 files changed, 29 insertions, 39 deletions
diff --git a/src/mass-graduation.js b/src/mass-graduation.js index 6d53e55..46c4efe 100644 --- a/src/mass-graduation.js +++ b/src/mass-graduation.js @@ -126,52 +126,42 @@ async function loadGroup() { } } -function graduationChangeForGroupMember(li) { - const student = li.student; - const mandatory = li.classList.contains("group-mandatory-member"); - let change = null; - if (li.querySelector(".group-member-green").innerHTML === "X") { - change = GraduationChange.newGreenPointChange(mandatory, "", name); - } else if (li.querySelector(".group-member-orange").innerHTML === "X") { - change = GraduationChange.newOrangePointChange(mandatory, "", name); - } else if (li.querySelector(".group-member-red").innerHTML === "X") { - change = GraduationChange.newRedPointChange(mandatory, "", name); - } - - return [change, student]; -} - function submitMassGraduation() { const state = document.getElementById("submit-mass-graduation-state"); state.innerHTML = ""; - document.getElementById("submit-mass-graduation").disabled = true; - - // TODO(muhq): await graduation promises - - const mandatoryChanges = []; - for (const li of document.querySelectorAll("li.group-mandatory-member")) { - const [ch, s] = graduationChangeForGroupMember(li); - if (ch !== null) mandatoryChanges.push([ch, s]); - } - - if (mandatoryChanges.length !== 5) { - // not all mandatory graduations are selected - state.style.display = "inline"; - state.innerHTML = "Bitte bewerte alle als erforderlich angezeigten Schülys."; - return; - } - state.classList.add("submit-mass-graduation-inprogress"); state.style.display = "unset"; - const promises = []; - for (const [ch, s] of mandatoryChanges) { - promises.push(submitGraduationChange(ch, s.graduation)); - } + // TODO(muhq): await graduation promises - for (const li of document.querySelectorAll("li.group-member")) { - const [ch, s] = graduationChangeForGroupMember(li); - if (ch !== null) promises.push(submitGraduationChange(ch, s.graduation)); + const promises = []; + 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( + GraduationChange.newGreenPointChange(mandatory, "", name), + student.graduation, + ), + ); + } + if (li.querySelector(".group-member-orange").innerHTML === "X") { + promises.push( + submitGraduationChange( + GraduationChange.newOrangePointChange(mandatory, "", name), + student.graduation, + ), + ); + } + if (li.querySelector(".group-member-red").innerHTML === "X") { + promises.push( + submitGraduationChange( + GraduationChange.newRedPointChange(mandatory, "", name), + student.graduation, + ), + ); + } } Promise.all(promises) |
