Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | 1x 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 18x 18x 18x 18x 18x 18x 1x | /**
* @classdesc Calculates elapsed time for each level
* and updates given DOMElement.
* Time converted to 00:00:00 format.
* @class
*/
export class Counter {
/**
* construct Counter
*/
constructor() {
this.intervalHandle = 0;
this.strDiff = '';
const now = Date.now();
this.timer = {
start: now,
end: now,
diff: 0,
};
}
/**
* @summary Mandatory parameter, which will be used to write result.
* @param {HTMLDivElemnt} el counter element in toolbar
*/
reset(el) {
const now = Date.now();
this.timer = {
start: now,
end: now,
diff: 0,
};
this.board = el;
}
/**
* @summary Starts or resets counter.
*/
start() {
const self = this;
const now = Date.now();
this.timer.start = now;
this.timer.end = now;
this.timer.diff = 0;
this.intervalHandle = window.setInterval(() => {
self.diff();
}, 100);
}
/**
* @summary Calculate difference between start/stop and convert it to ISO.
*/
diff() {
const now = Date.now();
this.timer.end = now;
this.timer.diff = this.timer.end - this.timer.start;
this.strDiff = new Date(this.timer.diff).toISOString().slice(11, -5);
this.board.innerHTML = this.strDiff;
}
/**
* summary Stops the counter.
*/
stop() {
window.clearInterval(this.intervalHandle);
}
}
|