diff options
Diffstat (limited to 'src/mass-graduation.js')
| -rw-r--r-- | src/mass-graduation.js | 28 |
1 files changed, 20 insertions, 8 deletions
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) { |
