diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-07-19 11:55:51 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-07-19 12:07:12 +0200 |
| commit | dd52c913c454b9a6cf9ab7e7b102f9e7ede31754 (patch) | |
| tree | 6f1e8a26ae2b47a9f6e609e7122dbb4270fe3ca1 /js/database.js | |
| parent | 09a0b5bd95bea76537c7de3525093ecc5a0abd7c (diff) | |
| download | bycs-sol-dd52c913c454b9a6cf9ab7e7b102f9e7ede31754.tar.gz bycs-sol-dd52c913c454b9a6cf9ab7e7b102f9e7ede31754.zip | |
use a single submit table to decrease load times
Diffstat (limited to 'js/database.js')
| -rw-r--r-- | js/database.js | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/js/database.js b/js/database.js index 73c2d17..8149c35 100644 --- a/js/database.js +++ b/js/database.js @@ -23,6 +23,8 @@ const DB_TEMPLATE_LIST_FOOTER = ` let studentDbs = populateStudentDbs(); +const ID_QUERY_PARAM_REGEX = /[?&]id=(\d+)/ + async function populateStudentDbs() { const courseUrl = `https://lernplattform.bycs.de/course/view.php?id=${getCourseId()}`; const courseRes = await fetch(courseUrl); @@ -30,11 +32,17 @@ async function populateStudentDbs() { let dbs = new Map(); for (const link of courseDoc.querySelectorAll("div.activityname a.aalink")) { + if (link.textContent.trim() === "Submit Datenbank") { + const dbId = link.href.match(ID_QUERY_PARAM_REGEX)[1] + dbs.set("submit", new DB(dbId)); + continue; + } + 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] + const dbId = link.href.match(ID_QUERY_PARAM_REGEX)[1] if (!dbs.has(studentId)) { dbs.set(studentId, {}); @@ -46,6 +54,11 @@ async function populateStudentDbs() { return dbs; } +async function getSubmitDb() { + const dbs = await studentDbs; + return dbs.get("submit"); +} + class DB { constructor(id) { this.id = id; @@ -127,13 +140,21 @@ async function addEntryToDatabaseActivity(id, json) { } async function addEntryToStudentDatabase(student, type, json) { - const dbs = await DB.getStudentDbs(student); - const db = dbs[type]; + let db; + // global submit database + if (type === "submit") { + db = await getSubmitDb(); + // individuell databases + } else { + const dbs = await DB.getStudentDbs(student); + db = dbs[type]; + } await db.saveEntry(json); } export { DB, + getSubmitDb, loadFromDatabaseActivity, loadFromStudentDatabase, addEntryToDatabaseActivity, addEntryToStudentDatabase, }; |
