-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathticktick.js
More file actions
53 lines (52 loc) · 1.94 KB
/
ticktick.js
File metadata and controls
53 lines (52 loc) · 1.94 KB
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
/*
* jquery.ticktick. jQuery coundown/countup plugin based on Moment.js
*
* Copyright (c) 2013 Ben Teitelbaum
* http://ben.teitelbaum.us/
*
* Licensed under MIT
* http://www.opensource.org/licenses/mit-license.php
*
* Usage:
* $('span.countdown').ticktick({duration: [3, 'minutes']});
* $('span.countdown').ticktick({duration: {minutes: 3, seconds: 30}});
* $('span.countdown').ticktick({duration: {hour: 1}, format: 'hh:mm:ss'}, onDone: function() { alert("Blast off!"); });
* $('span.countup').ticktick({direction: 'up', duration: [3, 'minutes']});
*/
(function( $ ){
$.fn.ticktick = function( options ) {
var settings = $.extend( {
'format' : 'm:ss',
'direction': 'down',
'interval' : 250,
'duration' : [1, 'minute']
}, options);
return this.each(function() {
var _this = this;
if (settings['duration'] instanceof Array) {
var duration = orig_duration = moment['duration'].apply(this, settings['duration']);
} else {
var duration = orig_duration = moment.duration(settings['duration']);
}
if (this.ticktick_timer) {
clearInterval(this.ticktick_timer);
}
this.ticktick_timer = setInterval(function(){
var new_duration = duration.asMilliseconds() - settings['interval'];
duration = moment.duration(new_duration, 'milliseconds');
if (settings['direction'] == 'down') {
var display_moment = moment.utc(duration.asMilliseconds());
} else {
var display_moment = moment.utc(moment.duration(orig_duration - duration).asMilliseconds());
}
$(_this).html(display_moment.format(settings['format']));
if (new_duration <= 0) {
clearInterval(_this.ticktick_timer);
if (typeof settings['onDone'] === 'function') {
settings['onDone'].call();
}
}
}, settings['interval']);
});
};
})( jQuery );