From 52e7efb5faf070ed02f159895d63ffb0c757f756 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 2 Oct 2026 15:51:02 +0200 Subject: mass-graduation: fix list of changes Fix the code copied from cockpit to list all changes made by a coach. Fixes: 1f458004ee2a018cff176c9939a9e8b03425dbfa --- mass-graduation.html | 1 + src/mass-graduation.js | 28 ++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/mass-graduation.html b/mass-graduation.html index 7713b66..6b578c2 100644 --- a/mass-graduation.html +++ b/mass-graduation.html @@ -36,6 +36,7 @@ + diff --git a/src/mass-graduation.js b/src/mass-graduation.js index ff30675..7ff8f1d 100644 --- a/src/mass-graduation.js +++ b/src/mass-graduation.js @@ -1,10 +1,11 @@ import { GraduationChange, + LEVEL_NAMES, fetchGraduationChanges, submitGraduationChange, deleteGraduationChange, } from "./graduation-ENV.ts"; -import { fetchStudents } from "./student-ENV.ts"; +import { fetchStudent, fetchStudents } from "./student-ENV.ts"; import { CourseLocalStorage, DATETIME_FMT, getName, splitmix32 } from "./utils-ENV.js"; let name; @@ -150,6 +151,7 @@ function submitMassGraduation() { state.innerHTML = ""; state.classList.add("submit-mass-graduation-inprogress"); state.style.display = "unset"; + document.getElementById("submit-mass-graduation").disabled = true; // TODO(muhq): await graduation promises @@ -205,11 +207,19 @@ function submitMassGraduation() { async function loadChanges() { // TODO(muhq): deduplicate code with cockpit const changesTbl = document.getElementById("graduation-changes"); - const changes = await fetchGraduationChanges(); - for (const change of changes) { - if (change.coach !== name) continue; + // TODO(muhq): include universal changes + const [studentChanges, _] = await fetchGraduationChanges(); + const changes = []; + studentChanges.forEach((chngs, s) => { + for (const c of chngs) { + if (c.coach !== name) continue; + c.student = s; + changes.push(c); + } + }); + for (const change of changes) { const changeTr = document.createElement("tr"); switch (change.change) { @@ -232,13 +242,16 @@ async function loadChanges() { tds.push(changeTd); }; + const student = await fetchStudent(change.student); + addTd(student.name); + addTd(change.student); addTd(change.change); addTd(DATETIME_FMT.format(change.date)); addTd(change.reason); let ctxFmt = ""; switch (change.change) { case "CoachZuweisung": - ctxFmt = change.context.zuweisungen[student.id]; + ctxFmt = change.context.zuweisungen[change.student]; break; case "LevelÄnderung": ctxFmt = LEVEL_NAMES[change.context.level]; @@ -257,7 +270,7 @@ async function loadChanges() { const delBtn = document.createElement("button"); delBtn.innerHTML = "Löschen"; - delBtn.addEventListener("click", () => { + delBtn.addEventListener("click", async function () { const state = document.createElement("span"); state.classList.add("graduation-delete-state"); @@ -266,9 +279,8 @@ async function loadChanges() { state.appendChild(inprogress); delBtn.replaceWith(state); - deleteGraduationChange(graduation, change) + deleteGraduationChange(await student.getGraduation(), change) .then(() => { - updateStudentInfo(); state.style.display = "inline"; state.innerHTML = "✓"; for (const td of tds) { -- cgit v1.2.3
Schüly Änderung Datum Grund