26 lines
1.3 KiB
JavaScript
26 lines
1.3 KiB
JavaScript
window.LogsModule = {
|
|
ws: null,
|
|
init: () => {
|
|
const box = document.getElementById("log-box");
|
|
const base = window.location.pathname.split("/").slice(0,2).join("/");
|
|
const connect = () => {
|
|
window.LogsModule.ws = new WebSocket("ws://"+location.host+base+"/api/logs/ws");
|
|
window.LogsModule.ws.onopen = () => box.innerHTML += "<div style=\"color:var(--success)\">Connected</div>";
|
|
window.LogsModule.ws.onmessage = e => {
|
|
try {
|
|
const d = JSON.parse(e.data);
|
|
if(d.type === "log") {
|
|
const cls = d.level === "ERROR" ? "log-ERROR" : d.level === "WARNING" ? "log-WARNING" : "log-INFO";
|
|
const t = d.timestamp ? new Date(d.timestamp*1000).toLocaleTimeString() : "--";
|
|
box.innerHTML += "<div class=\"log-entry\"><span style=\"color:#555;margin-right:5px\">"+t+"</span><span class=\""+cls+"\">["+d.level+"]</span> "+d.message+"</div>";
|
|
box.scrollTop = box.scrollHeight;
|
|
}
|
|
}catch(e){}
|
|
};
|
|
window.LogsModule.ws.onclose = setTimeout(connect, 3000);
|
|
};
|
|
connect();
|
|
},
|
|
destroy: () => window.LogsModule.ws?.close()
|
|
};
|