diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-07-05 19:16:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-07-05 19:16:51 +0200 |
| commit | fdd9a4aba9929ee21cb796b6696e64e96505447a (patch) | |
| tree | 8414f9a065c51dfec3370c9dcc99e050738106bb /js/database.js | |
| parent | c250201362c64ff4a6b1e9d077d938d771d55205 (diff) | |
| download | bycs-sol-fdd9a4aba9929ee21cb796b6696e64e96505447a.tar.gz bycs-sol-fdd9a4aba9929ee21cb796b6696e64e96505447a.zip | |
database: fix DB discovery and define public graduation fields
Diffstat (limited to 'js/database.js')
| -rw-r--r-- | js/database.js | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/js/database.js b/js/database.js index 627acbe..7fd3d47 100644 --- a/js/database.js +++ b/js/database.js @@ -1,3 +1,5 @@ +import { getCourseId } from "./config.js"; + const DB_TEMPLATE_LIST_HEADER = ` <table class="table table-striped"> <thead> @@ -19,26 +21,29 @@ const DB_TEMPLATE_LIST_FOOTER = ` </table> `; -let studentDbs = null; +let studentDbs = populateStudentDbs(); async function populateStudentDbs() { const courseUrl = `https://lernplattform.bycs.de/course/view.php?id=${getCourseId()}`; const courseRes = await fetch(courseUrl); const courseDoc = new DOMParser().parseFromString(await courseRes.text(), 'text/html'); - studentDbs = new Map(); + let dbs = new Map(); for (const link of courseDoc.querySelectorAll("div.activityname > a.aalink")) { const match = link.textContent.match(/(\d+)(Shadow|Public|Submit)/); + if (!match) continue; const studentId = match[1]; const dbType = match[2]; const dbId = link.href.match(/[?&]id=(\d+)/)[1] - if (!studentDbs.has(studentId)) { - studentDbs.set(studentId, {}); + if (!dbs.has(studentId)) { + dbs.set(studentId, {}); } - studentDbs.get(studentId)[dbType.lower()] = new DB(dbId); + dbs.get(studentId)[dbType.toLowerCase()] = new DB(dbId); } + + return dbs; } class DB { @@ -55,9 +60,8 @@ class DB { } static async getStudentDbs(student) { - if (!studentDbs) - await populateStudentDbs(); - return studentDbs[student.id]; + const dbs = await studentDbs; + return dbs.get(student.id); } } @@ -87,7 +91,8 @@ async function loadFromDatabaseActivity(id, params) { } async function loadFromStudentDatabase(student, type) { - const db = await DB.getStudentDbs(student)[type]; + const dbs = await DB.getStudentDbs(student); + const db = dbs[type]; return await db.fetchEntries() } @@ -99,8 +104,8 @@ async function addEntryToDatabaseActivity(id, json) { const formData = new FormData(form); - for (const key in formData.keys()) { - if (k.startsWith("field_")) { + for (const key of formData.keys()) { + if (key.startsWith("field_")) { formData.set(key, json); // We found our json key break; @@ -116,7 +121,8 @@ async function addEntryToDatabaseActivity(id, json) { } async function addEntryToStudentDatabase(student, type, json) { - const db = await DB.getStudentDbs(student)[type]; + const dbs = await DB.getStudentDbs(student); + const db = dbs[type]; await db.saveEntry(json); } |
