aboutsummaryrefslogtreecommitdiff
path: root/js/database.js
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-07-05 19:16:51 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-07-05 19:16:51 +0200
commitfdd9a4aba9929ee21cb796b6696e64e96505447a (patch)
tree8414f9a065c51dfec3370c9dcc99e050738106bb /js/database.js
parentc250201362c64ff4a6b1e9d077d938d771d55205 (diff)
downloadbycs-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.js30
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);
}