website for live console
parent
e05fab9f33
commit
94e444b7e2
|
@ -0,0 +1,30 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Console</title>
|
||||
<link rel="stylesheet" href="/dist/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="scroll-container">
|
||||
<button id="btn-toggle-scroll">Auto scroll: <span id="scroll-state" style="color: #27ae60; font-weight: bold;">on</span></button>
|
||||
</div>
|
||||
|
||||
<div class="checkbox-container">
|
||||
<div class="checkbox-container-inside">
|
||||
<input type="checkbox" id="checkbox-alpha" name="alpha" value="alpha" checked>
|
||||
<label for="alpha">Alpha</label><br>
|
||||
<input type="checkbox" id="checkbox-beta" name="beta" value="beta" checked>
|
||||
<label for="beta">Beta</label><br>
|
||||
<input type="checkbox" id="checkbox-stable" name="stable" value="stable" checked>
|
||||
<label for="stable">Stable</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul id="messages"></ul>
|
||||
|
||||
<script src="/dist/script.js"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,114 @@
|
|||
/**
|
||||
* Definitions
|
||||
*/
|
||||
|
||||
const colorClamp = "#34495e"
|
||||
const colorTime = "#95a5a6"
|
||||
|
||||
const serverTypes = [
|
||||
"API",
|
||||
"StorageServer"
|
||||
]
|
||||
const serverTypesColors = [
|
||||
"yellow",
|
||||
"orange"
|
||||
]
|
||||
const messageTypes = [
|
||||
"ERR",
|
||||
"DEB",
|
||||
"INFO"
|
||||
]
|
||||
const messageTypesColors = [
|
||||
"#e74c3c",
|
||||
"#95a5a6",
|
||||
"#ecf0f1"
|
||||
]
|
||||
const messageColors = [
|
||||
"#e74c3c",
|
||||
"#95a5a6",
|
||||
"#ecf0f1"
|
||||
]
|
||||
|
||||
/**
|
||||
* Begin of code
|
||||
*/
|
||||
const messages = document.getElementById("messages")
|
||||
let autoScroll = true;
|
||||
|
||||
function addMessage(serverType, messageType, message) {
|
||||
let li = document.createElement("li")
|
||||
|
||||
li.innerHTML = formatDate() +
|
||||
formatMessageType(messageType) +
|
||||
formatServerType(serverType) +
|
||||
formatMessage(message, messageType)
|
||||
|
||||
messages.appendChild(li)
|
||||
|
||||
if (autoScroll) {
|
||||
li.scrollIntoView()
|
||||
}
|
||||
|
||||
deleteOldMessages()
|
||||
}
|
||||
|
||||
function deleteOldMessages() {
|
||||
if (messages.childElementCount > 500) {
|
||||
messages.removeChild(messages.getElementsByTagName("li")[0])
|
||||
}
|
||||
}
|
||||
|
||||
function clampOn() {
|
||||
return "<span style='color: "+colorClamp+"'>[</span>"
|
||||
}
|
||||
|
||||
function clampClosed() {
|
||||
return "<span style='color: "+colorClamp+"'>]</span> "
|
||||
}
|
||||
|
||||
function formatDate() {
|
||||
const date = new Date()
|
||||
|
||||
return clampOn() +
|
||||
"<span style='color: "+colorTime+"'>" +
|
||||
date.getDate().toString().padStart(2, '0') + "." +
|
||||
date.getMonth().toString().padStart(2, '0') + "." +
|
||||
date.getFullYear() + " " +
|
||||
date.getHours().toString().padStart(2, '0') + ":" +
|
||||
date.getMinutes().toString().padStart(2, '0') + ":" +
|
||||
date.getSeconds().toString().padStart(2, '0') + ":" +
|
||||
date.getMilliseconds().toString().padStart(3, '0') + " " +
|
||||
"</span>" + clampClosed()
|
||||
}
|
||||
|
||||
function formatServerType(serverType) {
|
||||
return clampOn() + "<span style='color: " + serverTypesColors[serverType] + "'>" + serverTypes[serverType] + "</span>" + clampClosed()
|
||||
}
|
||||
|
||||
function formatMessage(message, messageType) {
|
||||
return "<span style='color: "+messageColors[messageType]+"'>"+message+"</span>"
|
||||
}
|
||||
|
||||
function formatMessageType(messageType) {
|
||||
return clampOn() + "<span style='color: " + messageTypesColors[messageType] + "'>" + messageTypes[messageType] + "</span>" + clampClosed()
|
||||
}
|
||||
|
||||
function handleScrollState() {
|
||||
console.log("here")
|
||||
}
|
||||
|
||||
let scrollState = document.getElementById('scroll-state')
|
||||
|
||||
document.getElementById('btn-toggle-scroll').addEventListener('click', () => {
|
||||
console.log("clicked", scrollState.innerHTML)
|
||||
|
||||
if (scrollState.innerHTML == "on") {
|
||||
autoScroll = false
|
||||
scrollState.style.color = "#e74c3c"
|
||||
scrollState.innerHTML = "off"
|
||||
} else {
|
||||
autoScroll = true
|
||||
scrollState.style.color = "#27ae60"
|
||||
scrollState.innerHTML = "on"
|
||||
}
|
||||
})
|
|
@ -0,0 +1,82 @@
|
|||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
color: white;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: hsl(220, 10%, 32%) hsl(220, 10%, 17%);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-corner {
|
||||
background: rgb(30, 30, 30);
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background-color: rgb(73, 73, 73);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar {
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: rgb(30, 30, 30);
|
||||
}
|
||||
|
||||
.scroll-container {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
position: -webkit-sticky; /* Safari */
|
||||
position: sticky;
|
||||
}
|
||||
|
||||
button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 20px;
|
||||
background-color: #34495e;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 15px 32px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 16px;
|
||||
margin: 4px 2px;
|
||||
cursor: pointer;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
.checkbox-container{
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
position: -webkit-sticky; /* Safari */
|
||||
position: sticky;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.checkbox-container .checkbox-container-inside {
|
||||
position: absolute;
|
||||
top: 70px;
|
||||
right: 20px;
|
||||
}
|
||||
|
||||
input[type="checkbox" i] {
|
||||
background-color: initial;
|
||||
cursor: pointer;
|
||||
appearance: auto;
|
||||
box-sizing: border-box;
|
||||
margin: 3px 3px 3px 4px;
|
||||
padding: initial;
|
||||
border: initial;
|
||||
color: rgb(55, 142, 240);
|
||||
}
|
Loading…
Reference in New Issue