kendoGauge
by bsatrom
HTML
<script src="http://cdn.kendostatic.com/2012.1.229/js/kendo.all.min.js"></script>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.1.229/styles/kendo.common.min.css">
<link rel="stylesheet" href="http://cdn.kendostatic.com/2012.1.229/styles/kendo.blueopal.min.css">
<div id='main'>
<div id="gridContainer">
<h2>Sriracha Tracker</h2>
<div class='grid' id='intakeGrid'></div>
<input id="dailyIntake" class="k-input" />
<button id="add" class='k-button'>Add</button>
</div>
<article class='chart'>
<div class='gauge' id='srirachaGauge'></div>
<h2>Avg. Daily Sriracha Intake</h2>
</article>
</div>
CSS
#main {
display: -webkit-box;
}
#gridContainer {
width: 250px;
padding-top: 5%;
padding-left: 5%;
}
#gridContainer input + button {
margin-top: 10px;
}
article {
padding-left: 5%
}
.gauge {
width: 300px;
height: 350px;
}
h2 {
font-family: arial;
margin-bottom: 5px;
}
article h2 {
position: relative;
margin-top: -70px;
margin-left: 60px;
}
p {
text-align: center;
}
JavaScript
var intakeData, avgIntake, getDate;
var srirachaMax = 20;
intakeData = new kendo.data.DataSource({
data: [{
date: '03/08/2012',
amount: 5
},
{
date: '03/09/2012',
amount: 17
},
{
date: '03/10/2012',
amount: 25
},
{
date: '03/11/2012',
amount: 8
},
{
date: '03/12/2012',
amount: 19
},
{
date: '03/13/2012',
amount: 12
}]
});
avgIntake = function() {
var inData = intakeData.data(),
sum = 0,
length, avg;
length = inData.length;
$.each(inData, function() { sum += this.amount; });
avg = sum/length;
return avg;
};
$("#intakeGrid").kendoGrid({
dataSource: intakeData,
columns: [
{ field: "date", title: "Date"},
{ field: "amount", title: "Amount" }
],
scrollable: true,
sortable: true
});
$('#srirachaGauge').kendoGauge({
theme: "blueopal",
pointer: {
value: avgIntake()
},
scale: {
majorUnit: 2,
minorUnit: .25,
startAngle: -30,
endAngle: 210,
max: srirachaMax,
labels: {
font: "10px arial, Helvetica, sans-serif",
template: "#= value# tsp."
},
ranges: [
{
from: 0,
to: 10,
color: "#00ab00" //green
}, {
from: 10,
to: 15,
color: "#d3ce37" //yellow
}, {
from: 15,
to: srirachaMax,
color: "#ae130f" //red
}
]
}
});
getDate = function() {
var today = new Date(),
dd = today.getDate(),
mm = today.getMonth()+1,
yyyy = today.getFullYear();
if(dd<10){ dd='0'+dd; }
if(mm<10){ mm='0'+mm; }
return mm+'/'+dd+'/'+yyyy;
}
$('#add').bind('click', function() {
var amt, intakeRecord, grid, gauge;
amt = parseInt($('#dailyIntake').val()) || 0;
intakeRecord = { date: getDate(),...