11var 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
412function 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
3139function 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+
136200function 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+
211290function htmlLog ( message , className ) {
212291 var entry = document . createElement ( 'div' ) ;
213292 entry . classList . add ( 'entry' , className ) ;
0 commit comments