diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-06-13 13:04:07 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-06-13 13:04:07 +0200 |
| commit | 4882c5ca3a65075e03595588ef3780a36bc74b15 (patch) | |
| tree | 07aa2a276cd87a8e192147440411c1f51d8aa624 /js/database.js | |
| parent | 9fbd21ff6bf97b9ce77cb78f420abd951b8aaf27 (diff) | |
| download | bycs-sol-4882c5ca3a65075e03595588ef3780a36bc74b15.tar.gz bycs-sol-4882c5ca3a65075e03595588ef3780a36bc74b15.zip | |
move generic js into root
Diffstat (limited to 'js/database.js')
| -rw-r--r-- | js/database.js | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/js/database.js b/js/database.js new file mode 100644 index 0000000..3297a11 --- /dev/null +++ b/js/database.js @@ -0,0 +1,48 @@ +async function loadFromDatabase(id, params) { + let dbUrl = `/mod/data/view.php?d=${id}`; + dbUrl += "&perpage=1000"; + // TODO(muhq): Why does this not include entries? + if (params) { + dbUrl += "&filter=1&advanced=1"; + for (const param in params) { + dbUrl += `&${param}=${encodeURIComponent(params[param])}` + } + } + + const dbRes = await fetch(encodeURI(dbUrl)); + const dbDoc = new DOMParser().parseFromString(await dbRes.text(), 'text/html'); + let data = []; + dbDoc.querySelectorAll('.db-row').forEach(row => { + let entry = {}; + row.querySelectorAll('.db-cell').forEach(field => { + const key = field.dataset.key; + const value = field.innerText.trim(); + entry[key] = value; + }); + data.push(entry); + }); + return data; +} + +async function addEntryToDatabaseActivity(id, params) { + const url = `/mod/data/edit.php?id=${id}`; + const editRes = await fetch(url); + const editDoc = new DOMParser().parseFromString(await editRes.text(), 'text/html'); + const form = editDoc.querySelector('div[role="main"] > form'); + + const formData = new FormData(form); + + for (const key in params) { + const formKey = key.replace("f_", "field_"); + formData.set(formKey, params[key]); + } + formData.set("saveandview", "Speichern"); + + return await fetch("/mod/data/edit.php", { + method: "POST", + // Set the FormData instance as the request body + body: formData, + }); +} + +export { loadFromDatabase, addEntryToDatabaseActivity }; |
