diff options
Diffstat (limited to 'src/admin-tools.js')
| -rw-r--r-- | src/admin-tools.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/admin-tools.js b/src/admin-tools.js index f598c35..9da744b 100644 --- a/src/admin-tools.js +++ b/src/admin-tools.js @@ -1,5 +1,6 @@ import { GraduationChange, submitGraduationChange } from "./graduation-ENV.ts"; import { fetchStudent, fetchStudents } from "./student-ENV.ts"; +import { fetchCourses } from "./moodle-ENV.ts"; let outputNode; function output(msg) { @@ -38,11 +39,41 @@ async function coachAssignmentImport() { output("Coach Zuweisung importiert"); } +async function updateActivities(course) { + const promises = []; + for (const activityName of ["Cockpit", "Klassenliste", "Coaching", "Admin-Tools"]) { + const activity = course.getActivity(activityName); + const input = document.getElementById(`${activityName.toLowerCase()}-file-input`); + if (input.value === "") continue; + const text = input.files[0].text(); + promises.push((await activity).update(await text)); + } + return Promise.all(promises); +} + +export async function updateCourses() { + output("loading courses ..."); + const courses = await fetchCourses("SOL Graduierung"); + output(`updating ${courses.length} courses ... `); + const promises = []; + for (const course of courses) { + promises.push(updateActivities(course)); + } + + Promise.all(promises) + .then(() => { + output("Updating activities done."); + }) + .catch((_error) => {}); +} + async function init() { outputNode = document.getElementById("admin-tools-output"); + output("Admin tools ready."); document .getElementById("admin-tools-coach-import-submit") .addEventListener("click", coachAssignmentImport); + document.getElementById("activity-update-submit").addEventListener("click", updateCourses); } if (document.readyState === "loading") { |
