Lightweight time chart library for jquery/zepto.js.
The goal is to have a 5-6kb library, easy to download also on mobile and that works well both with jquery and zepto. I need it for a new version of trackthisfor.me.
Therea are a lot of stuff that are missing (like the legend, and a non-time xaxis), but i don't want to add a lot of bloat. If you want to have a really customized library, use flot.
The usage is really easy (and borrowed from flot for some things).
Create a div that will be the container of the chart:
<div id="chart"></div>
Then you only need to run this js code:
$(function(){
$("#chart").pista(data, options, tooltipCallback);
})
The 'data' is an array of data series in this format:
[ { name:"first",
data:[
{value:25, date:"12/14/2014"},
{value:32, date:"12/15/2014"},
{value:45, date:"12/17/2014"}]
},
{ name:"second",
data:[
{value:23, date:"12/13/2014"},
{value:26.6, date:"12/18/2014"}]
}
]
the 'options' is an object with all the options. These are the default options:
pista.defaults = {
height: 100,
width: 100,
x:{margin:15, min: null, max:null},
y:{margin:0.2, min:null, max:null},
goal: {show:false, value:23, color: mainColor},
tooltip: {show:true, maxRadius: 3},
lines: {show: true, fill: false, curve:false, strokeColor: [mainColor, secondaryColor], strokeWidth: 4, fillOpacity: 0.7, fillColor:[mainColor, secondaryColor]},
points:{show: true, strokeWidth:3.5, strokeColor:[mainColor, secondaryColor]},
labels:{
lineWidth: 0.3,
fontSize: 11,
x:{number: 7, show:true, color:"#858585", grid:false },
y:{number:4, show:true, color:"#858585", grid:true}}
};
- y.margin is a float number.
- x.min, x.max are in the MM/dd/yyyy format.
- the goal is a simple horizontal line that will be drawn on the goal.value
- tooltip.maxRadius is the max distance of the mouse from the point to call the tooltipCallback.
- every **Color object (strokeColor, fillColor...) is an array whose length is the number of data series.
- lines.curve draws the lines in a smoother way with the canvas quadraticCurveTo function.
the 'tooltipCallback' is a callback called everytime the mouse moves over the chart. An example of tooltipCallback can be this:
function(tooltip){
if(tooltip.found){
tool=$("<div id='tooltip'>");
tool.appendTo("body");
tool.html(tooltip.point.value);
tool.css({top:tooltip.mouse.pageY-40, left: tooltip.mouse.pageX})
}else{
$("#tooltip").remove();
}
}
the t object is composed by:
t = {
found: false
point: { x: canvas_x, y: canvas_y, date: 'date in millis', value: 'the value of the point'}
mouse: { pageX: 'x of the mouse (in the document)', pageY: 'y of the mouse (in the document)'}
}