api stuff

This commit is contained in:
Kameron Kenny 2019-06-04 00:11:19 -04:00
parent ff66063ca1
commit eba043153f
4 changed files with 416 additions and 133 deletions

67
broadcast_timer/api.html Normal file
View File

@ -0,0 +1,67 @@
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Font -->
<!-- <link href='http://fonts.googleapis.com/css?family=Raleway:400,300,600' rel='stylesheet' type='text/css'> -->
<!-- CSS -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/skeleton.css">
<link rel="stylesheet" href="css/custom.css">
<!-- <link rel="stylesheet" type="text/css" href="style.css"> -->
<!-- No Cache -->
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
</head>
<body onLoad="getJson()">
<textarea id="data" rows="200" cols="200"></textarea><br />
<input onClick="getJson()" id="getJson" type="button" value="Get" />
<input onClick="putJson()" id="put" type="button" value="Put" />
<input onClick="test()" id="test" type="button" value="test" />
<p id="result"></p>
</body>
<script>
function test() {
d = document.getElementById("data").value;
document.getElementById("result").innerHTML = d;
}
function putJson() {
var data = document.getElementById("data").value;
let req = new XMLHttpRequest();
req.onreadystatechange = () => {
if (req.readyState == XMLHttpRequest.DONE) {
document.getElementById("result").innerHTML = req.responseText;
}
};
req.open("PUT", "https://api.myjson.com/bins/k0abr", true);
req.setRequestHeader("Content-type", "application/json");
req.send(data);
}
function getJson() {
console.log(`getJson`);
let req = new XMLHttpRequest();
req.onreadystatechange = () => {
if (req.readyState == XMLHttpRequest.DONE) {
document.getElementById("data").innerHTML = JSON.stringify(JSON.parse(req.responseText),null,2);
}
};
req.open("GET", "https://api.myjson.com/bins/k0abr", true);
req.send();
}
</script>

View File

