Skip to content

Commit daebc82

Browse files
committed
Fix JohannesDeml#21 Add log counter that can toggle showing specific messages
1 parent 19630d5 commit daebc82

File tree

2 files changed

+139
-8
lines changed

2 files changed

+139
-8
lines changed

Assets/WebGLTemplates/Develop/debug-console.css

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
/* Debug console styling */
22
#debugConsole {
33
position: absolute;
4+
top: 0px;
5+
left: 0px;
46
width: 100%;
57
height: 90vh;
68
z-index: 100;
@@ -19,26 +21,69 @@
1921
align-items: center;
2022
height: 30px;
2123
padding: 10px 50px 10px 10px;
22-
background-color: white;
24+
background-color: rgb(243, 243, 243);
2325
}
2426

2527
#debugConsole .console-top-bar button {
2628
position: relative;
2729
flex-shrink: 0;
28-
width: 20px;
29-
height: 20px;
30+
width: 24px;
31+
height: 24px;
32+
margin: 0px 8px;
3033
cursor: pointer;
3134
border: 0;
3235
background: none;
3336
}
3437

38+
#debugConsole .console-top-bar .log-counter {
39+
position: relative;
40+
flex-shrink: 0;
41+
height: 24px;
42+
margin: 0px 8px;
43+
border: 0;
44+
}
45+
46+
#debugConsole .console-top-bar .log-counter .counter {
47+
cursor: pointer;
48+
padding: 8px;
49+
background-color: rgba(255, 255, 255, 0.5);
50+
}
51+
52+
#debugConsole .console-top-bar .log-counter input[type='checkbox']:checked + .counter {
53+
border-bottom: 3px solid yellowgreen;
54+
}
55+
56+
#debugConsole .console-top-bar .log-counter .counter::before {
57+
padding-right: 2px;
58+
}
59+
#debugConsole .console-top-bar .log-counter.info .counter::before {
60+
content: 'ℹ️';
61+
}
62+
63+
#debugConsole .console-top-bar .log-counter.warn .counter::before {
64+
content: '⚠️';
65+
}
66+
67+
#debugConsole .console-top-bar .log-counter.error .counter::before {
68+
content: '🛑';
69+
}
70+
71+
#debugConsole .console-top-bar .separator {
72+
position: relative;
73+
flex-shrink: 0;
74+
width: 1px;
75+
height: 24px;
76+
margin: 0px 8px;
77+
background: black;
78+
}
79+
3580
#debugConsole .log-entries {
3681
overflow-y: scroll;
3782
}
3883

3984
#debugConsole .console-input {
4085
flex-shrink: 0;
41-
height: 20px;
86+
height: 24px;
4287
}
4388

4489
#debugConsole .entry {
@@ -54,6 +99,13 @@
5499
color: rgb(41, 50, 60);
55100
background-color: rgba(172, 204, 224, 0.9);
56101
}
102+
#debugConsole.hidelogs-info .entry.info,
103+
#debugConsole.hidelogs-info .entry.debug,
104+
#debugConsole.hidelogs-info .entry.log,
105+
#debugConsole.hidelogs-warn .entry.warn,
106+
#debugConsole.hidelogs-error .entry.error {
107+
display:none;
108+
}
57109

58110
#debugConsole .entry.warn {
59111
color: rgb(82, 70, 3);
@@ -306,4 +358,4 @@ dl div:after {
306358
border-top-right-radius: 2px;
307359
top: -7px;
308360
left: -2px
309-
}
361+
}

Assets/WebGLTemplates/Develop/debug-console.js

Lines changed: 82 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
var consoleDiv;
2+
var logCounterDivs = {};
3+
var logCounter = {
4+
"log": 0,
5+
"info": 0,
6+
"debug": 0,
7+
"warn": 0,
8+
"error": 0
9+
};
210

311

