Commit pirate JS files
This commit is contained in:
109
js/Timeline.js
Normal file
109
js/Timeline.js
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
Copyright (c) 2023-forever Douglas Malnati. All rights reserved.
|
||||
|
||||
See the /faq/tos page for details.
|
||||
|
||||
(If this generated header is stamped on a file which is a 3rd party file or under a different license or copyright, then ignore this copyright statement and use that file's terms.)
|
||||
*/
|
||||
|
||||
import * as utl from '/js/Utl.js';
|
||||
|
||||
|
||||
export class Timeline
|
||||
{
|
||||
static global = new Timeline();
|
||||
|
||||
constructor()
|
||||
{
|
||||
this.logOnEvent = false;
|
||||
this.ccGlobal = false;
|
||||
this.noCc = false;
|
||||
|
||||
this.Reset();
|
||||
}
|
||||
|
||||
Global()
|
||||
{
|
||||
return Timeline.global;
|
||||
}
|
||||
|
||||
SetCcGlobal(tf)
|
||||
{
|
||||
this.ccGlobal = tf;
|
||||
}
|
||||
|
||||
SetLogOnEvent(tf)
|
||||
{
|
||||
this.logOnEvent = tf;
|
||||
}
|
||||
|
||||
Reset()
|
||||
{
|
||||
this.eventList = [];
|
||||
this.longestStr = 0;
|
||||
|
||||
this.noCc = true;
|
||||
this.Event(`Timeline::Reset`);
|
||||
this.noCc = false;
|
||||
}
|
||||
|
||||
Event(name)
|
||||
{
|
||||
if (this.ccGlobal && this != Timeline.global && !this.noCc)
|
||||
{
|
||||
this.Global().Event(name);
|
||||
}
|
||||
|
||||
let time = performance.now();
|
||||
|
||||
this.eventList.push({
|
||||
name: name,
|
||||
time: time,
|
||||
});
|
||||
|
||||
if (name.length > this.longestStr)
|
||||
{
|
||||
this.longestStr = name.length;
|
||||
}
|
||||
|
||||
if (this.logOnEvent)
|
||||
{
|
||||
console.log(name);
|
||||
}
|
||||
|
||||
return time;
|
||||
}
|
||||
|
||||
Report(msg)
|
||||
{
|
||||
if (msg)
|
||||
{
|
||||
console.log(`Timeline report (${msg}):`);
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("Timeline report:");
|
||||
}
|
||||
|
||||
// build table to output
|
||||
let objList = [];
|
||||
let totalMs = 0;
|
||||
for (let i = 1; i < this.eventList.length; ++i)
|
||||
{
|
||||
totalMs += this.eventList[i - 0].time - this.eventList[i - 1].time;
|
||||
|
||||
objList.push({
|
||||
from: this.eventList[i - 1].name,
|
||||
to : this.eventList[i - 0].name,
|
||||
diffMs: utl.Commas(Math.round(this.eventList[i - 0].time - this.eventList[i - 1].time)),
|
||||
fromStartMs: utl.Commas(Math.round(totalMs)),
|
||||
});
|
||||
}
|
||||
|
||||
totalMs = utl.Commas(Math.round(totalMs));
|
||||
|
||||
console.table(objList);
|
||||
console.log(`total ms: ${totalMs}`);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user