@ -1,6 +1,10 @@
body { body {
background: #222; background: #222;
color: #AAA; } color: #AAA; }
textarea {
background: #111;
color: lime;
border: 1px solid #999; }
.warn { color: yellow; } .warn { color: yellow; }
.green { color: lime; } .green { color: lime; }
.over { color: red; } .over { color: red; }

View File

@ -8,7 +8,7 @@
<!-- Mobile Specific Metas --> <!-- Mobile Specific Metas -->
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Font --> <!-- Font -->
<link href='http://fonts.googleapis.com/css?family=Raleway:400,300,600' rel='stylesheet' type='text/css'> <!-- <link href='http://fonts.googleapis.com/css?family=Raleway:400,300,600' rel='stylesheet' type='text/css'> -->
<!-- CSS --> <!-- CSS -->
<link rel="stylesheet" href="css/normalize.css"> <link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/skeleton.css"> <link rel="stylesheet" href="css/skeleton.css">
@ -18,8 +18,11 @@
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"> <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0"> <meta http-equiv="Expires" content="0">
<!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> -->
<!-- <script src="events.js"></script> -->
</head> </head>
<body> <body onload="getEvents()">
<!-- Top Bar --> <!-- Top Bar -->
<div class="section hero u-full-width u-max-full-width"> <div class="section hero u-full-width u-max-full-width">
@ -107,10 +110,14 @@
</div> </div>
<script src="events.js"></script> <!-- <script src="events.js"></script> -->
<script src="main.js"></script> <script src="main.js"></script>
<script src="timerMath.js"></script> <!-- <script src="timerMath.js"></script> -->
<script src="clock.js"></script> <!-- <script src="clock.js"></script> -->
<script>
//console.log(`end of page`);
//console.log(`${events}`);
</script>
</body> </body>
</html> </html>

View File

@ -1,46 +1,56 @@
// meta // meta
var version = "0.10.013" var version = "0.11.121"
var debug = false; var debug = true;
var dataLoad = false;
events.sort(function(a, b){return new Date(a.date).getTime() - new Date(b.date).getTime()}); 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 initialized = false;
var style = 'green'; var style = 'green';
var eventStyle = "events"; var eventStyle = "events";
var list;
var counter_diff;
var eventsLength = events.length;
var eventLength;
var array_counter = 0; 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 console.log(`start js`);
var countDownDate = new Date(nextDate).getTime();
var currentTimer = new Date(currentDate).getTime();
// initialize html objects function getEvents() {
document.getElementById("notes").innerHTML = notes; console.log(`start getEvents function`);
document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
document.getElementById("upNext").innerHTML = "Next: " + nextSubject; let req = new XMLHttpRequest();
document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "<br />End Time: " + currentEnd;
document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "<br />End Time: " + nextEnd;
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() { function toggleDebug() {
if (debug === true) { 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 + "<br />End Time: " + currentEnd;
document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "<br />End Time: " + nextEnd;
countDownDate = new Date(nextDate).getTime();
currentTimer = new Date(currentDate).getTime();
}
function incArray() { function incArray() {
if (array_counter < eventsLength) { console.log("inside incArray");
array_counter++; console.log(`array_counter = ${array_counter}`);
} console.log(`eventsLength = ${eventsLength}`);
currentObject = array_counter; console.log(`events = ${events}`);
currentDate = events[currentObject].date; if (array_counter < eventsLength) {
currentSubject = events[currentObject].subject; array_counter++;
currentStart = currentDate; }
currentEnd = nextDate; selectEvent(array_counter);
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 + "<br />End Time: " + currentEnd;
document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "<br />End Time: " + nextEnd;
countDownDate = new Date(nextDate).getTime();
currentTimer = new Date(currentDate).getTime();
} }
function decArray() { function decArray() {
if (array_counter > 0) { console.log("inside decArray");
array_counter--; console.log(`array_counter = ${array_counter}`);
} console.log(`eventsLength = ${eventsLength}`);
console.log(`events = ${events}`);
currentObject = array_counter; if (array_counter > 0) {
nextObject = array_counter + 1; array_counter--;
currentDate = events[currentObject].date; }
nextDate = events[nextObject].date; selectEvent(array_counter);
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 + "<br />End Time: " + currentEnd;
document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "<br />End Time: " + nextEnd;
countDownDate = new Date(nextDate).getTime();
currentTimer = new Date(currentDate).getTime();
} }
// Update the count down every 1 second function genList() {
var x = setInterval(function() { console.log(`inside gen list `);
list = "<table class=events><th class=events>Event</th><th class=events>Time</th><th class=events>Time Until</th>";
document.getElementById("meta").innerHTML = "Version: " + version + "<br />Debug: <a onclick=toggleDebug()>" + debug + "</a>"; if (eventsLength > 15) {
var listLength = 15;
var page = true;
} else {
var listLength = eventsLength;
}
list = "<table class=events><th class=events>Event</th><th class=events>Time</th><th class=events>Time Until</th>"; var count_to_end = eventsLength - array_counter;
if (eventsLength > 15) { for (i = 0; i < listLength; i++) {
var listLength = 15; if (i === array_counter) {
var page = true; eventStyle = "events-current";
} else { cdFunction = countdown(events[i].date, events[i + 1], "current");
var listLength = eventsLength; } 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 += "<tr onClick=selectEvent(\"" + i + "\")><td class=" + eventStyle + ">" + events[i].subject + "</td><td class=" + eventStyle + ">" + events[i].date + "</td><td class=" + eventStyle + ">" + cdFunction + "</td></tr>";
}
}
list += "</table>";
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) { console.log(`nextObject = ${nextObject}`);
eventStyle = "events-current"; console.log(`notes = ${notes}`);
cdFunction = countdown(events[i].date, "current"); console.log(`currentDate = ${currentDate}`);
} else { console.log(`nextDate = ${nextDate}`);
eventStyle = "events";
cdFunction = countdown(events[i].date, "next");
}
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) { // initialize html objects
list += ''; document.getElementById("notes").innerHTML = notes;
if (listLength < eventsLength) { document.getElementById("currentSubject").innerHTML = "Now: " + currentSubject;
listLength++; document.getElementById("upNext").innerHTML = "Next: " + nextSubject;
} document.getElementById("currentStartEnd").innerHTML = "Start Time: " + currentDate + "<br />End Time: " + currentEnd;
} else { document.getElementById("nextStartEnd").innerHTML = "Start Time: " + nextDate + "<br />End Time: " + nextEnd;
list += "<tr><td class=" + eventStyle + ">" + events[i].subject + "</td><td class=" + eventStyle + ">" + events[i].date + "</td><td class=" + eventStyle + ">" + cdFunction + "</td></tr>";
}
}
list += "</table>"; // Update the count down every 1 second
document.getElementById("events-list").innerHTML = list; var x = setInterval(function() {
document.getElementById("meta").innerHTML = "Version: " + version + "<br />Debug: <a onclick=toggleDebug()>" + debug + "</a>";
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 + "<br />Version: " + version ;
debugString += "<br />Current time object: " + currentDate + "<br />Current subject object: " + currentSubject ;
debugString += "<br />current notes object: " + notes + "<br />next time object: " + nextDate ;
debugString += "<br />next subject object: " + nextSubject + "<br />current array counter: " + array_counter ;
debugString += "<br />Start Time: " + currentStart + "<br />End Time: " + currentEnd + "<br />" ;
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 // A regular clock
document.getElementById("calDate").innerHTML = clock_cal_date(); var d = new Date();
document.getElementById("now").innerHTML = clock_date(); var hour = d.getHours();
document.getElementById("utc_now").innerHTML = clock_dateUTC(); var minute = d.getMinutes();
var second = d.getSeconds();
// if (hour < 10 && hour >= 0) {
document.getElementById("countdown").innerHTML = countdown(currentDate, "current"); hour = ('0' + hour);
document.getElementById("nextCountdown").innerHTML = countdown(nextDate, "next");
if (debug === true) {
document.getElementById("debug").innerHTML = "debug: " + debug + "<br />Version: " + version + "<br />Current time object: " + currentDate + "<br />Current subject object: " + currentSubject + "<br />current notes object: " + notes + "<br />next time object: " + nextDate + "<br />next subject object: " + nextSubject + "<br />current array counter: " + array_counter + "<br />Start Time: " + currentStart + "<br />End Time: " + currentEnd + "<br />" ;
} }
// If the count down is finished, write some text if (minute < 10 && minute >= 0) {
//if (distance < 0) { minute = ('0' + minute);
// clearInterval(x); }
// document.getElementById("clock").innerHTML = "EXPIRED";
//} if (second < 10 && second >= 0) {
}, 1000); 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 = "<div class=" + style + ">" + rDays + hours + ":" + minutes + ":" + seconds + "</div>";
return r;
}