aboutsummaryrefslogtreecommitdiff
path: root/cockpit/js/database.js
diff options
context:
space:
mode:
Diffstat (limited to 'cockpit/js/database.js')
-rw-r--r--cockpit/js/database.js41
1 files changed, 41 insertions, 0 deletions
diff --git a/cockpit/js/database.js b/cockpit/js/database.js
new file mode 100644
index 0000000..9c71025
--- /dev/null
+++ b/cockpit/js/database.js
@@ -0,0 +1,41 @@
+async function loadFromDatabase(url, params) {
+ let dbUrl = url;
+ 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 writeToDatabase(url, params) {
+ let dbUrl = url;
+ 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])}`
+ }
+ }
+
+ // return fetch(encodeURI(dbUrl));
+}
+
+export { loadFromDatabase, writeToDatabase };