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.ts30
1 files changed, 30 insertions, 0 deletions
diff --git a/frontend/ts/timer.ts b/frontend/ts/timer.ts
new file mode 100644
index 0000000..f8dab25
--- /dev/null
+++ b/frontend/ts/timer.ts
@@ -0,0 +1,30 @@
+export default class Timer {
+ 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;
+
+ this.interval = setInterval(() => {
+ this.updateDisplay(finishTime - Date.now(), resolve);
+ }, 1000);
+ })
+ }
+
+ 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);
+ }
+} \ No newline at end of file