let socket = io();
module.exports = () => {
M.AutoInit();
setupSocket();
setInterval(() => {
socket.emit("GetGeneralInfo");
}, 500);
socket.emit("GetLog", {filter: "success error event", entryN: 10});
};
function setupSocket() {
socket.on("lastLogEntries", (entries) => {
let list = "";
entries.forEach((entry) => {
list += "
" + prettifyType(entry.type) + " | " + entry.time + " | " + entry.details + " |
";
});
document.getElementById("log-table-body").innerHTML = list;
M.AutoInit();
});
socket.on("newLogEntry", (entry) => {
// Start with parsing the new entry, no reason to select the DOM-element and stuff, if we are filtering out the entry anyway.
let type = entry.type;
if ( (type.toUpperCase() !== "SUCCESS") && (type.toUpperCase() !== "ERROR") && (type.toUpperCase() !== "EVENT") && (type.toUpperCase() !== "INFO")) {
return;
}
let logTable = document.getElementById("log-table-body");
let LTable = logTable.rows.length;
logTable.deleteRow(LTable - 1); // Since length outputs a 1-based number
let newEntry = logTable.insertRow(0);
newEntry.insertCell(0).innerHTML = prettifyType(entry.type);
newEntry.insertCell(1).innerHTML = entry.time;
newEntry.insertCell(2).innerHTML = entry.details;
M.AutoInit();
newEntry.className = "newLogEntry";
});
socket.on("generalInfo", (info) => {
if (info["scriptIsExited"]) {
document.getElementById("currentScript").innerHTML = info["currentScript"] + " (exited)";
} else {
document.getElementById("currentScript").innerHTML = info["currentScript"];
}
document.getElementById("uptime").innerHTML = info["uptime"] + " seconds";
});
}
function prettifyType(type) {
let prettyTable = {
"DEBUG": `đ¸`,
"INFO": `âšī¸`,
"WARNING": `â ī¸`,
"EVENT": `âĄī¸`,
"SUCCESS": `â
`,
"ERROR": `đ´`,
"PYTHON": `đ`
};
return prettyTable[type];
}