131 lines
2.9 KiB
JavaScript
131 lines
2.9 KiB
JavaScript
var len = 0;
|
|
var lastBrew = "∞";
|
|
var brewtext = "";
|
|
|
|
$(document).ready(function(){
|
|
$('#text').bind("DOMSubtreeModified", resize);
|
|
updateTime();
|
|
setInterval(updateTime,1000);
|
|
formatBrewTime();
|
|
setInterval(formatBrewTime,10000);
|
|
});
|
|
|
|
$(window).resize(resize);
|
|
|
|
function fetchdata(data, status){
|
|
if (typeof status !== 'undefined'){
|
|
if (status == "success"){
|
|
parseData(data);
|
|
}
|
|
else if (status == "error"){
|
|
handleError();
|
|
}
|
|
}
|
|
}
|
|
|
|
$.getJSON("/coffee/cups", fetchdata);
|
|
setInterval(function() {
|
|
$.getJSON("/coffee/cups", fetchdata);
|
|
}, 2000);
|
|
|
|
function formatBrewTime(){
|
|
if (!brewtext && lastBrew instanceof Date){
|
|
var now = new Date();
|
|
var timeDiff = Math.max(now.getTime() - lastBrew.getTime(), 0);
|
|
var tmp = (timeDiff < 3600000)
|
|
? Math.round(timeDiff / 60000) + ' min'
|
|
: '~' + Math.round(timeDiff / 3600000 * 2) / 2 + ' h';
|
|
|
|
$("#brewtime").html(tmp);
|
|
} else {
|
|
$("#brewtime").html(brewtext);
|
|
}
|
|
}
|
|
|
|
function handleError() {
|
|
setData("?", 0, 0, Number.MAX_VALUE, Number.MAX_VALUE);
|
|
}
|
|
|
|
function parseData(data) {
|
|
if (data) {
|
|
var date = new Date(data.date);
|
|
lastBrew = new Date(data.last_brew);
|
|
var now = new Date();
|
|
var cups = data.cups;
|
|
var brewing = data.brewing;
|
|
var timeDiff = Math.max(now.getTime() - lastBrew.getTime(),0);
|
|
var opa = Math.max(100 - timeDiff / 90000,0);
|
|
setData(cups, data.temp, opa,now.getTime()-date.getTime(), timeDiff, brewing);
|
|
}
|
|
else{
|
|
handleError();
|
|
}
|
|
}
|
|
|
|
function setData(cups, temp, opa, timeFromUpdate, timeFromBrew, brewing){
|
|
if (cups == 0) {
|
|
opa = 0;
|
|
}
|
|
brewtext = "";
|
|
$("#upper").css({opacity: opa/100});
|
|
$("#scale2").css({width: Math.min(cups/9*100,100) + '%'});
|
|
$("#text,body").removeClass();
|
|
|
|
cups = Number(cups).toFixed(1);
|
|
|
|
if(timeFromUpdate > 600000){
|
|
cups = "?";
|
|
brewtext = "∞";
|
|
$("#text").addClass("unknown");
|
|
}
|
|
else if(brewing){
|
|
cups = "+";
|
|
brewtext = ":)";
|
|
$("#text").addClass("brewing");
|
|
}
|
|
else if(cups <= 2){
|
|
$("#text").addClass("hurry");
|
|
}
|
|
formatBrewTime();
|
|
if($("#text").html() == "+" && !brewing)
|
|
$("body").addClass("coffeeready");
|
|
|
|
var cupsString = cups.toString();
|
|
len = cupsString.length;
|
|
$("#text").html(cups);
|
|
}
|
|
|
|
function updateTime(){
|
|
var now = new Date();
|
|
$("#time").html(formatTime(now.getHours(),now.getMinutes(),now.getSeconds()));
|
|
}
|
|
|
|
function formatTime(hours, minutes, seconds){
|
|
var str = "";
|
|
|
|
if(hours < 10)
|
|
str += "0";
|
|
str += hours;
|
|
|
|
str += ":";
|
|
|
|
if(minutes < 10)
|
|
str += "0";
|
|
str += minutes;
|
|
|
|
str += ":";
|
|
|
|
if(seconds < 10)
|
|
str += "0";
|
|
str += seconds;
|
|
|
|
return str;
|
|
}
|
|
function resize(){
|
|
var w = $("#container").width();
|
|
var h = $("#container").height();
|
|
var s = w > h ? h : w;
|
|
var font = s*0.8*0.38/Math.sqrt(len);
|
|
$("#text").css({ top: s*0.16-font/2 + 'px', fontSize: font + 'px', marginLeft: -font*len*3/10 + 'px'});
|
|
}
|