View difference between Paste ID: VVzzcJWY and AV1zdAr1
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
}