aboutsummaryrefslogtreecommitdiff
path: root/src/admin-tools.js
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-09-03 20:58:48 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-09-03 20:58:48 +0200
commitfd40558a7eadfc016197fec782d9a3b2a3f84825 (patch)
tree0dfba044af7411ed619ccd5b98e2139e0e52b594 /src/admin-tools.js
parentd24e29dbff5a3daeb8df5685913406fde8a3fb69 (diff)
downloadbycs-sol-fd40558a7eadfc016197fec782d9a3b2a3f84825.tar.gz
bycs-sol-fd40558a7eadfc016197fec782d9a3b2a3f84825.zip
admin-tools: remove obsolete button and add coach assignment import
Diffstat (limited to 'src/admin-tools.js')
-rw-r--r--src/admin-tools.js50
1 files changed, 19 insertions, 31 deletions
diff --git a/src/admin-tools.js b/src/admin-tools.js
index d8e1bf7..bcbbcbc 100644
--- a/src/admin-tools.js
+++ b/src/admin-tools.js
@@ -1,5 +1,5 @@
-import { DB } from "./database-ENV.ts";
-import { fetchStudents } from "./student-ENV.ts";
+import { GraduationChange, submitGraduationChange } from "./graduation-ENV.ts";
+import { fetchStudent } from "./student-ENV.ts";
let outputNode;
function output(msg) {
@@ -12,42 +12,30 @@ function output(msg) {
outputNode.appendChild(line);
}
-const studentsPromise = fetchStudents();
+async function coachAssignmentImport() {
+ const csv = document.getElementById("admin-tools-coach-import").value;
+ const assignments = {};
-async function createGraduationDbs() {
- const students = await studentsPromise;
-
- for (const student of students) {
- if (!DB.getStudentDbs(student)) {
+ for (const line of csv.split("\n")) {
+ const [studentName, ...coaches] = line.trim().split(";");
+ const student = await fetchStudent(undefined, studentName);
+ if (student === null) {
+ output(`${studentName} nicht gefunden`);
+ continue;
}
+ assignments[student.id] = coaches;
}
+
+ const assignmentChange = GraduationChange.newCoachAssignmentChange(assignments);
+ await submitGraduationChange(assignmentChange);
+ output("Coach Zuweisung importiert");
}
async function init() {
outputNode = document.getElementById("admin-tools-output");
- const students = await studentsPromise;
-
- output("Suche nach Datenbanken ...");
- let missing = 0;
- for (const student of students) {
- const dbs = await DB.getStudentDbs(student);
- if (!dbs) {
- output(`\t${student.name}: Datenbanken fehlen`);
- missing += 3;
- continue;
- }
- for (const type of ["shadow", "public", "submit"]) {
- if (!dbs[type]) {
- output(`\t${student.name} ${student.group}: ${type} Datenbank fehlt`);
- missing++;
- }
- }
- }
- if (missing) {
- output(`${missing} von ${students.length * 3} Datenbanken fehlen!`);
- } else {
- output("Alle Datenbanken vorhanden!");
- }
+ document
+ .getElementById("admin-tools-coach-import-submit")
+ .addEventListener("click", coachAssignmentImport);
}
if (document.readyState === "loading") {