diff options
| author | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-25 12:07:36 +0200 |
|---|---|---|
| committer | Maks Jopek <maksymilian.jopek@prym-soft.pl> | 2021-04-25 12:07:36 +0200 |
| commit | 013319d7a4651d1708280f556e39c2f03839426a (patch) | |
| tree | 704e51c6d4d96360611819628be3c78edec2f9d8 /frontend/ts/timer.ts | |
| parent | 13dcc2c8fc1d11e3b94432fffc4c4f186bd94d29 (diff) | |
| download | fia-013319d7a4651d1708280f556e39c2f03839426a.tar.gz fia-013319d7a4651d1708280f556e39c2f03839426a.tar.zst fia-013319d7a4651d1708280f556e39c2f03839426a.zip | |
Almost going in a circle
Diffstat (limited to 'frontend/ts/timer.ts')
| -rw-r--r-- | frontend/ts/timer.ts | 51 |
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 |
