diff options
Diffstat (limited to 'js')
| -rw-r--r-- | js/database.js | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/js/database.js b/js/database.js index 673011f..627acbe 100644 --- a/js/database.js +++ b/js/database.js @@ -19,6 +19,28 @@ const DB_TEMPLATE_LIST_FOOTER = ` </table> `; +let studentDbs = null; + +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(); + for (const link of courseDoc.querySelectorAll("div.activityname > a.aalink")) { + const match = link.textContent.match(/(\d+)(Shadow|Public|Submit)/); + const studentId = match[1]; + const dbType = match[2]; + const dbId = link.href.match(/[?&]id=(\d+)/)[1] + + if (!studentDbs.has(studentId)) { + studentDbs.set(studentId, {}); + } + + studentDbs.get(studentId)[dbType.lower()] = new DB(dbId); + } +} + class DB { constructor(id) { this.id = id; @@ -31,6 +53,12 @@ class DB { async saveEntry(json) { return addEntryToDatabaseActivity(this.id, json); } + + static async getStudentDbs(student) { + if (!studentDbs) + await populateStudentDbs(); + return studentDbs[student.id]; + } } async function loadFromDatabaseActivity(id, params) { @@ -58,6 +86,11 @@ async function loadFromDatabaseActivity(id, params) { return data; } +async function loadFromStudentDatabase(student, type) { + const db = await DB.getStudentDbs(student)[type]; + return await db.fetchEntries() +} + async function addEntryToDatabaseActivity(id, json) { const url = `/mod/data/edit.php?id=${id}`; const editRes = await fetch(url); @@ -82,4 +115,13 @@ async function addEntryToDatabaseActivity(id, json) { }); } -export { DB, loadFromDatabaseActivity, addEntryToDatabaseActivity }; +async function addEntryToStudentDatabase(student, type, json) { + const db = await DB.getStudentDbs(student)[type]; + await db.saveEntry(json); +} + +export { + DB, + loadFromDatabaseActivity, loadFromStudentDatabase, + addEntryToDatabaseActivity, addEntryToStudentDatabase, +}; |
