aboutsummaryrefslogtreecommitdiff
path: root/web
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-02-03 17:05:17 +0100
committermetamuffin <metamuffin@disroot.org>2025-02-03 17:05:17 +0100
commit8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d (patch)
treed84f23de63bd691ead670c9f19385b720579c216 /web
parent1d0d8aa6fd6f788ff8b2852673f616608966ebd5 (diff)
downloadjellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar
jellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar.bz2
jellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar.zst
live log view
Diffstat (limited to 'web')
-rw-r--r--web/script/log_stream.ts43
-rw-r--r--web/script/main.ts1
2 files changed, 44 insertions, 0 deletions
diff --git a/web/script/log_stream.ts b/web/script/log_stream.ts
new file mode 100644
index 0000000..5a6a3ce
--- /dev/null
+++ b/web/script/log_stream.ts
@@ -0,0 +1,43 @@
+/*
+ This file is part of jellything (https://codeberg.org/metamuffin/jellything)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2025 metamuffin <metamuffin.org>
+*/
+/// <reference lib="dom" />
+globalThis.addEventListener("DOMContentLoaded", () => {
+ if (!document.body.classList.contains("admin_log")) return
+ const log = document.getElementById("log")!
+
+ const warnonly = new URL(globalThis.location.href).searchParams.get("warnonly") == "true"
+ const ws = new WebSocket(`/admin/log?stream&warnonly=${warnonly}`)
+ ws.onopen = () => console.log("live log connected");
+ ws.onclose = () => console.log("live log disconnected");
+ ws.onerror = e => console.log(`live log ws error: ${e}`);
+
+ ws.onmessage = msg => {
+ const line = JSON.parse(msg.data)
+
+ const td_time = document.createElement("td")
+ td_time.classList.add("time")
+ td_time.textContent = line.time
+
+ const td_level = document.createElement("td")
+ td_level.classList.add("level")
+ td_level.innerHTML = line.level_html
+
+ const td_module = document.createElement("td")
+ td_module.classList.add("module")
+ td_module.textContent = line.module
+
+ const td_message = document.createElement("td")
+ td_message.innerHTML = line.message
+
+ const tr = document.createElement("tr");
+ tr.classList.add(line.level_class)
+ tr.append(td_time, td_level, td_module, td_message)
+
+ log.children[0].children[0].append(tr)
+ while (log.children[0].children[0].children.length > 1024)
+ log.children[0].children[0].children[0].remove()
+ }
+})
diff --git a/web/script/main.ts b/web/script/main.ts
index 6d335ee..d7a36cb 100644
--- a/web/script/main.ts
+++ b/web/script/main.ts
@@ -8,3 +8,4 @@ import "./player/mod.ts"
import "./transition.ts"
import "./backbutton.ts"
import "./dangerbutton.ts"
+import "./log_stream.ts"