spectrum2/3rdparty/cpprestsdk/samples/CasaLens/js/default.js
2015-11-19 15:19:14 +01:00

173 lines
6 KiB
JavaScript

function formatAMPM(date) {
var hours = date.getHours();
var minutes = date.getMinutes();
var ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' + minutes : minutes;
var strTime = hours + ':' + minutes + ' ' + ampm;
return strTime;
}
function formatEventTime(dateTimeStr) {
dateTimeStr = dateTimeStr.substr(0, dateTimeStr.lastIndexOf(":")).split(" ").join("T")
var dateObj = new Date(dateTimeStr);
if (!dateObj) {
return "";
}
var dateStr = dateObj.toDateString();
dateStr = dateStr.substring(0, dateStr.length - 5);
return dateStr + "<br/>" + formatAMPM(dateObj);
}
function ClearText() {
location_ip.value = "";
}
function TrimText(text, maxLength) {
if (text.length < maxLength) {
return text;
} else {
var i = maxLength;
while (i < text.length) {
if (text[i] == " " || text[i] == "," || text[i] == "." || text[i] == "\r" || text[i] == "\n") {
break;
}
i++;
}
return text.substr(0, i);
}
}
function populateEvents(events) {
var tempDiv = document.createElement("div");
var currentChildNodes = eventsTable.childNodes;
var defaultChildrenCount = 2;
for (var i = defaultChildrenCount; i < currentChildNodes.length; i++) {
currentChildNodes[i].parentNode.removeChild(currentChildNodes[i]);
}
for (var i = 0; i < events.length; i++) {
var dataObj = events[i];
tempDiv.innerHTML = dataObj.description;
var description = TrimText(tempDiv.innerText, 150);
var innerHtml = eventTemplate.innerHTML;
innerHtml = innerHtml.replace("%eventtitle%", TrimText(dataObj.title, 30));
innerHtml = innerHtml.replace("%eventstarttime%", formatEventTime(dataObj.starttime));
innerHtml = innerHtml.replace("%eventdescription%", description);
innerHtml = innerHtml.replace("%eventlink1%", dataObj.url);
innerHtml = innerHtml.replace("%eventlink2%", dataObj.url);
innerHtml = innerHtml.replace("%eventvenue%", dataObj.venue_address);
var obj = document.createElement("tr");
obj.innerHTML = window.toStaticHTML(innerHtml);
eventsTable.appendChild(obj);
}
}
function populateWeather(weather) {
var currentChildNodes = weatherData.childNodes;
var defaultChildrenCount = 5;
for (var i = defaultChildrenCount; i < currentChildNodes.length; i++) {
currentChildNodes[i].parentNode.removeChild(currentChildNodes[i]);
}
var weatherElement = weatherTemplate.cloneNode(true);
weatherElement.style.display = "inherit";
var innerHtml = weatherElement.innerHTML;
innerHtml = innerHtml.replace("%wt%", weather.temperature);
innerHtml = innerHtml.replace("%wp%", weather.pressure);
innerHtml = innerHtml.replace("%wtmin%", weather.temp_min);
innerHtml = innerHtml.replace("%wtmax%", weather.temp_max);
innerHtml = innerHtml.replace("%wdesc%", weather.description);
innerHtml = innerHtml.replace("%wimg%", weather.image);
weatherElement.innerHTML = window.toStaticHTML(innerHtml);
weatherData.appendChild(weatherElement);
}
function populateMovies(movies) {
var currentChildNodes = movieTemplateToHide.childNodes;
var defaultChildrenCount = 3;
for (var i = defaultChildrenCount; i < currentChildNodes.length; i++) {
currentChildNodes[i].parentNode.removeChild(currentChildNodes[i]);
}
var showtimes = "";
for (var i = 0; i < movies.length; i++) {
var innerHtml = movieTemplate.innerHTML;
var dataObj = movies[i];
var theatrename;
for (var j = 0; j < dataObj.theatre.length; j++) {
showtimes += dataObj.theatre[j].name;
showtimes += "<br/>";
var showtimelist = dataObj.theatre[j].datetime;
for (var k = 0; k < showtimelist.length; k++) {
var dateObj = new Date(showtimelist[k]);
if (dateObj) {
showtimes += formatAMPM(dateObj) + " | ";
}
}
showtimes = showtimes.substr(0, showtimes.length - 2);
showtimes += "<br/><br/>";
}
innerHtml = innerHtml.replace("%mtitle%", dataObj.title);
innerHtml = innerHtml.replace("%mtheater%", showtimes);
innerHtml = innerHtml.replace("%mposter%", dataObj.poster);
var obj = document.createElement("div");
obj.innerHTML = window.toStaticHTML(innerHtml);
movieTemplateToHide.appendChild(obj);
}
}
function populateImages(images) {
if (images.length == 4) {
var mainimg = document.getElementById('mainPic1');
mainimg.src = images[0];
var img1 = document.getElementById('thumbnailPic1');
img1.src = images[1];
var img2 = document.getElementById('thumbnailPic2');
img2.src = images[2];
var img3 = document.getElementById('thumbnailPic3');
img3.src = images[3];
}
}
function FetchData() {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function (e) {
// The request finished and response is ready
if (xhr.readyState == 4) {
var searchbar = document.getElementById('searchBar');
searchbar.style.display = 'none';
if (xhr.status == 200) {
var replydata = JSON.parse(xhr.responseText);
populateImages(replydata.images);
populateEvents(replydata.events);
populateMovies(replydata.movies);
populateWeather(replydata.weather);
defaultData.style.display = "none";
cityData.style.display = 'inherit';
}
else {
defaultData.style.display = "none";
errorData.style.display = 'inherit';
}
}
}
xhr.open("POST", document.URL, true);
xhr.setRequestHeader("Content-type", 'text/html');
xhr.send(location_ip.value);
}