-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
66 lines (59 loc) · 1.52 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Timer = function(seconds) {
remainingSeconds = seconds;
timerId = 0;
timerObj = {
getRemainingSeconds: function (){
return remainingSeconds
},
getTimerId: function () {return timerId;},
setTimerId: function (newTimerId) {timerId = newTimerId;},
start: function(){
timerId = setInterval(timerObj.secondTick, 1000);
timerObj.startHandler();
},
stop: function(){
remainingSeconds = 0;
clearInterval(timerId);
timerObj.stopHandler();
},
resume: function(){
timerId = setInterval(timerObj.secondTick, 1000);
timerObj.resumeHandler();
},
pause: function(){
clearInterval(timerId);
timerObj.pauseHandler();
},
secondTick: function () {
remainingSeconds = remainingSeconds - 1;
timerObj.tickHandler();
if (remainingSeconds <= 0) {timerObj.stop();}
},
tickHandler: function(){},
startHandler: function(){},
stopHandler: function(){},
pauseHandler: function(){},
resumeHandler: function(){},
on: function(eventName, handler){
switch (eventName) {
case 'tick':
this.tickHandler = handler
break;
case 'start':
this.startHandler = handler
break;
case 'stop':
this.stopHandler = handler
break;
case 'pause':
this.pauseHandler = handler
break;
case 'resume':
this.resumeHandler = handler
break;
}
}
}
return timerObj
}
module.exports = Timer