aboutsummaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2026-07-01 14:26:35 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2026-07-01 14:26:35 +0200
commit09d3cbb3f44a8b6f2346236733ced3908a5a3cad (patch)
tree344b2d5bd94df696e1ae886e238c0711edfb0057 /js
parent5014c218b1dd0e7831200a92d2361ad71e2f64a3 (diff)
downloadbycs-sol-09d3cbb3f44a8b6f2346236733ced3908a5a3cad.tar.gz
bycs-sol-09d3cbb3f44a8b6f2346236733ced3908a5a3cad.zip
db: add DB class and adapt to only store a single JSON blob per entry
Diffstat (limited to 'js')
-rw-r--r--js/database.js32
1 files changed, 24 insertions, 8 deletions
diff --git a/js/database.js b/js/database.js
index 3297a11..e6f85da 100644
--- a/js/database.js
+++ b/js/database.js
@@ -1,6 +1,19 @@
-async function loadFromDatabase(id, params) {
- let dbUrl = `/mod/data/view.php?d=${id}`;
- dbUrl += "&perpage=1000";
+class DB {
+ constructor(id) {
+ this.id = id;
+ }
+
+ async fetchEntries(params) {
+ return loadFromDatabaseActivity(this.id, params)
+ }
+
+ async saveEntry(json) {
+ return addEntryToDatabaseActivity(this.id, json);
+ }
+}
+
+async function loadFromDatabaseActivity(id, params) {
+ let dbUrl = `${window.location.origin}/mod/data/view.php?id=${id}&mode=list&perpage=1000`;
// TODO(muhq): Why does this not include entries?
if (params) {
dbUrl += "&filter=1&advanced=1";
@@ -24,7 +37,7 @@ async function loadFromDatabase(id, params) {
return data;
}
-async function addEntryToDatabaseActivity(id, params) {
+async function addEntryToDatabaseActivity(id, json) {
const url = `/mod/data/edit.php?id=${id}`;
const editRes = await fetch(url);
const editDoc = new DOMParser().parseFromString(await editRes.text(), 'text/html');
@@ -32,9 +45,12 @@ async function addEntryToDatabaseActivity(id, params) {
const formData = new FormData(form);
- for (const key in params) {
- const formKey = key.replace("f_", "field_");
- formData.set(formKey, params[key]);
+ for (const key in formData.keys()) {
+ if (k.startsWith("field_")) {
+ formData.set(key, json);
+ // We found our json key
+ break;
+ }
}
formData.set("saveandview", "Speichern");
@@ -45,4 +61,4 @@ async function addEntryToDatabaseActivity(id, params) {
});
}
-export { loadFromDatabase, addEntryToDatabaseActivity };
+export { DB, loadFromDatabaseActivity, addEntryToDatabaseActivity };