"}c+=' ';c+=' ';c+="';if(b==g_nActiveKey){c+=""}c+=g_arrKeys[b].strName;if(b==g_nActiveKey){c+=""}c+=""}$("#divKeys").html(c)}function setKey(a){g_key=g_arrKeys[a];g_nActiveKey=a;saveKeys();displayKeys();createQuery()}function extractDatasourceURL(b){if(b==null){return""}var a=b.strSpreadsheetURL.match(/key=([a-zA-Z0-9-]+)/);if(a==null){a=b.strSpreadsheetURL.match(/\/d\/([a-zA-Z0-9_-]+)/);if(a.length<1){return""}return"//docs.google.com/spreadsheets/d/"+a[1]+"/gviz/tq"}if(a.length<1){return""}return"//spreadsheets.google.com/tq?key="+a[1]}function handleError(a){if(a.isError()){var b=a.getMessage();if(b!=a.getDetailedMessage()){b+="
"+a.getDetailedMessage()+""}showError("Sorry, there was an error in the query.",b);return true}return false}function getSensors(){g_query.setQuery("SELECT "+COLUMN_SENSORNAME+", COUNT("+COLUMN_TIMESTAMP+") GROUP BY "+COLUMN_SENSORNAME);g_query.send(function(a){if(handleError(a)){return}g_arrSensors=[];var c=a.getDataTable();var d=c.getNumberOfRows();for(var b=0;b
"}$("#divSensors").html(c)}function getActivatedSensors(){var c=[];var a=g_arrSensors.length;for(var b=0;b0){d.push(COLUMN_SENSORNAME+'="'+a.join('" OR '+COLUMN_SENSORNAME+'="')+'"')}else{d.push("0=1")}var c="";if(c!=""){d.push(c)}var b=$("#txtNameFilter").val();if(b!=""){d.push(COLUMN_VISITORNAME+' CONTAINS "'+b+'"')}}function addRestrictFilter(f,b){if(b.restrict==undefined||b.restrict==""){return}switch(b.restrict){case"day":f.push("day("+COLUMN_TIMESTAMP+")="+g_dateCurrent.getDate());case"month":f.push("month("+COLUMN_TIMESTAMP+")="+g_dateCurrent.getMonth());case"year":f.push("year("+COLUMN_TIMESTAMP+")="+g_dateCurrent.getFullYear());break;case"3days":var d=new Date(g_dateCurrent.getFullYear(),g_dateCurrent.getMonth(),g_dateCurrent.getDate()-1);var a=new Date(g_dateCurrent.getFullYear(),g_dateCurrent.getMonth(),g_dateCurrent.getDate()+1);var c=d.getFullYear()*10000+d.getMonth()*100+d.getDate();var e=a.getFullYear()*10000+a.getMonth()*100+a.getDate();f.push("year("+COLUMN_TIMESTAMP+")*10000+month("+COLUMN_TIMESTAMP+")*100+day("+COLUMN_TIMESTAMP+")>="+c);f.push("year("+COLUMN_TIMESTAMP+")*10000+month("+COLUMN_TIMESTAMP+")*100+day("+COLUMN_TIMESTAMP+")<="+e);break;case"week":var d=new Date(g_dateCurrent.getFullYear(),g_dateCurrent.getMonth(),g_dateCurrent.getDate()-g_dateCurrent.getDay()+1,0,0,0,0);var a=new Date(d.getTime()+6*24*3600000);var c=d.getFullYear()*10000+d.getMonth()*100+d.getDate();var e=a.getFullYear()*10000+a.getMonth()*100+a.getDate();f.push("year("+COLUMN_TIMESTAMP+")*10000+month("+COLUMN_TIMESTAMP+")*100+day("+COLUMN_TIMESTAMP+")>="+c);f.push("year("+COLUMN_TIMESTAMP+")*10000+month("+COLUMN_TIMESTAMP+")*100+day("+COLUMN_TIMESTAMP+")<="+e);break}}function buildQuery(d){if(d==null||d===undefined){return""}var e=[];var k=[];var c=[];var a=[];var h=[];if(d.query!==undefined&&d.query!=null){var g=d.query.length;for(var f=0;f0){a=$.grep(a,function(i,l){return i.length>0})}}if(d.condition!=""&&d.condition!=null&&d.condition!==undefined){h.push(d.condition)}addQueryFilter(h);addRestrictFilter(h,d);return"SELECT "+(e.length==0?"*":e.join(", "))+(h.length==0?"":" WHERE ("+h.join(") AND (")+")")+(a.length==0?"":" GROUP BY "+a.join(", "))+(d.orderby===undefined?"":" ORDER BY "+d.orderby+(d.orderdir?" "+d.orderdir:""))+(k.length==0?"":" LABEL "+k.join(", "))+(c.length==0?"":" FORMAT "+c.join(", "))+(d.limit===undefined?"":" LIMIT "+d.limit)+(d.offset===undefined?"":" OFFSET "+d.offset)}function setUserQuery(a){g_query.setQuery("SELECT * LIMIT 1");g_query.send(function(b){g_query.setQuery(a);g_query.send(function(c){if(!handleError(c)){visualize(null,c.getDataTable())}})})}function getCurrentProcessor(){return g_arrProcessors[$("#selStatisticsType option:selected").val()]}function updateData(){var a=getCurrentProcessor();if(a==null||a==undefined){showError("I don't know how to display the data.","Please select a statistics type.")}else{g_query.setQuery("SELECT * LIMIT 1");g_query.send(function(b){var c=buildQuery(a);$("#divQuery").html(c+'Submitted at '+new Date().toString()+"
");g_query.setQuery(c);g_query.send(function(d){if(!handleError(d)){visualize(a,d.getDataTable())}})})}}function showPicker(a){$("#divDatePicker").css("display","none");$("#divWeekPicker").css("display","none");$("#divMonthPicker").css("display","none");$("#divYearPicker").css("display","none");$("#divDateFilter").css("display","none");if(a.restrict==undefined||a.restrict==""){$("#divDateFilter").css("display","block")}else{switch(a.restrict){case"day":case"3days":$("#divDatePicker").css("display","block");break;case"week":$("#divWeekPicker").css("display","block");break;case"month":$("#divMonthPicker").css("display","block");break;case"year":$("#divYearPicker").css("display","block");break}}}function updatePickers(){$("#txtDatePicker").datepicker("setDate",g_dateCurrent);$("#selWeekPickerWeek").val(g_dateCurrent.getWeek());$("#txtWeekPickerYear").val(g_dateCurrent.getFullYear());$("#selMonthPickerMonth").val(g_dateCurrent.getMonth());$("#txtMonthPickerYear").val(g_dateCurrent.getFullYear());$("#txtYearPickerYear").val(g_dateCurrent.getFullYear())}function visualize(b,g){var d=b==null||b.postproc==undefined?g:b.postproc(g);if(d===undefined){d=g}var f=false;do{f=false;var e=d.getNumberOfColumns();for(var h=0;h=0){o=h}if(d.getColumnLabel(h).indexOf("UUID")>=0){a=h}}if(o!=-1&&a!=-1){var j=d.getNumberOfRows()}for(var h=0;h'+l+"")}if(b!=null){showPicker(b)}var c=b==null||b.view==undefined?"table":b.view;var n=b==null||b.title==undefined?"":unescapeDates(b.title);var k=$("#divDisplay");switch(c){case"table":k.html("
"+n+'
');var p=new google.visualization.Table($("#divDisplayTable")[0]);p.draw(d,{showRowNumber:true,allowHtml:true});break;case"bar":setColumnType(d,0,"string");var m=new google.visualization.ColumnChart(k[0]);m.draw(d,{title:n,hAxis:{title:d.getColumnLabel(0)},vAxis:{title:d.getColumnLabel(1)},width:$(window).width()-350,height:$(window).height()-100});break;case"line":var m=new google.visualization.LineChart(k[0]);m.draw(d,{title:n,hAxis:{title:d.getColumnLabel(0)},vAxis:{title:d.getColumnLabel(1)},width:$(window).width()-350,height:$(window).height()-100});break;case"pie":var m=new google.visualization.PieChart(k[0]);m.draw(d,{title:n,width:$(window).width()-350,height:$(window).height()-100});break}}function setColumnType(d,b,c){if(d.z!==undefined&&d.z[b]!==undefined){d.z[b].type=c}else{for(var a in d){if(a!="D"&&$.isArray(d[a])){if(d[a][b].type!==undefined){d[a][b].type=c;break}}}}}function resetFilters(){$("#txtDateFrom").val("");$("#txtDateTo").val("");$("#txtNameFilter").val("");updateData()}function offsetDate(b,c,a){g_dateCurrent.setFullYear(g_dateCurrent.getFullYear()+b);g_dateCurrent.setMonth(g_dateCurrent.getMonth()+c);g_dateCurrent.setDate(g_dateCurrent.getDate()+a);updatePickers();updateData()}function setDate(b,c,a){if(b!=null){g_dateCurrent.setFullYear(b)}if(c!=null){g_dateCurrent.setMonth(c)}if(a!=null){g_dateCurrent.setDate(a)}updatePickers();updateData()}function setWeek(a){g_dateCurrent=new Date(g_dateCurrent.getTime()+(a-g_dateCurrent.getWeek())*7*24*3600000);updatePickers();updateData()}function getRow(c,a){var e=[];var d=c.getNumberOfColumns();for(var b=0;b=0;f--){if(e.getValue(f,g)==EVENTTYPE_ARRIVAL){var a=e.getValue(f,c);var h=e.getValue(f,k);var l=false;for(var d=f-1;d>=0;d--){if(e.getValue(d,c)==a&&e.getValue(d,k)==h&&e.getValue(d,g)==EVENTTYPE_DEPARTURE){l=true;b(getRow(e,f),getRow(e,d));break}}if(!l){b(getRow(e,f),null)}}}}function hourToString(a){if(a==0){return"12 AM"}if(a<12){return a+" AM"}if(a==12){return"12 PM"}return(a-12)+" PM"}function formatDuration(d){var a=((d/3600)|0)+"";var b=((d/60)|0)%60;var c=(d%60)|0;return" ".substr(a.length)+a+":"+(b<10?"0":"")+b+":"+(c<10?"0":"")+c}function unescapeDates(a){var b=a;if(b.indexOf("%day")>=0){b=b.replace("%day",MONTHS[g_dateCurrent.getMonth()]+" "+g_dateCurrent.getDate()+", "+g_dateCurrent.getFullYear())}if(b.indexOf("%week")>=0){b=b.replace("%week","Week "+g_dateCurrent.getWeek()+" of "+g_dateCurrent.getFullYear())}if(b.indexOf("%month")>=0){b=b.replace("%month",MONTHS[g_dateCurrent.getMonth()]+" "+g_dateCurrent.getFullYear())}if(b.indexOf("%year")>=0){b=b.replace("%year",g_dateCurrent.getFullYear())}return b}function makeRelative(e,d){var b=0;var a=e.getNumberOfRows();for(var c=0;c Are you sure that you want to delete the key ?