aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-09-23 20:07:41 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-09-23 20:07:41 +0200
commite4f7e56fec788089e52e783f92b4852ddaa6e9f5 (patch)
tree4ae3525ff54b1bf36306d3c760f274681c810bd0
parent0d6e410a7fdc272575786b3b988136465db993f0 (diff)
downloadbycs-sol-e4f7e56fec788089e52e783f92b4852ddaa6e9f5.tar.gz
bycs-sol-e4f7e56fec788089e52e783f92b4852ddaa6e9f5.zip
mass-graduation: revert mandatory graduation constraint
It is not always possible to graduate all mandatory ones.
-rw-r--r--src/mass-graduation.js68
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)