aboutsummaryrefslogtreecommitdiffstats
path: root/frontend/ts/timer.ts
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/ts/timer.ts')
-rw-r--r--frontend/ts/timer.ts51
1 files changed, 27 insertions, 24 deletions
diff --git a/frontend/ts/timer.ts b/frontend/ts/timer.ts
index f8dab25..db70356 100644
--- a/frontend/ts/timer.ts
+++ b/frontend/ts/timer.ts
@@ -1,30 +1,33 @@
export default class Timer {
- divTimer!: HTMLElement;
+ divTimer!: HTMLElement;
- interval!: any;
- async start(playerIndex: number, finishTime: number): Promise<void> {
- return new Promise(resolve => {
- let divTimer = document.getElementById(`${playerIndex}-player-time`);
- if (divTimer === null)
- throw new Error("divTimer doesn't Exist");
- else
- this.divTimer = divTimer;
+ interval!: any;
+ async start(playerIndex: number, finishTime: number): Promise<void> {
+ return new Promise(resolve => {
+ if (this.interval !== undefined)
+ this.stop();
- this.interval = setInterval(() => {
- this.updateDisplay(finishTime - Date.now(), resolve);
- }, 1000);
- })
- }
+ this.divTimer = document.getElementById(`${playerIndex}-player-time`) as HTMLElement;
- updateDisplay(time: number, resolve: Function): void {
- let secondsElapsed = Math.floor(time / 1000);
- this.divTimer.innerHTML = secondsElapsed.toString();
- if (secondsElapsed === 0) {
- resolve();
- clearInterval(this.interval);
- }
- }
- stop(): void {
- clearInterval(this.interval);
+ this.interval = setInterval(() => {
+ this.updateDisplay(finishTime - Date.now(), resolve);
+ }, 1000);
+ })
+ }
+
+ updateDisplay(time: number, resolve: Function): void {
+ let secondsElapsed = Math.floor(time / 1000);
+ if (secondsElapsed <= 0) {
+ resolve();
+ clearInterval(this.interval);
+ this.divTimer.innerHTML = '0';
+ } else {
+ this.divTimer.innerHTML = secondsElapsed.toString();
}
+ }
+ stop(): void {
+ this.divTimer.innerHTML = '';
+ clearInterval(this.interval);
+ this.interval = undefined;
+ }
} \ No newline at end of file