412
function setCookie(cname, cvalue, exdays) {
@@ -23,9 +31,9 @@ function getCookie(cname) {
2331
return "";
2432
}
2533

26-
var scrollToBottom = true;
27-
if(getCookie("scrollToBottom") === "false") {
28-
scrollToBottom = false;
34+
var scrollToBottom = false; // Default to false, since continuous erros can overload the system
35+
if(getCookie("scrollToBottom") === "true") {
36+
scrollToBottom = true;
2937
}
3038

3139
function initialzeDebugConsole() {
@@ -60,6 +68,12 @@ function addDebugConsoleTopBar(debugConsole, consoleDiv) {
6068
consoleTopBar.className = 'console-top-bar';
6169
debugConsole.appendChild(consoleTopBar);
6270

71+
addTopBarLogCounter(consoleTopBar);
72+
73+
var separator = document.createElement('div');
74+
separator.classList.add('separator');
75+
consoleTopBar.appendChild(separator);
76+
6377
// Clear logs button
6478
var clearButton = document.createElement('button');
6579
clearButton.classList.add('clear-button', 'bubble-click-indicator');
@@ -133,6 +147,56 @@ function addDebugConsoleTopBar(debugConsole, consoleDiv) {
133147
});
134148
}
135149

150+
function addTopBarLogCounter(consoleTopBar) {
151+
152+
addButton = (logLevels) => {
153+
var counter = document.createElement('div');
154+
const logLevelsArray = logLevels.split(',');
155+
counter.classList.add('log-counter', 'bubble-click-indicator', ...logLevelsArray);
156+
counter.setAttribute('data-loglevels', logLevels);
157+
counter.title = logLevels;
158+
let count = 0;
159+
logLevelsArray.forEach(logLevel => {
160+
count += logCounter[logLevel];
161+
logCounterDivs[logLevel] = counter;
162+
});
163+
consoleTopBar.appendChild(counter);
164+
165+
var checkbox = document.createElement('input');
166+
checkbox.type = 'checkbox';
167+
checkbox.id = `counter-${logLevels}`;
168+
checkbox.name = checkbox.id;
169+
checkbox.checked = true;
170+
checkbox.setAttribute('hidden', 'true');
171+
counter.appendChild(checkbox);
172+
173+
var counterText = document.createElement('label');
174+
counterText.className = 'counter';
175+
counterText.htmlFor = checkbox.id;
176+
counterText.innerHTML = count;
177+
counter.appendChild(counterText);
178+
179+
checkbox.addEventListener('change', (event) => {
180+
var logLevels = event.currentTarget.parentNode.getAttribute('data-loglevels');
181+
const logLevelsArray = logLevels.split(',');
182+
var debugConsole = document.getElementById('debugConsole');
183+
if(event.currentTarget.checked) {
184+
logLevelsArray.forEach(element => {
185+
debugConsole.classList.remove(`hidelogs-${element}`);
186+
});
187+
} else {
188+
logLevelsArray.forEach(element => {
189+
debugConsole.classList.add(`hidelogs-${element}`);
190+
});
191+
}
192+
})
193+
}
194+
195+
addButton('debug,log,info');
196+
addButton('warn');
197+
addButton('error');
198+
}
199+
136200
function applyScrollToBottom(toBottomButton, consoleDiv) {
137201
toBottomButton.setAttribute('data-before', scrollToBottom ? 'locked' : 'unlocked');
138202
if (scrollToBottom) {
@@ -160,6 +224,7 @@ function setupConsoleLogPipe() {
160224

161225

162226
parseMessageAndLog = (message, logLevel, consoleLogFunction) => {
227+
updateLogCounter(logLevel);
163228
let index = 0;
164229
let consoleArgs = [];
165230
let consoleMessage = "";
@@ -208,6 +273,20 @@ function setupConsoleLogPipe() {
208273
};
209274
}
210275

276+
function updateLogCounter(logLevel) {
277+
logCounter[logLevel]++;
278+
279+
counter = logCounterDivs[logLevel];
280+
const logLevels = counter.getAttribute('data-loglevels');
281+
const logLevelsArray = logLevels.split(',');
282+
let count = 0;
283+
logLevelsArray.forEach(logLevel => {
284+
count += logCounter[logLevel];
285+
});
286+
287+
counter.querySelector(".counter").innerHTML = count;
288+
}
289+
211290
function htmlLog(message, className) {
212291
var entry = document.createElement('div');
213292
entry.classList.add('entry', className);

0 commit comments

Comments
 (0)