dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
88 lines (76 loc) • 2.99 kB
JavaScript
/*global Gallery,Dygraph,data */
/*global NoisyData */
//galleryActive=false
Gallery.register(
'callbacks',
{
name: "Callbacks",
title: "Hover, click and zoom to test the callbacks.",
setup: function(parent) {
parent.innerHTML =
"<div id='div_g' style='width:600px; height:300px;'></div>" +
"<button id='clear'>Clear list<Button>" +
"<input type='checkbox' id='highlight' checked><label for='highlight'> Show 'highlight' events</label>" +
"<input type='checkbox' id='unhighlight' checked><label for='unhighlight'>Show 'unhighlight' events</label>" +
"<input type='checkbox' id='showLabels' checked>" +
"<label for='showLabels'> Show Labels on highlight</label>" +
"<div id='status' style='width:100%; height:200px;'></div>";
},
run: function() {
var g = null;
var showLabels = document.getElementById('showLabels');
showLabels.onclick = function() {
g.updateOptions({showLabelsOnHighlight: showLabels.checked});
};
var s = document.getElementById("status");
var clearStatus = function() {
s.innerHTML = '';
};
document.getElementById('clear').onclick = clearStatus;
var pts_info = function(e, x, pts, row) {
var str = "(" + x + ") ";
for (var i = 0; i < pts.length; i++) {
var p = pts[i];
if (i) str += ", ";
str += p.name + ": " + p.yval;
}
var x = e.offsetX;
var y = e.offsetY;
var dataXY = g.toDataCoords(x, y);
str += ", (" + x + ", " + y + ")";
str += " -> (" + dataXY[0] + ", " + dataXY[1] + ")";
str += ", row #"+row;
return str;
};
g = new Dygraph(
document.getElementById("div_g"),
NoisyData, {
rollPeriod: 7,
showRoller: true,
errorBars: true,
highlightCallback: function(e, x, pts, row) {
if (document.getElementById('highlight').checked) {
s.innerHTML += "<b>Highlight</b> " + pts_info(e,x,pts,row) + "<br />";
}
},
unhighlightCallback: function(e) {
if (document.getElementById('unhighlight').checked) {
s.innerHTML += "<b>Unhighlight</b><br />";
}
},
clickCallback: function(e, x, pts) {
s.innerHTML += "<b>Click</b> " + pts_info(e,x,pts) + "<br />";
},
pointClickCallback: function(e, p) {
s.innerHTML += "<b>Point Click</b> " + p.name + ": " + p.x + "<br />";
},
zoomCallback: function(minX, maxX, yRanges) {
s.innerHTML += "<b>Zoom</b> [" + minX + ", " + maxX + ", [" + yRanges + "]]<br />";
},
drawCallback: function(g) {
s.innerHTML += "<b>Draw</b> [" + g.xAxisRange() + "]<br />";
}
}
);
}
});