diff options
Diffstat (limited to 'src/mass-graduation.js')
| -rw-r--r-- | src/mass-graduation.js | 89 |
1 files changed, 48 insertions, 41 deletions
diff --git a/src/mass-graduation.js b/src/mass-graduation.js index b9240f0..48d23ad 100644 --- a/src/mass-graduation.js +++ b/src/mass-graduation.js @@ -3,7 +3,7 @@ import { GraduationChange, submitGraduationChange, Observation, - submitObservation + submitObservation, } from "./graduation-ENV.ts"; import { fetchGroups } from "./group-fetch.ts"; @@ -19,8 +19,7 @@ function toggle(btn, others) { } else { btn.innerHTML = "X"; if (others) { - for (const other of others) - other.innerHTML = "o"; + for (const other of others) other.innerHTML = "o"; } } @@ -31,7 +30,7 @@ function toggle(btn, others) { function observationClickHandler(li) { let observationDiv = li.observationDiv; // Build the observation container - if(!observationDiv) { + if (!observationDiv) { li.style.background = "lightgray"; observationDiv = document.createElement("div"); @@ -97,12 +96,11 @@ function observationClickHandler(li) { obsTbdy.appendChild(obsTr); } - // Toggle the observation container visibility + // Toggle the observation container visibility } else { if (observationDiv.style.display === "none") { observationDiv.style.display = "block"; li.style.background = "lightgray"; - } else { observationDiv.style.display = "none"; li.style.background = "unset"; @@ -148,7 +146,7 @@ async function loadGroup(selected) { return; } ob.innerHTML = "👁"; - ob.addEventListener("click", () => observationClickHandler(li) ); + ob.addEventListener("click", () => observationClickHandler(li)); }); graduationPromises.push(graduationPromise); @@ -158,7 +156,7 @@ async function loadGroup(selected) { const b = document.createElement("button"); b.classList.add(`group-member-${col}`); b.innerHTML = "o"; - b.addEventListener("click", () => toggle(b) ); + b.addEventListener("click", () => toggle(b)); li.appendChild(b); } @@ -169,7 +167,7 @@ async function loadGroup(selected) { const p = document.createElement("button"); p.classList.add("group-member-print"); p.innerHTML = "🖶"; - p.addEventListener("click", () => printNote(li) ); + p.addEventListener("click", () => printNote(li)); li.appendChild(p); ul.appendChild(li); @@ -177,7 +175,7 @@ async function loadGroup(selected) { const graduations = await Promise.all(graduationPromises); const observations = graduations.filter( - (g) => g.observationRequested || (g.observation && !g.observation.end) + (g) => g.observationRequested || (g.observation && !g.observation.end), ); const observationReuqestsContainer = document.getElementById("observation-requests-container"); @@ -234,7 +232,10 @@ async function loadGroup(selected) { startBtn.classList.add("start-observation"); } else { startBtn.addEventListener("click", () => { - window.open(`/mod/page/view.php?id=93017047&userToLoad=${graduation.student.id}`, '_blank'); + window.open( + `/mod/page/view.php?id=93017047&userToLoad=${graduation.student.id}`, + "_blank", + ); }); startBtn.innerHTML = `Graduierung abschließen`; startBtn.classList.add("end-observation"); @@ -256,50 +257,55 @@ function submitMassGraduation() { // TODO(muhq): await graduation promises const promises = []; - for(const li of document.querySelectorAll("li.group-member")) { + for (const li of document.querySelectorAll("li.group-member")) { const reason = li.querySelector(".group-member-point-reason").value; const student = li.student; if (li.querySelector(".group-member-green").innerHTML === "X") { - promises.push(submitGraduationChange(student, GraduationChange.newGreenPointChange(reason, name))); + promises.push( + submitGraduationChange(student, GraduationChange.newGreenPointChange(reason, name)), + ); } if (li.querySelector(".group-member-orange").innerHTML === "X") { - promises.push(submitGraduationChange(student, GraduationChange.newOrangePointChange(reason, name))); + promises.push( + submitGraduationChange(student, GraduationChange.newOrangePointChange(reason, name)), + ); } if (li.querySelector(".group-member-red").innerHTML === "X") { - promises.push(submitGraduationChange(student, GraduationChange.newRedPointChange(reason, name))); + promises.push( + submitGraduationChange(student, GraduationChange.newRedPointChange(reason, name)), + ); } if (li.observationDiv) { const status = []; for (const row of li.observationDiv.querySelectorAll("tbody > tr")) { - if (row.querySelector('td[data-yes="true"]').innerHTML === "X") - status.push("yes"); - else if (row.querySelector('td[data-no="true"]').innerHTML === "X") - status.push("no"); - else - status.push(""); + if (row.querySelector('td[data-yes="true"]').innerHTML === "X") status.push("yes"); + else if (row.querySelector('td[data-no="true"]').innerHTML === "X") status.push("no"); + else status.push(""); } promises.push(submitObservation(student, new Observation(new Date(), status))); } } - Promise.all(promises).then(() => { - state.style.display = "inline"; - state.innerHTML = "✓"; - state.style.color = "green"; - for (const li of document.querySelectorAll("li.group-member")) { - if (!li.observationDiv) - continue; - li.observationDiv.remove(); - li.observationDiv = null; - } - }).catch((error) => { - state.style.display = "inline"; - state.innerHTML = "X"; - state.style.color = "red"; - console.log(error); - }).finally(() => { - state.classList.remove("submit-mass-graduation-inprogress"); - }); + Promise.all(promises) + .then(() => { + state.style.display = "inline"; + state.innerHTML = "✓"; + state.style.color = "green"; + for (const li of document.querySelectorAll("li.group-member")) { + if (!li.observationDiv) continue; + li.observationDiv.remove(); + li.observationDiv = null; + } + }) + .catch((error) => { + state.style.display = "inline"; + state.innerHTML = "X"; + state.style.color = "red"; + console.log(error); + }) + .finally(() => { + state.classList.remove("submit-mass-graduation-inprogress"); + }); } let prePrintBody = null; @@ -342,7 +348,9 @@ async function init() { initSelection( "group-selection", - async function() { return (await fetchGroups()).values(); }, + async function () { + return (await fetchGroups()).values(); + }, (group) => `${group.name}`, loadGroup, ); @@ -353,4 +361,3 @@ if (document.readyState === "loading") { } else { init(); } - |
