+function min(a,b)
+{
+ if (a > b)
+ return b;
+ else
+ return a;
+}
+
function writeGooglePlusEvents(data, elem)
{
var ghtml = "";
+ //var gplusimgwidth = parseInt($('<table class="gplusimg" />').css("width"));
+ var gplusimgwidth = 495;
+ var minimgwidth=78;
for (var i=0; i< data.items.length; i++)
{
var item = data.items[i];
ghtml += '<img class="gplusactor" src="'+item.actor.image.url+'"/><p class="gplustimestamp">'+item.updated.substring(0,16).replace("T"," ")+'</p>';
ghtml += '<p class="gplustxt">'+notetxt+'</p>';
if (noteimgs.length>0)
- {
+ {
+ var bigimglimit;
ghtml += '<table class="gplusimg" cellspacing="0"><tr>';
- for (var ni=0; ni<noteimgs.length; ni++)
+ if (noteimgs.length > 3)
{
- ghtml += '<td><img class="gplusimg" src="'+noteimgs[ni]+'"/></td>';
+ var gplusimgmaxwidth = gplusimgwidth - (minimgwidth * ((noteimgs.length -1) / 3));
+ bigimglimit = "max-height:"+(minimgwidth*3)+"px; max-width:"+gplusimgmaxwidth+"px;"
+ ghtml += '<td><img class="gplusimg" style="'+bigimglimit+'" src="'+noteimgs[0]+'"/></td>';
+ for (var ni=1; ni<noteimgs.length; ni+=3)
+ {
+ ghtml += '<td>';
+ var niimax = min(noteimgs.length, ni+3);
+ for (var nii=ni; nii<niimax; nii++)
+ {
+ ghtml += '<img class="gplusimg" style="max-width:'+minimgwidth+'px; max-height:'+minimgwidth+'px;" src="'+noteimgs[nii]+'"/><br/>';
+ }
+ ghtml += '</td>';
+ }
+ }
+ else
+ {
+ var gplusimgmaxwidth = gplusimgwidth / noteimgs.length;
+ bigimglimit = "max-width:"+gplusimgmaxwidth+"px;"
+ for (var ni=0; ni<noteimgs.length; ni++)
+ {
+ ghtml += '<td><img class="gplusimg" style="'+bigimglimit+'" src="'+noteimgs[ni]+'"/></td>';
+ }
}
ghtml += '</tr></table>';
}
});
}
+function weekday2str(dow)
+{
+ var weekday=new Array(7);
+ weekday[0]="So";
+ weekday[1]="Mo";
+ weekday[2]="Di";
+ weekday[3]="Mi";
+ weekday[4]="Do";
+ weekday[5]="Fr";
+ weekday[6]="Sa";
+ weekday[7]="So";
+ if (dow >=0 && dow <=7)
+ return weekday[dow];
+ else
+ return "";
+}
-function writeCalendar(data, elem)
+function calendarItemIterator(data)
{
- var calhtml = "";
for (var s=0; s<data.length; s++)
{
var when = "";
}
else
{
+ var weekday = weekday2str((new Date(dt)).getDay());
var stime = data[s].starttime;
+ var month = data[s].start.substring(5,7);
+ if (month[0] == '0')
+ month = month[1];
+ var dayofmonth = data[s].start.substring(8,10);
+ if (dayofmonth[0] == '0')
+ dayofmonth = dayofmonth[1];
while (stime.substring(stime.length-3,stime.length) == ":00")
{
stime=stime.substring(0,stime.length-3);
}
if (stime.length <= 2) { stime+="h"; }
- when = data[s].start.substring(8,10)+"."+data[s].start.substring(5,7) +", "+stime;
+ when = weekday + " " + dayofmonth+"."+month +", "+stime;
}
+ var itm = data[s];
+ itm.when = when;
+ yield itm;
+ }
+}
+
+function loadCalendarKiosk()
+{
+ var calcontainer=document.getElementById("grical_upcoming");
+ $.getJSON('/shmcache/grical_realraum.json', function(data){
+ var calhtml = "";
+ for (var itm in calendarItemIterator(data)) {
calhtml += '<li class="level1">'+when+' - <span class="r3red">'+data[s].title+'</span></li>'+"\n";
}
- elem.innerHTML='<ul>'+calhtml+'</ul>';
+ calcontainer.innerHTML='<ul>'+calhtml+'</ul>';
+ });
}
-function loadCalendar()
+
+function loadCalendarMainPage()
{
//old URI: //grical.realraum.at/s/?query=!realraum&limit=9&view=json
var calcontainer=document.getElementById("grical_upcoming");
$.getJSON('/shmcache/grical_realraum.json', function(data){
- writeCalendar(data, calcontainer);
+ var calhtml = "";
+ for (var itm in calendarItemIterator(data)) {
+ calhtml += '<li class="level1"><div class="li">'+when+' - <a href="'+data[s].url+'" class="urlextern" title="'+data[s].title+'" rel="nofollow">'+data[s].title+'</a></div></li>'+"\n";
+ }
+ calcontainer.innerHTML='<ul>'+calhtml+'</ul>';
});
}
+
function writeAnwesenheitStatus(data)
{
var html="";
}
html='<table border="0" cellpadding="0" cellspacing="0" width="100%" height="100"><tr><td style="width:100px;"><img style="float:left;" src="'+iconuri+'" height="100" width="100"/></td><td style="width:4px;"></td><td class="anwesenheitsstatus" style="background-color:'+statuscolor+'; ">'+data.status+'</td></tr></table>';
document.getElementById('anwesenheit_status').innerHTML=html;
-
+
if (data.sensors)
{
- for (var s=0; s<data.sensors.length;s++)
+ if (data.sensors.temperature)
{
- $.each( data.sensors[s], function(stype, std){
- $.each( std, function(swhere, svalue){
- sensorstd+='<td class="sensorstatus"><b>'+stype+'</b><br/>'+swhere+': '+svalue+'</td>';
- });
+ sensorstd+='<td style="background-color:white; height:42px; text-align:center; vertical-align:middle; display:table-cell;"><b>Temperatur</b>';
+ $.each( data.sensors.temperature, function(s, sensorobj) {
+ sensorstd+='<br/>'+sensorobj.location+': '+sensorobj.value.toFixed(2)+sensorobj.unit;
});
+ sensorstd+='</td>';
+ }
+ if (data.sensors.ext_illumination)
+ {
+ sensorstd+='<td style="background-color:white; height:42px; text-align:center; vertical-align:middle; display:table-cell;"><b>Licht</b>';
+ $.each( data.sensors.ext_illumination, function(s, sensorobj) {
+ sensorstd+='<br/>'+sensorobj.location+': '+sensorobj.value;
+ });
+ sensorstd+='</td>';
+ }
+ if (data.sensors.door_locked)
+ {
+ sensorstd+='<td style="background-color:white; height:42px; text-align:center; vertical-align:middle; display:table-cell;"><b>Eingangstür</b>';
+ $.each( data.sensors.door_locked, function(s, sensorobj) {
+ var lockstatus="Auf";
+ if (sensorobj.value) { lockstatus = "Zu"; }
+ sensorstd+='<br/>'+sensorobj.location+': '+lockstatus;
+ });
+ sensorstd+='</td>';
+ }
+ if (data.sensors.ext_door_ajar)
+ {
+ sensorstd+='<td style="background-color:white; height:42px; text-align:center; vertical-align:middle; display:table-cell;"><b>Türkontakt</b>';
+ $.each( data.sensors.ext_door_ajar, function(s, sensorobj) {
+ var lockstatus="Auf";
+ if (sensorobj.value) { lockstatus = "Zu"; }
+ sensorstd+='<br/>'+sensorobj.location+': '+lockstatus;
+ });
+ sensorstd+='</td>';
+ }
+ if (data.sensors.ext_dust)
+ {
+ sensorstd+='<td style="background-color:white; height:42px; text-align:center; vertical-align:middle; display:table-cell;"><b>Staub</b>';
+ $.each( data.sensors.ext_dust, function(s, sensorobj) {
+ sensorstd+='<br/>'+sensorobj.location+': '+sensorobj.value+sensorobj.unit+'</td>';
+ });
+ sensorstd+='</td>';
+
+ }
+ if (sensorstd != "")
+ {
+ sensorshtml='<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>'+sensorstd+'</tr></table>';
+ document.getElementById('sensor_status').innerHTML=sensorshtml;
}
- }
- if (sensorstd != "")
- {
- sensorshtml='<table border="0" cellpadding="0" cellspacing="0" width="100%"><tr>'+sensorstd+'</tr></table>';
- document.getElementById('sensor_status').innerHTML=sensorshtml;
}
}
var jqxhr = $.getJSON(url, writeAnwesenheitStatus);
}
-$(document).ready(function()
-{
- updateDateClock(new Date());
- setInterval("clock()", 500);
- updateAnwesenheitStatus();
- loadCalendar();
- loadGooglePlusEvents();
- setInterval("updateAnwesenheitStatus()", 10*1000);
- setInterval("loadCalendar()", 123*1000);
- setInterval("updateSensors()",145*1000);
- setInterval("loadGooglePlusEvents()", 1207*1000);
-});
-
function updateDateClock(now)
{
var daynames = new Array('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
}
var img_orig_src = {};
-function reloadImg(element)
+function reloadImgAlt(element)
{
if(element.complete)
{
{
img_orig_src[element.id] = element.src;
}
- new_image.src = img_orig_src[element.id] + "&dt="+Math.floor(new Date().getTime() / 1000).toString();
+ new_image.src = img_orig_src[element.id] + "?dt="+Math.floor(new Date().getTime() / 1000).toString();
if (IsImageOk(new_image))
{
element.parentNode.insertBefore(new_image,element);
}
}
}
+function reloadImg(element)
+{
+ if (! img_orig_src[element.id])
+ {
+ img_orig_src[element.id] = element.src;
+ }
+ element.src = img_orig_src[element.id] + "?dt="+Math.floor(new Date().getTime() / 1000).toString();
+}
+
+$(document).ready(function()
+{
+ updateDateClock(new Date());
+ setInterval("clock()", 500);
+ updateAnwesenheitStatus();
+ loadCalendarKiosk();
+ loadGooglePlusEvents();
+ setInterval("updateAnwesenheitStatus()", 10*1000);
+ setInterval("loadCalendarKiosk()", 123*1000);
+ setInterval("updateSensors()",145*1000);
+ setInterval("loadGooglePlusEvents()", 1207*1000);
+});