94 lines
3.8 KiB
HTML
94 lines
3.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Flot Examples</title>
|
|
<link href="layout.css" rel="stylesheet" type="text/css"></link>
|
|
<!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]-->
|
|
<script language="javascript" type="text/javascript" src="../jquery.js"></script>
|
|
<script language="javascript" type="text/javascript" src="../jquery.flot.js"></script>
|
|
</head>
|
|
<body>
|
|
<h1>Flot Examples</h1>
|
|
|
|
<div id="placeholder" style="width:600px;height:300px;"></div>
|
|
|
|
<p>With multiple axes, you sometimes need to interact with them. A
|
|
simple way to do this is to draw the plot, deduce the axis
|
|
placements and insert a couple of divs on top to catch events.
|
|
Try clicking an axis.</p>
|
|
|
|
<p id="click"></p>
|
|
|
|
<script id="source" language="javascript" type="text/javascript">
|
|
$(function () {
|
|
function generate(start, end, fn) {
|
|
var res = [];
|
|
for (var i = 0; i <= 100; ++i) {
|
|
var x = start + i / 100 * (end - start);
|
|
res.push([x, fn(x)]);
|
|
}
|
|
return res;
|
|
}
|
|
|
|
var data = [
|
|
{ data: generate(0, 10, function (x) { return Math.sqrt(x)}), xaxis: 1, yaxis:1 },
|
|
{ data: generate(0, 10, function (x) { return Math.sin(x)}), xaxis: 1, yaxis:2 },
|
|
{ data: generate(0, 10, function (x) { return Math.cos(x)}), xaxis: 1, yaxis:3 },
|
|
{ data: generate(2, 10, function (x) { return Math.tan(x)}), xaxis: 2, yaxis: 4 }
|
|
];
|
|
|
|
var plot = $.plot($("#placeholder"),
|
|
data,
|
|
{
|
|
xaxes: [
|
|
{ position: 'bottom' },
|
|
{ position: 'top'}
|
|
],
|
|
yaxes: [
|
|
{ position: 'left' },
|
|
{ position: 'left' },
|
|
{ position: 'right' },
|
|
{ position: 'left' }
|
|
]
|
|
});
|
|
|
|
// now for each axis, create a div
|
|
|
|
function getBoundingBoxForAxis(plot, axis) {
|
|
var left = axis.box.left, top = axis.box.top,
|
|
right = left + axis.box.width, bottom = top + axis.box.height;
|
|
|
|
// some ticks may stick out, enlarge the box to encompass all ticks
|
|
var cls = axis.direction + axis.n + 'Axis';
|
|
plot.getPlaceholder().find('.' + cls + ' .tickLabel').each(function () {
|
|
var pos = $(this).position();
|
|
left = Math.min(pos.left, left);
|
|
top = Math.min(pos.top, top);
|
|
right = Math.max(Math.round(pos.left) + $(this).outerWidth(), right);
|
|
bottom = Math.max(Math.round(pos.top) + $(this).outerHeight(), bottom);
|
|
});
|
|
|
|
return { left: left, top: top, width: right - left, height: bottom - top };
|
|
}
|
|
|
|
$.each(plot.getXAxes().concat(plot.getYAxes()), function (i, axis) {
|
|
var box = getBoundingBoxForAxis(plot, axis);
|
|
|
|
$('<div class="axisTarget" style="position:absolute;left:' + box.left + 'px;top:' + box.top + 'px;width:' + box.width + 'px;height:' + box.height + 'px"></div>')
|
|
.data('axis.direction', axis.direction)
|
|
.data('axis.n', axis.n)
|
|
.css({ backgroundColor: "#f00", opacity: 0, cursor: "pointer" })
|
|
.appendTo(plot.getPlaceholder())
|
|
.hover(
|
|
function () { $(this).css({ opacity: 0.10 }) },
|
|
function () { $(this).css({ opacity: 0 }) }
|
|
)
|
|
.click(function () {
|
|
$("#click").text("You clicked the " + axis.direction + axis.n + "axis!")
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|