SHOW:
|
|
- or go back to the newest paste.
1 | @Component({}) | |
2 | export default class Question extends Vue { | |
3 | questionTimer: Timer = new Timer(30); | |
4 | ||
5 | startQuestionTimer() { | |
6 | this.questionTimer.startTimer(); | |
7 | } | |
8 | } | |
9 | export class Timer { | |
10 | duration; | |
11 | timeLeft: string; | |
12 | isTimerActive: boolean; | |
13 | ||
14 | constructor(duration: number) { | |
15 | this.duration = duration; | |
16 | } | |
17 | ||
18 | startTimer() { | |
19 | this.isTimerActive = true; | |
20 | let minutes, seconds, timer = this.duration; | |
21 | let interval = setInterval(() => { | |
22 | if (!this.isTimerActive) clearInterval(interval) | |
23 | minutes = Math.floor(timer / 60); | |
24 | minutes = minutes < 10 ? "0" + minutes : minutes; | |
25 | seconds = timer % 60; | |
26 | seconds = seconds < 10 ? "0" + seconds : seconds; | |
27 | this.timeLeft = minutes + ":" + seconds; | |
28 | ||
29 | if (--timer < 0) { | |
30 | this.isTimerActive = false; | |
31 | clearInterval(interval); | |
32 | } | |
33 | }, 1000); | |
34 | } | |
35 | } |