Do not request server time when page has no timers
[plack-app-gruntmaster.git] / js / 90-timers.js
index af971be22f1a9ed320249d8c4ed999da291b99f3..c9b095039873c84b3f886eaaac06c2b48ee510d7 100644 (file)
@@ -1,8 +1,10 @@
+let offset = 0;
+
 function update_timer(timer){
        var start = parseInt(timer.dataset.start);
        var stop  = parseInt(timer.dataset.stop);
        var value = parseInt(timer.dataset.value);
-       var now   = Math.floor(Date.now() / 1000);
+       var now   = Math.floor(Date.now() / 1000) + offset;
 
        var left = stop - now;
        var total = stop - start;
@@ -13,9 +15,9 @@ function update_timer(timer){
                value = Math.max(value * 3 / 10, value * left / total);
                timer.innerHTML = Math.floor(value);
        } else {
-               var hours = left / 60 / 60;
+               var hours = Math.floor(left / 60 / 60);
                hours = hours < 10 ? '0' + hours : hours;
-               var minutes = left / 60 % 60;
+               var minutes = Math.floor(left / 60) % 60;
                minutes = minutes < 10 ? '0' + minutes : minutes;
                var seconds = left % 60;
                seconds = seconds < 10 ? '0' + seconds : seconds;
@@ -23,7 +25,19 @@ function update_timer(timer){
        }
 }
 
-$(() => $('.timer').each(item => {
-       update_timer(item);
-       setInterval(() => update_timer(item), 1000);
-}));
+$(() => {
+       $('.timer').each(item => {
+               update_timer(item);
+               setInterval(() => update_timer(item), 1000);
+       });
+       if($('.timer').length > 0) {
+               let xhr = new XMLHttpRequest();
+               xhr.open('HEAD', '/');
+               xhr.onload = () => {
+                       let srvtime = Date.parse(xhr.getResponseHeader('Date'));
+                       offset = Math.ceil((srvtime - Date.now()) / 1000);
+                       console.log("Offset from server: " + offset);
+               };
+               xhr.send();
+       }
+});
This page took 0.010653 seconds and 4 git commands to generate.