index.html 3.09 KB
Newer Older
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
olau@iola.dk's avatar
olau@iola.dk committed
2
<html>
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
	<title>Flot Examples: Selection and zooming</title>
	<link href="../examples.css" rel="stylesheet" type="text/css">
	<!--[if lte IE 8]><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>
	<script language="javascript" type="text/javascript" src="../../jquery.flot.selection.js"></script>
	<script type="text/javascript">

	$(function() {

		// setup plot

		function getData(x1, x2) {

			var d = [];
			for (var i = 0; i <= 100; ++i) {
				var x = x1 + i * (x2 - x1) / 100;
				d.push([x, Math.sin(x * Math.sin(x))]);
			}

			return [
				{ label: "sin(x sin(x))", data: d }
			];
		}

		var options = {
			legend: {
				show: false
			},
			series: {
				lines: {
					show: true
				},
				points: {
					show: true
				}
			},
			yaxis: {
				ticks: 10
			},
			selection: {
				mode: "xy"
			}
		};

		var startData = getData(0, 3 * Math.PI);

		var plot = $.plot($("#placeholder"), startData, options);

		// setup overview

		var overview = $.plot($("#overview"), startData, {
			legend: {
				show: false
			},
			series: {
				lines: {
					show: true,
					lineWidth: 1
				},
				shadowSize: 0
			},
			xaxis: {
				ticks: 4
			},
			yaxis: {
				ticks: 3,
				min: -2,
				max: 2
			},
			grid: {
				color: "#999"
			},
			selection: {
				mode: "xy"
			}
		});

		// now connect the two

		$("#placeholder").bind("plotselected", function (event, ranges) {

			// clamp the zooming to prevent eternal zoom

			if (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {
				ranges.xaxis.to = ranges.xaxis.from + 0.00001;
			}

			if (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {
				ranges.yaxis.to = ranges.yaxis.from + 0.00001;
			}

			// do the zooming

			plot = $.plot($("#placeholder"), getData(ranges.xaxis.from, ranges.xaxis.to),
				$.extend(true, {}, options, {
					xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to },
					yaxis: { min: ranges.yaxis.from, max: ranges.yaxis.to }
				})
			);

			// don't fire event on the overview to prevent eternal loop

			overview.setSelection(ranges, true);
		});

		$("#overview").bind("plotselected", function (event, ranges) {
			plot.setSelection(ranges);
		});
	});

	</script>
</head>
<body>

	<div id="header">
		<h2>Selection and zooming</h2>
	</div>

	<div id="content">

		<div class="demo-container">
			<div id="placeholder" style="float:left; width:700px;"></div>
			<div id="overview" style="float:right;width:160px; height:125px;"></div>
		</div>

		<p>Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.</p>

	</div>

	<div id="footer">
		Copyright &copy; 2007 - 2013 IOLA and Ole Laursen
	</div>

</body>
olau@iola.dk's avatar
olau@iola.dk committed
140
</html>