diff options
author | metamuffin <metamuffin@disroot.org> | 2025-02-03 17:05:17 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-02-03 17:05:17 +0100 |
commit | 8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d (patch) | |
tree | d84f23de63bd691ead670c9f19385b720579c216 /web | |
parent | 1d0d8aa6fd6f788ff8b2852673f616608966ebd5 (diff) | |
download | jellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar jellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar.bz2 jellything-8d22e7fa56cfbceb3c829c6f22dc99234fd20b8d.tar.zst |
live log view
Diffstat (limited to 'web')
-rw-r--r-- | web/script/log_stream.ts | 43 | ||||
-rw-r--r-- | web/script/main.ts | 1 |
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" |