7c4e97a838
This updates the table status logic to handle multiple Current or Next events. It also simplifies some of that detection logic and handles multiple items in the countdown timer. Change-Id: Iff85bb59d4d9a472b56b552f663709f7364b992a Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
68 lines
2.6 KiB
JavaScript
68 lines
2.6 KiB
JavaScript
/* Licensed under the Apache License, Version 2.0
|
|
*/
|
|
var event_date;
|
|
|
|
function startTime() {
|
|
var delta = parseInt(event_date - (new Date).getTime() / 1000);
|
|
var days = parseInt(delta / (3600 * 24));
|
|
var hours = parseInt(delta / 3600) % 24;
|
|
var minutes = parseInt( delta / 60 ) % 60;
|
|
var seconds = delta % 60;
|
|
document.getElementById('eventtimer').innerHTML = days+'d '+hours+'h '+minutes+'m '+seconds+'s';
|
|
var t = setTimeout(startTime, 500);
|
|
}
|
|
|
|
function set_event_status(event_name, event_status) {
|
|
var td = $("td:contains('"+event_name+"')");
|
|
if (event_status == 'Next' || event_status == 'Current') {
|
|
td.css("font-weight", "bold")
|
|
}
|
|
td.next().next().next().html(event_status);
|
|
}
|
|
|
|
function setup_timeline() {
|
|
var now = parseInt((new Date).getTime() / 1000);
|
|
var next_events = []
|
|
var current_events = []
|
|
var next_event_end
|
|
for (i = 0; i < events_timeline.length; i++) {
|
|
var current_event = events_timeline[i];
|
|
var current_event_start = Date.parse(current_event.start + "Z") / 1000;
|
|
var current_event_end = Date.parse(current_event.end + "Z") / 1000;
|
|
if (now > current_event_end) {
|
|
set_event_status(current_event.name, 'Past');
|
|
}
|
|
else if (now >= current_event_start && now < current_event_end) {
|
|
set_event_status(current_event.name, 'Current');
|
|
if (next_event_end == undefined) {
|
|
next_event_end = current_event_end;
|
|
}
|
|
current_events.push(current_event.name)
|
|
event_date = current_event_end
|
|
startTime();
|
|
}
|
|
else if (now < current_event_start &&
|
|
(next_event_end == undefined || current_event_end <= next_event_end)) {
|
|
set_event_status(current_event.name, 'Next');
|
|
if (next_event_end == undefined) {
|
|
next_event_end = current_event_end;
|
|
}
|
|
next_events.push(current_event.name)
|
|
event_date = current_event_start
|
|
startTime();
|
|
}
|
|
else if (now < current_event_start && current_event_end > next_event_end) {
|
|
set_event_status(current_event.name, 'Future');
|
|
}
|
|
}
|
|
|
|
// Set the countdown timer based on any active or upcoming events
|
|
if (current_events.length > 0) {
|
|
document.getElementById('eventname').innerHTML = current_events.join(" and ") + ' end in';
|
|
}
|
|
else if (next_events.length > 0) {
|
|
document.getElementById('eventname').innerHTML = next_events.join(" and ") + ' start in';
|
|
}
|
|
}
|
|
$(document).ready(setup_timeline);
|