2014-02-19 16:45:36 +01:00
|
|
|
jQuery.fn.updateWithText = function(text, speed)
|
|
|
|
{
|
|
|
|
var dummy = $('<div/>').html(text);
|
|
|
|
|
|
|
|
if ($(this).html() != dummy.html())
|
|
|
|
{
|
|
|
|
$(this).fadeOut(speed/2, function() {
|
|
|
|
$(this).html(text);
|
|
|
|
$(this).fadeIn(speed/2, function() {
|
|
|
|
//done
|
2014-05-22 19:48:46 +02:00
|
|
|
});
|
2014-02-19 16:45:36 +01:00
|
|
|
});
|
|
|
|
}
|
2014-05-22 19:48:46 +02:00
|
|
|
}
|
2014-02-19 16:45:36 +01:00
|
|
|
|
|
|
|
jQuery.fn.outerHTML = function(s) {
|
|
|
|
return s
|
|
|
|
? this.before(s).remove()
|
|
|
|
: jQuery("<p>").append(this.eq(0).clone()).html();
|
|
|
|
};
|
|
|
|
|
2014-02-25 16:34:20 +01:00
|
|
|
function roundVal(temp)
|
2014-02-24 16:35:48 +01:00
|
|
|
{
|
|
|
|
return Math.round(temp * 10) / 10;
|
|
|
|
}
|
|
|
|
|
2014-02-19 16:45:36 +01:00
|
|
|
jQuery(document).ready(function($) {
|
|
|
|
|
2014-02-26 14:14:29 +01:00
|
|
|
var eventList = [];
|
|
|
|
|
2014-02-19 17:19:54 +01:00
|
|
|
var lastCompliment;
|
|
|
|
var compliment;
|
2014-02-24 16:35:48 +01:00
|
|
|
|
2015-10-18 22:16:45 -04:00
|
|
|
moment.locale(config.lang);
|
2014-02-24 16:35:48 +01:00
|
|
|
|
2014-04-21 17:15:08 +02:00
|
|
|
//connect do Xbee monitor
|
2015-04-05 11:44:40 +02:00
|
|
|
// var socket = io.connect('http://rpi-alarm.local:8082');
|
|
|
|
// socket.on('dishwasher', function (dishwasherReady) {
|
|
|
|
// if (dishwasherReady) {
|
|
|
|
// $('.dishwasher').fadeIn(2000);
|
|
|
|
// $('.lower-third').fadeOut(2000);
|
|
|
|
// } else {
|
|
|
|
// $('.dishwasher').fadeOut(2000);
|
|
|
|
// $('.lower-third').fadeIn(2000);
|
|
|
|
// }
|
|
|
|
// });
|
2014-04-21 16:51:21 +02:00
|
|
|
|
2014-02-24 16:35:48 +01:00
|
|
|
|
2014-02-19 17:02:17 +01:00
|
|
|
(function checkVersion()
|
|
|
|
{
|
|
|
|
$.getJSON('githash.php', {}, function(json, textStatus) {
|
|
|
|
if (json) {
|
|
|
|
if (json.gitHash != gitHash) {
|
2014-02-19 17:23:54 +01:00
|
|
|
window.location.reload();
|
|
|
|
window.location.href=window.location.href;
|
2014-02-19 17:02:17 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
setTimeout(function() {
|
|
|
|
checkVersion();
|
|
|
|
}, 3000);
|
|
|
|
})();
|
|
|
|
|
2015-10-18 22:16:45 -04:00
|
|
|
time.init();
|
2014-02-24 11:19:51 +01:00
|
|
|
|
2014-02-26 14:14:29 +01:00
|
|
|
(function updateCalendarData()
|
|
|
|
{
|
|
|
|
new ical_parser("calendar.php", function(cal){
|
|
|
|
events = cal.getEvents();
|
|
|
|
eventList = [];
|
|
|
|
|
|
|
|
for (var i in events) {
|
|
|
|
var e = events[i];
|
|
|
|
for (var key in e) {
|
|
|
|
var value = e[key];
|
|
|
|
var seperator = key.search(';');
|
|
|
|
if (seperator >= 0) {
|
|
|
|
var mainKey = key.substring(0,seperator);
|
|
|
|
var subKey = key.substring(seperator+1);
|
|
|
|
|
|
|
|
var dt;
|
|
|
|
if (subKey == 'VALUE=DATE') {
|
|
|
|
//date
|
|
|
|
dt = new Date(value.substring(0,4), value.substring(4,6) - 1, value.substring(6,8));
|
|
|
|
} else {
|
|
|
|
//time
|
|
|
|
dt = new Date(value.substring(0,4), value.substring(4,6) - 1, value.substring(6,8), value.substring(9,11), value.substring(11,13), value.substring(13,15));
|
|
|
|
}
|
|
|
|
|
2014-05-22 19:48:46 +02:00
|
|
|
if (mainKey == 'DTSTART') e.startDate = dt;
|
|
|
|
if (mainKey == 'DTEND') e.endDate = dt;
|
2014-02-26 14:14:29 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-05-22 19:48:46 +02:00
|
|
|
if (e.startDate == undefined){
|
|
|
|
//some old events in Gmail Calendar is "start_date"
|
|
|
|
//FIXME: problems with Gmail's TimeZone
|
|
|
|
var days = moment(e.DTSTART).diff(moment(), 'days');
|
|
|
|
var seconds = moment(e.DTSTART).diff(moment(), 'seconds');
|
|
|
|
var startDate = moment(e.DTSTART);
|
|
|
|
} else {
|
|
|
|
var days = moment(e.startDate).diff(moment(), 'days');
|
|
|
|
var seconds = moment(e.startDate).diff(moment(), 'seconds');
|
|
|
|
var startDate = moment(e.startDate);
|
|
|
|
}
|
|
|
|
|
|
|
|
//only add fututre events, days doesn't work, we need to check seconds
|
|
|
|
if (seconds >= 0) {
|
|
|
|
if (seconds <= 60*60*5 || seconds >= 60*60*24*2) {
|
|
|
|
var time_string = moment(startDate).fromNow();
|
|
|
|
}else {
|
|
|
|
var time_string = moment(startDate).calendar()
|
|
|
|
}
|
2014-10-26 11:09:25 +01:00
|
|
|
if (!e.RRULE) {
|
|
|
|
eventList.push({'description':e.SUMMARY,'seconds':seconds,'days':time_string});
|
|
|
|
}
|
|
|
|
e.seconds = seconds;
|
2014-02-28 15:14:57 +01:00
|
|
|
}
|
2014-10-26 11:09:25 +01:00
|
|
|
|
|
|
|
// Special handling for rrule events
|
|
|
|
if (e.RRULE) {
|
|
|
|
var options = new RRule.parseString(e.RRULE);
|
|
|
|
options.dtstart = e.startDate;
|
|
|
|
var rule = new RRule(options);
|
|
|
|
|
|
|
|
// TODO: don't use fixed end date here, use something like now() + 1 year
|
|
|
|
var dates = rule.between(new Date(), new Date(2016,11,31), true, function (date, i){return i < 10});
|
|
|
|
for (date in dates) {
|
|
|
|
var dt = new Date(dates[date]);
|
|
|
|
var days = moment(dt).diff(moment(), 'days');
|
|
|
|
var seconds = moment(dt).diff(moment(), 'seconds');
|
|
|
|
var startDate = moment(dt);
|
|
|
|
if (seconds >= 0) {
|
|
|
|
if (seconds <= 60*60*5 || seconds >= 60*60*24*2) {
|
|
|
|
var time_string = moment(dt).fromNow();
|
|
|
|
} else {
|
|
|
|
var time_string = moment(dt).calendar()
|
|
|
|
}
|
|
|
|
eventList.push({'description':e.SUMMARY,'seconds':seconds,'days':time_string});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2014-05-22 19:48:46 +02:00
|
|
|
eventList.sort(function(a,b){return a.seconds-b.seconds});
|
2014-02-26 14:14:29 +01:00
|
|
|
|
|
|
|
setTimeout(function() {
|
|
|
|
updateCalendarData();
|
|
|
|
}, 60000);
|
|
|
|
});
|
|
|
|
})();
|
|
|
|
|
|
|
|
(function updateCalendar()
|
|
|
|
{
|
|
|
|
table = $('<table/>').addClass('xsmall').addClass('calendar-table');
|
2014-02-27 13:51:18 +01:00
|
|
|
opacity = 1;
|
|
|
|
|
2014-02-26 14:14:29 +01:00
|
|
|
|
|
|
|
for (var i in eventList) {
|
|
|
|
var e = eventList[i];
|
|
|
|
|
2014-02-27 13:51:18 +01:00
|
|
|
var row = $('<tr/>').css('opacity',opacity);
|
2014-02-26 14:16:11 +01:00
|
|
|
row.append($('<td/>').html(e.description).addClass('description'));
|
2014-05-22 19:48:46 +02:00
|
|
|
row.append($('<td/>').html(e.days).addClass('days dimmed'));
|
2014-02-26 14:14:29 +01:00
|
|
|
table.append(row);
|
2014-02-27 13:51:18 +01:00
|
|
|
|
|
|
|
opacity -= 1 / eventList.length;
|
2014-02-26 14:14:29 +01:00
|
|
|
}
|
|
|
|
|
2014-02-26 14:19:12 +01:00
|
|
|
$('.calendar').updateWithText(table,1000);
|
2014-02-26 14:14:29 +01:00
|
|
|
|
|
|
|
setTimeout(function() {
|
|
|
|
updateCalendar();
|
2014-02-28 11:13:15 +01:00
|
|
|
}, 1000);
|
2014-02-26 14:14:29 +01:00
|
|
|
})();
|
|
|
|
|
2015-10-18 16:03:20 -04:00
|
|
|
compliments.init();
|
2014-02-19 16:45:36 +01:00
|
|
|
|
2015-10-18 21:28:58 -04:00
|
|
|
weather.init();
|
2014-02-19 16:45:36 +01:00
|
|
|
|
2015-10-19 00:42:34 -04:00
|
|
|
news.init();
|
2014-05-22 19:48:46 +02:00
|
|
|
|
2014-02-20 19:23:59 +01:00
|
|
|
});
|