root / hci / trunk / eneraptor-web-app / web-app / js / flot / examples / zooming.html @ 11
History | View | Annotate | Download (3.35 KB)
1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
---|---|
2 |
<html>
|
3 |
<head>
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
5 |
<title>Flot Examples</title> |
6 |
<link href="layout.css" rel="stylesheet" type="text/css"></link> |
7 |
<!--[if IE]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]-->
|
8 |
<script language="javascript" type="text/javascript" src="../jquery.js"></script> |
9 |
<script language="javascript" type="text/javascript" src="../jquery.flot.js"></script> |
10 |
<script language="javascript" type="text/javascript" src="../jquery.flot.selection.js"></script> |
11 |
</head>
|
12 |
<body>
|
13 |
<h1>Flot Examples</h1> |
14 |
|
15 |
<div style="float:left"> |
16 |
<div id="placeholder" style="width:500px;height:300px"></div> |
17 |
</div>
|
18 |
|
19 |
<div id="miniature" style="float:left;margin-left:20px;margin-top:50px"> |
20 |
<div id="overview" style="width:166px;height:100px"></div> |
21 |
|
22 |
<p id="overviewLegend" style="margin-left:10px"></p> |
23 |
</div>
|
24 |
|
25 |
<p style="clear:left"> The selection support makes |
26 |
pretty advanced zooming schemes possible. With a few lines of code, |
27 |
the small overview plot to the right has been connected to the large |
28 |
plot. Try selecting a rectangle on either of them.</p>
|
29 |
|
30 |
<script id="source"> |
31 |
$(function () {
|
32 |
// setup plot
|
33 |
function getData(x1, x2) {
|
34 |
var d = [];
|
35 |
for (var i = 0; i <= 100; ++i) {
|
36 |
var x = x1 + i * (x2 - x1) / 100;
|
37 |
d.push([x, Math.sin(x * Math.sin(x))]);
|
38 |
}
|
39 |
|
40 |
return [
|
41 |
{ label: "sin(x sin(x))", data: d }
|
42 |
];
|
43 |
}
|
44 |
|
45 |
var options = {
|
46 |
legend: { show: false },
|
47 |
series: {
|
48 |
lines: { show: true },
|
49 |
points: { show: true }
|
50 |
},
|
51 |
yaxis: { ticks: 10 },
|
52 |
selection: { mode: "xy" }
|
53 |
};
|
54 |
|
55 |
var startData = getData(0, 3 * Math.PI);
|
56 |
|
57 |
var plot = $.plot($("#placeholder"), startData, options);
|
58 |
|
59 |
// setup overview
|
60 |
var overview = $.plot($("#overview"), startData, {
|
61 |
legend: { show: true, container: $("#overviewLegend") },
|
62 |
series: {
|
63 |
lines: { show: true, lineWidth: 1 },
|
64 |
shadowSize: 0
|
65 |
},
|
66 |
xaxis: { ticks: 4 },
|
67 |
yaxis: { ticks: 3, min: -2, max: 2 },
|
68 |
grid: { color: "#999" },
|
69 |
selection: { mode: "xy" }
|
70 |
});
|
71 |
|
72 |
// now connect the two
|
73 |
|
74 |
$("#placeholder").bind("plotselected", function (event, ranges) {
|
75 |
// clamp the zooming to prevent eternal zoom
|
76 |
if (ranges.xaxis.to - ranges.xaxis.from < 0.00001)
|
77 |
ranges.xaxis.to = ranges.xaxis.from + 0.00001;
|
78 |
if (ranges.yaxis.to - ranges.yaxis.from < 0.00001)
|
79 |
ranges.yaxis.to = ranges.yaxis.from + 0.00001;
|
80 |
|
81 |
// do the zooming
|
82 |
plot = $.plot($("#placeholder"), getData(ranges.xaxis.from, ranges.xaxis.to),
|
83 |
$.extend(true, {}, options, {
|
84 |
xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
|
85 |
yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
|
86 |
}));
|
87 |
|
88 |
// don't fire event on the overview to prevent eternal loop
|
89 |
overview.setSelection(ranges, true);
|
90 |
});
|
91 |
$("#overview").bind("plotselected", function (event, ranges) {
|
92 |
plot.setSelection(ranges);
|
93 |
});
|
94 |
});
|
95 |
</script>
|
96 |
|
97 |
</body>
|
98 |
</html>
|