-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtimer.min.js
More file actions
1 lines (1 loc) · 836 Bytes
/
timer.min.js
File metadata and controls
1 lines (1 loc) · 836 Bytes
1
class Timer{constructor(durationInput,startButton,pauseButton,callbacks){this.durationInput=durationInput,this.startButton=startButton,this.pauseButton=pauseButton,callbacks&&(this.onStart=callbacks.onStart,this.onTick=callbacks.onTick,this.onComplete=callbacks.onComplete),this.startButton.addEventListener("click",this.start),this.pauseButton.addEventListener("click",this.pause)}start=()=>{this.onStart&&this.onStart(this.timeRemaining),this.tick(),this.interval=setInterval(this.tick,20)};pause=()=>{clearInterval(this.interval)};tick=()=>{this.timeRemaining<=0?(this.pause(),this.onComplete&&this.onComplete()):(this.timeRemaining=this.timeRemaining-.02,this.onTick&&this.onTick(this.timeRemaining))};get timeRemaining(){return parseFloat(this.durationInput.value)}set timeRemaining(time){this.durationInput.value=time.toFixed(2)}}