-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdemo.js
76 lines (66 loc) · 2.29 KB
/
demo.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
67
68
69
70
71
72
73
74
75
76
$(function(){
var $startTime = $('#startTime');
var $relative = $('#relative');
var $stopTime = $('#stopTime');
var $start = $('#start');
var $pause = $('#pause');
var $stop = $('#stop');
var $step = $('#step');
var $steps = $('#steps');
var timeFormat = 'MMMM Do YYYY, h:mm:ss a';
// Create my chronometer instance
var chronometer = new Chronometer();
// When start, update the DOM startTime
chronometer.addEventListener('started', function(){
var humanTime = moment(this.startTime).format(timeFormat);
$startTime.text(humanTime);
$stopTime.text('');
$relative.text('');
if (!this.steps.length){
$steps.empty();
}
});
function updateButtons(){
// Update buttons according to the chronometer state
var state = this.state;
$start.prop('disabled', state === Chronometer.prototype.RUNNING);
$pause.prop('disabled', state !== Chronometer.prototype.RUNNING);
$stop.prop('disabled', state === Chronometer.prototype.STOPPED);
$step.prop('disabled', state !== Chronometer.prototype.RUNNING);
}
updateButtons.apply(chronometer);
// When state change, update the buttons
chronometer.addEventListener('state', updateButtons);
// When stopped, update the DOM stopTime
chronometer.addEventListener('stopped', function(){
var humanTime = moment(this.stopTime).format(timeFormat);
$stopTime.text(humanTime);
$relative.text(moment(this.elipsedTime).format('HH:mm:ss.SSS'));
});
// When update delegate to relative DOM element
chronometer.addEventListener('updated', function (){
$relative.text(moment(this.elipsedTime).format('HH:mm:ss.SSS'));
});
// Show steps on the DOM
chronometer.addEventListener('stepinserted', function (event){
var $currentStep = $('<li></li>');
var elipsed = moment( this.elipsedTime ).format('HH:mm:ss.SSS');
var date = moment( this.steps[this.steps.length - 1].pauseTime ).format(timeFormat);
$currentStep.text(elipsed + ' at ' + date);
$steps.append($currentStep);
});
// Buttons actions
$start.on('click', function(){
chronometer.start();
});
$pause.on('click', function(){
chronometer.pause();
});
$stop.on('click', function(){
chronometer.stop();
});
$step.on('click', function(){
chronometer.step();
});
window.chronometer = chronometer;
});