diff --git a/broadcast_timer/api.html b/broadcast_timer/api.html
new file mode 100644
index 0000000..49e19ae
--- /dev/null
+++ b/broadcast_timer/api.html
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/broadcast_timer/css/custom.css b/broadcast_timer/css/custom.css
index bacb7f1..ed860c8 100644
--- a/broadcast_timer/css/custom.css
+++ b/broadcast_timer/css/custom.css
@@ -1,6 +1,10 @@
body {
background: #222;
color: #AAA; }
+textarea {
+ background: #111;
+ color: lime;
+ border: 1px solid #999; }
.warn { color: yellow; }
.green { color: lime; }
.over { color: red; }
diff --git a/broadcast_timer/index.html b/broadcast_timer/index.html
index dfc4b5a..b9e9bfb 100644
--- a/broadcast_timer/index.html
+++ b/broadcast_timer/index.html
@@ -8,7 +8,7 @@
-
+
@@ -18,8 +18,11 @@
+
+
+
-
+
@@ -107,10 +110,14 @@
-
+
-
-
+
+
+
diff --git a/broadcast_timer/main.js b/broadcast_timer/main.js
index 48435e6..40dcb92 100644
--- a/broadcast_timer/main.js
+++ b/broadcast_timer/main.js
@@ -1,46 +1,56 @@
// meta
-var version = "0.10.013"
-var debug = false;
+var version = "0.11.121"
+var debug = true;
-
-events.sort(function(a, b){return new Date(a.date).getTime() - new Date(b.date).getTime()});
+var dataLoad = false;
+var dataRequested = false;
+var jsonUrl = "https://api.myjson.com/bins/k0abr";
+var events, list, counter_diff, eventLength, isEventsArray;
+var currentObject, nextObject, notes;
+var currentDate, nextDate, currentStart, currentEnd;
+var nextStart, nextEnd, currentSubject, nextSubject;
var initialized = false;
-
var style = 'green';
var eventStyle = "events";
-
-var list;
-var counter_diff;
-
-var eventsLength = events.length;
-var eventLength;
-
var array_counter = 0;
-var currentObject = array_counter;
-var nextObject = array_counter + 1;
-
-var notes = events[currentObject].notes;
-var currentDate = events[currentObject].date;
-var nextDate = events[nextObject].date;
-var currentStart = currentDate;
-var currentEnd = nextDate;
-var nextStart = nextDate;
-var nextEnd = events[(nextObject + 1)].date;
-var currentSubject = events[currentObject].subject;
-var nextSubject = events[nextObject].subject;
-// Set the date we're counting down to
-var countDownDate = new Date(nextDate).getTime();
-var currentTimer = new Date(currentDate).getTime();
+console.log(`start js`);
-// initialize html objects
-document.getElementById("notes").innerHTML = notes;
-document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
-document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
-document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "
End Time: " + currentEnd;
-document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "
End Time: " + nextEnd;
+function getEvents() {
+ console.log(`start getEvents function`);
+
+ let req = new XMLHttpRequest();
+
+
+ req.onreadystatechange = () => {
+ console.log(`${req.readyState}`);
+ console.log(`${XMLHttpRequest.DONE}`);
+ if (req.readyState == XMLHttpRequest.DONE) {
+ console.log(`request done`);
+ let dataLoad = true;
+ //var events = JSON.parse(JSON.stringify(req.responseText));
+ let events = JSON.parse(req.responseText);
+ let eventsLength = events.length;
+ console.log(`indside req.onreadystatechange`);
+ console.log(`${events}`);
+ console.log(`calling main function`);
+
+ main(events, dataLoad, eventsLength);
+ }
+ };
+
+ console.log(`requesting ${jsonUrl}`);
+ req.open("GET", jsonUrl , true);
+ req.send();
+}
+
+//sleep function
+function sleep(delay) {
+ var start = new Date().getTime();
+ while (new Date().getTime() < start + delay);
+}
function toggleDebug() {
if (debug === true) {
@@ -51,121 +61,316 @@ function toggleDebug() {
}
}
+function selectEvent(id) {
+ console.log(`inside selectEvent()`);
+
+ currentObject = id;
+ array_counter = id;
+ currentDate = events[currentObject].date;
+ currentSubject = events[currentObject].subject;
+ currentStart = currentDate;
+ currentEnd = nextDate;
+ nextObject = array_counter + 1;
+ if (nextObject >= eventsLength) {
+ nextStart = "";
+ nextEnd = "";
+ nextDate = "";
+ nextSubject = "End";
+ notes = "";
+ } else {
+ nextStart = nextDate;
+ nextEnd = events[nextObject].date;
+ nextDate = events[nextObject].date;
+ nextSubject = events[nextObject].subject;
+ notes = events[currentObject].notes;
+ }
+
+ document.getElementById("notes").innerHTML = notes;
+ document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
+ document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
+ document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "
End Time: " + currentEnd;
+ document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "
End Time: " + nextEnd;
+ countDownDate = new Date(nextDate).getTime();
+ currentTimer = new Date(currentDate).getTime();
+}
+
function incArray() {
- if (array_counter < eventsLength) {
- array_counter++;
- }
- currentObject = array_counter;
- currentDate = events[currentObject].date;
- currentSubject = events[currentObject].subject;
- currentStart = currentDate;
- currentEnd = nextDate;
- nextStart = nextDate;
- nextEnd = events[(nextObject + 1)].date;
-
- nextObject = array_counter + 1;
- nextDate = events[nextObject].date;
- nextSubject = events[nextObject].subject;
- notes = events[currentObject].notes;
-
- document.getElementById("notes").innerHTML = notes;
- document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
- document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
- document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "
End Time: " + currentEnd;
- document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "
End Time: " + nextEnd;
- countDownDate = new Date(nextDate).getTime();
- currentTimer = new Date(currentDate).getTime();
+ console.log("inside incArray");
+ console.log(`array_counter = ${array_counter}`);
+ console.log(`eventsLength = ${eventsLength}`);
+ console.log(`events = ${events}`);
+ if (array_counter < eventsLength) {
+ array_counter++;
+ }
+ selectEvent(array_counter);
}
function decArray() {
- if (array_counter > 0) {
- array_counter--;
- }
+ console.log("inside decArray");
+ console.log(`array_counter = ${array_counter}`);
+ console.log(`eventsLength = ${eventsLength}`);
+ console.log(`events = ${events}`);
- currentObject = array_counter;
- nextObject = array_counter + 1;
- currentDate = events[currentObject].date;
- nextDate = events[nextObject].date;
- currentSubject = events[currentObject].subject;
- nextSubject = events[nextObject].subject;
- currentStart = currentDate;
- currentEnd = nextDate;
- nextStart = nextDate;
- nextEnd = events[(nextObject + 1)].date;
- notes = events[currentObject].notes;
-
- nextObject = array_counter + 1;
- nextDate = events[nextObject].date;
- nextSubject = events[nextObject].subject;
-
- document.getElementById("notes").innerHTML = notes;
- document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
- document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
- document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "
End Time: " + currentEnd;
- document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "
End Time: " + nextEnd;
- countDownDate = new Date(nextDate).getTime();
- currentTimer = new Date(currentDate).getTime();
+ if (array_counter > 0) {
+ array_counter--;
+ }
+ selectEvent(array_counter);
}
-// Update the count down every 1 second
-var x = setInterval(function() {
+function genList() {
+ console.log(`inside gen list `);
+ list = "Event | Time | Time Until | ";
- document.getElementById("meta").innerHTML = "Version: " + version + "
Debug: " + debug + "";
+ if (eventsLength > 15) {
+ var listLength = 15;
+ var page = true;
+ } else {
+ var listLength = eventsLength;
+ }
- list = "Event | Time | Time Until | ";
+ var count_to_end = eventsLength - array_counter;
- if (eventsLength > 15) {
- var listLength = 15;
- var page = true;
- } else {
- var listLength = eventsLength;
- }
+ for (i = 0; i < listLength; i++) {
+ if (i === array_counter) {
+ eventStyle = "events-current";
+ cdFunction = countdown(events[i].date, events[i + 1], "current");
+ } else {
+ eventStyle = "events";
+ cdFunction = countdown(events[i].date, "", "next");
+ }
- var count_to_end = eventsLength - array_counter;
+ counter_diff = i - array_counter;
+
+ if (counter_diff < -2) {
+ list += '';
+ if (listLength < eventsLength) {
+ listLength++;
+ }
+ } else {
+ list += "" + events[i].subject + " | " + events[i].date + " | " + cdFunction + " |
";
+ }
+ }
+
+ list += "
";
+
+ return list;
+}
+
+function main(array, dataLoad, aLen) {
+ events = array;
+ isEventsArray = Array.isArray(events);
+ eventsLength = aLen;
+
+ console.log(`inside main`);
+ console.log(`events = ${events}`);
+ console.log(`dataLoad = ${dataLoad}`);
+ console.log(`${isEventsArray}`);
+
+ events.sort(function(a, b){return new Date(a.date).getTime() - new Date(b.date).getTime()});
- for (i = 0; i < listLength; i++) {
+//console.log(`eventsLength = ${eventsLength}`);
+ currentObject = array_counter;
+ nextObject = array_counter + 1;
+ notes = events[currentObject].notes;
+ currentDate = events[currentObject].date;
+ nextDate = events[nextObject].date;
+ currentStart = currentDate;
+ currentEnd = nextDate;
+ nextStart = nextDate;
+ nextEnd = events[(nextObject + 1)].date;
+ currentSubject = events[currentObject].subject;
+ nextSubject = events[nextObject].subject;
- if (i === array_counter) {
- eventStyle = "events-current";
- cdFunction = countdown(events[i].date, "current");
- } else {
- eventStyle = "events";
- cdFunction = countdown(events[i].date, "next");
- }
+console.log(`nextObject = ${nextObject}`);
+console.log(`notes = ${notes}`);
+console.log(`currentDate = ${currentDate}`);
+console.log(`nextDate = ${nextDate}`);
- counter_diff = i - array_counter;
+ // Set the date we're counting down to
+ var countDownDate = new Date(nextDate).getTime();
+ var currentTimer = new Date(currentDate).getTime();
- if (counter_diff < -2) {
- list += '';
- if (listLength < eventsLength) {
- listLength++;
- }
- } else {
- list += "" + events[i].subject + " | " + events[i].date + " | " + cdFunction + " |
";
- }
- }
+ // initialize html objects
+ document.getElementById("notes").innerHTML = notes;
+ document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
+ document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
+ document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "
End Time: " + currentEnd;
+ document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "
End Time: " + nextEnd;
- list += "
";
- document.getElementById("events-list").innerHTML = list;
+ // Update the count down every 1 second
+ var x = setInterval(function() {
+
+ document.getElementById("meta").innerHTML = "Version: " + version + "
Debug: " + debug + "";
+ document.getElementById("events-list").innerHTML = genList();
+
+ // A regular clock
+ document.getElementById("calDate").innerHTML = clock_cal_date();
+ document.getElementById("now").innerHTML = clock_date();
+ document.getElementById("utc_now").innerHTML = clock_dateUTC();
+
+ //
+ document.getElementById("countdown").innerHTML = countdown(currentDate, "current");
+ document.getElementById("nextCountdown").innerHTML = countdown(nextDate, "next");
+
+ if (debug === true) {
+ debugString = "debug: " + debug + "
Version: " + version ;
+ debugString += "
Current time object: " + currentDate + "
Current subject object: " + currentSubject ;
+ debugString += "
current notes object: " + notes + "
next time object: " + nextDate ;
+ debugString += "
next subject object: " + nextSubject + "
current array counter: " + array_counter ;
+ debugString += "
Start Time: " + currentStart + "
End Time: " + currentEnd + "
" ;
+ document.getElementById("debug").innerHTML = debugString;
+ }
+ }, 1000);
+}
+
+function clock_cal_date() {
+ var d = new Date();
+ var r = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate();
+ return r
+}
+
+function clock_date() {
// A regular clock
- document.getElementById("calDate").innerHTML = clock_cal_date();
- document.getElementById("now").innerHTML = clock_date();
- document.getElementById("utc_now").innerHTML = clock_dateUTC();
+ var d = new Date();
+ var hour = d.getHours();
+ var minute = d.getMinutes();
+ var second = d.getSeconds();
-//
- document.getElementById("countdown").innerHTML = countdown(currentDate, "current");
- document.getElementById("nextCountdown").innerHTML = countdown(nextDate, "next");
-
- if (debug === true) {
- document.getElementById("debug").innerHTML = "debug: " + debug + "
Version: " + version + "
Current time object: " + currentDate + "
Current subject object: " + currentSubject + "
current notes object: " + notes + "
next time object: " + nextDate + "
next subject object: " + nextSubject + "
current array counter: " + array_counter + "
Start Time: " + currentStart + "
End Time: " + currentEnd + "
" ;
+ if (hour < 10 && hour >= 0) {
+ hour = ('0' + hour);
}
- // If the count down is finished, write some text
- //if (distance < 0) {
- // clearInterval(x);
- // document.getElementById("clock").innerHTML = "EXPIRED";
- //}
-}, 1000);
+ if (minute < 10 && minute >= 0) {
+ minute = ('0' + minute);
+ }
+
+ if (second < 10 && second >= 0) {
+ second = ('0' + second);
+ }
+
+ var r = hour + ":" + minute + ":" + second;
+ return r;
+}
+
+function clock_dateUTC() {
+// Same for UTC
+ var d = new Date();
+ var hourUTC = d.getUTCHours();
+ var minuteUTC = d.getUTCMinutes();
+ var secondUTC = d.getUTCSeconds();
+
+ if (hourUTC < 10) {
+ hourUTC = ('0' + hourUTC);
+ }
+
+ if (minuteUTC < 10) {
+ minuteUTC = ('0' + minuteUTC);
+ }
+
+ if (secondUTC < 10) {
+ secondUTC = ('0' + secondUTC);
+ }
+
+ var r = hourUTC + ":" + minuteUTC + ":" + secondUTC;
+ return r
+}
+
+var countDownDate;
+var now, distance;
+var days, hours, minutes, seconds;
+var style = "green"; // reset style
+var r;
+
+function countdown(targetDate, nextDate, current) {
+ countDownDate = new Date(targetDate).getTime();
+ now = new Date().getTime();
+ distance = countDownDate - now;
+
+ if (current === "current") {
+ var nextCountDownDate = new Date(nextDate).getTime();
+ var nextDistance = nextCountDownDate - now;
+ var nextDays = Math.floor(nextDistance / (1000 * 60 * 60 * 24));
+ var nextHours = Math.floor((nextDistance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ var nextMinutes = Math.floor((nextDistance % (1000 * 60 * 60)) / (1000 * 60));
+ var nextSeconds = Math.floor((nextDistance % (1000 * 60)) / 1000);
+ }
+
+ days = Math.floor(distance / (1000 * 60 * 60 * 24));
+ hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
+ minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
+ seconds = Math.floor((distance % (1000 * 60)) / 1000);
+
+// set style for countdown based on remaining time
+ style = "green"; // reset style
+
+ if (current === "current") {
+ style = 'current';
+ } else {
+ if (days < 1 && hours < 1) {
+ if (minutes < 0) {
+ style = 'over';
+ } else if (minutes < 15) {
+ style = 'warn';
+ } else {
+ style = 'green';
+ }
+ }
+ }
+
+ if (days < 0) {
+ days = (-days);
+ days--;
+ }
+
+// Day or Days?
+ if (days > 0) {
+ if (days === 1){
+ rDays = (days + ' Day ');
+ } else {
+ rDays = (days + ' Days ');
+ }
+ } else {
+ rDays = '';
+ }
+
+// pad single digits with a '0' prefix
+// when time is out, start counting up by inverting
+ if (hours < 0) {
+ hours = (-hours);
+ hours--;
+ }
+ if (hours < 10 && hours >= 0) {
+ hours = ('0' + hours);
+ }
+
+ if (minutes < 0) {
+ minutes = (-minutes);
+ minutes--;
+ }
+ if (minutes < 10 && minutes >= 0) {
+ minutes = ('0' + minutes);
+ }
+
+ if (seconds < 0) {
+ seconds = (-seconds);
+ seconds--;
+ }
+ if (seconds < 10 && seconds >= 0) {
+ seconds = ('0' + seconds);
+ }
+
+ if (initialized === false && distance < 0) {
+ incArray();
+ } else if (initialized === false) {
+ initialized = true;
+ decArray();
+ }
+
+ var r = "" + rDays + hours + ":" + minutes + ":" + seconds + "
";
+ return r;
+}
+
+