From 2d87658ada6f46f977634bd4d492c0d4d65882d9 Mon Sep 17 00:00:00 2001 From: Emilie Date: Thu, 16 Mar 2017 13:11:32 +0100 Subject: [PATCH] [Vertigo M&C] : improve js --- .../src/js/modules/live-streaming-counter.js | 81 +++++++++---------- .../templates/includes/footer_scripts.html | 1 + bower.json | 3 +- 3 files changed, 41 insertions(+), 44 deletions(-) diff --git a/app/themes/base/static/src/js/modules/live-streaming-counter.js b/app/themes/base/static/src/js/modules/live-streaming-counter.js index 576897bb..5f3933a9 100644 --- a/app/themes/base/static/src/js/modules/live-streaming-counter.js +++ b/app/themes/base/static/src/js/modules/live-streaming-counter.js @@ -34,15 +34,13 @@ function cleanCounter() { function CountDownTimer(json_event, curr_event_index, id, video_id/*, video_url*/) { - //console.log("json_event.length", Object.keys(json_event).length); - //console.log("curr_event_index", curr_event_index); if (Object.keys(json_event).length <= curr_event_index) { return ; } - var curr_event = json_event[curr_event_index]; - var begin = new Date(curr_event.begin); - var end = new Date(curr_event.end); + var curr_event; + var begin; + var end; var _second = 1000; var _minute = _second * 60; @@ -52,11 +50,18 @@ function CountDownTimer(json_event, curr_event_index, id, video_id/*, video_url* var distance_out = 1; var distance_in = 1; - function showRemaining() { - var now = new Date(); - var distance_out = begin - now; - //console.log("distance_out", distance_out) + function init() { + if (curr_event_index < Object.keys(json_event).length ) { + curr_event = json_event[curr_event_index]; + begin = moment(new Date(curr_event.begin)); + end = moment(new Date(curr_event.end)).add(0, 'm'); + clearInterval(timer); + } + } + function showRemaining() { + var now = moment(new Date()); + var distance_out = begin.diff(now); if (distance_out < 0) { //clearInterval(timer); // $('#countdown-title').html('

'); @@ -69,59 +74,49 @@ function CountDownTimer(json_event, curr_event_index, id, video_id/*, video_url* //return; } - $('#countdown-title').html('Prochain évènement :

'+ curr_event.title +'

Retransmission dans :'); - - var days = Math.floor(distance_out / _day); - var hours = Math.floor((distance_out % _day) / _hour); - var minutes = Math.floor((distance_out % _hour) / _minute); - var seconds = Math.floor((distance_out % _minute) / _second); - - document.getElementById(id).innerHTML = days + 'jours '; - document.getElementById(id).innerHTML += hours + 'hrs '; - document.getElementById(id).innerHTML += minutes + 'mins '; - document.getElementById(id).innerHTML += seconds + 'secs'; - + updateDisplay(distance_out); } function hideRemaining() { - var now = new Date(); - var distance_in = end - now; - //console.log("distance_in", distance_in) - + var now = moment(new Date()); + var distance_in = end.diff(now); if (distance_in < 0) { - nextEvent() - distance_in = end - now; + nextEvent(); + distance_out = begin.diff(now); + updateDisplay(distance_out); $('.countdown-overlay').show() } } function nextEvent() { curr_event_index++; - if (shouldStreamingStop()) { - curr_event = json_event[curr_event_index] - begin = new Date(curr_event.begin); - end = new Date(curr_event.end); - } + init(); } - function shouldStreamingStop() { - var bool = true; - if (json_event.length - 1 < curr_event_index) { - clearInterval(timer); - bool = false; - } - return bool; - } + function updateDisplay(time_remaining) { + + $('#countdown-title').html('Prochain évènement :

'+ curr_event.title+'

Retransmission dans :'); + var days = Math.floor(time_remaining / _day); + var hours = Math.floor((time_remaining % _day) / _hour); + var minutes = Math.floor((time_remaining % _hour) / _minute); + var seconds = Math.floor((time_remaining % _minute) / _second); + + document.getElementById(id).innerHTML = days + 'jours '; + document.getElementById(id).innerHTML += hours + 'hrs '; + document.getElementById(id).innerHTML += minutes + 'mins '; + document.getElementById(id).innerHTML += seconds + 'secs'; + } - // calculer le diff avec le prochain évènement - // réactiver le countdown + // initialize + init(); + // out of event if (distance_out > 0) { timer = setInterval(showRemaining, 1000); } - //console.log("distance_in", distance_in) + // meanwhile an event if (distance_in > 0) { timer = setInterval(hideRemaining, 1000); } diff --git a/app/themes/base/templates/includes/footer_scripts.html b/app/themes/base/templates/includes/footer_scripts.html index cbe83ecd..5645958f 100644 --- a/app/themes/base/templates/includes/footer_scripts.html +++ b/app/themes/base/templates/includes/footer_scripts.html @@ -14,6 +14,7 @@ + {% block extra_js %}{% endblock %} diff --git a/bower.json b/bower.json index 70000d74..4627acc1 100644 --- a/bower.json +++ b/bower.json @@ -29,6 +29,7 @@ "video.js": "^5.12.5", "videojs-playlist": "^2.4.0", "jquery_lazyload": "jquery.lazyload#^1.9.7", - "waypoints": "^4.0.1" + "waypoints": "^4.0.1", + "moment": "*" } } -- 2.39.5