From 013319d7a4651d1708280f556e39c2f03839426a Mon Sep 17 00:00:00 2001 From: Maks Jopek Date: Sun, 25 Apr 2021 12:07:36 +0200 Subject: Almost going in a circle --- frontend/ts/timer.ts | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) (limited to 'frontend/ts/timer.ts') 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 { - 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 { + 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 -- cgit v1.3.1