Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/webroot/rsrc/js/application/countdown/timer.js
12242 views
1
/**
2
* @provides javelin-behavior-countdown-timer
3
* @requires javelin-behavior
4
* javelin-dom
5
*/
6
7
JX.behavior('countdown-timer', function(config) {
8
try {
9
var container = JX.$(config.container);
10
} catch (ignored) {
11
return;
12
}
13
14
function setComponent(which, content) {
15
var component = JX.DOM.find(container, '*', 'phabricator-timer-' + which);
16
JX.DOM.setContent(component, content);
17
}
18
19
function calculateTimeLeft() {
20
var days = 0;
21
var hours = 0;
22
var minutes = 0;
23
var seconds = 0;
24
var partial = 0;
25
26
var current_timestamp = +new Date();
27
28
var delta = (config.timestamp * 1000) - current_timestamp;
29
30
if (delta > 0) {
31
days = Math.floor(delta / 86400000);
32
delta -= days * 86400000;
33
34
hours = Math.floor(delta / 3600000);
35
delta -= hours * 3600000;
36
37
minutes = Math.floor(delta / 60000);
38
delta -= minutes * 60000;
39
40
seconds = Math.floor(delta / 1000);
41
delta -= seconds * 1000;
42
43
partial = Math.floor(delta / 100) || '0';
44
45
setTimeout(calculateTimeLeft, 100);
46
}
47
48
setComponent('days', days);
49
setComponent('hours', hours);
50
setComponent('minutes', minutes);
51
setComponent('seconds', [seconds, JX.$N('small', {}, ['.', partial])]);
52
}
53
54
calculateTimeLeft();
55
});
56
57