source: Dev/branches/jQueryUI/client/d3/examples/zoom-pan/zoom-pan.html @ 249

Last change on this file since 249 was 249, checked in by hendrikvanantwerpen, 13 years ago

This one's for Subversion, because it's so close...

First widget (stripped down sequencer).
Seperated client and server code in two direcotry trees.

File size: 2.5 KB
Line 
1<!DOCTYPE html>
2<html>
3  <head>
4    <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
5    <title>Zoom + Pan</title>
6    <script type="text/javascript" src="../../d3.js"></script>
7    <script type="text/javascript" src="../../d3.behavior.js"></script>
8    <style type="text/css">
9
10svg {
11  font: 10px sans-serif;
12  shape-rendering: crispEdges;
13}
14
15    </style>
16  </head>
17  <body>
18    <script type="text/javascript">
19
20var size = [710, 500], // width height
21    padding = [4, 4, 20, 40], // top right bottom left
22    tx = function(d) { return "translate(" + x(d) + ",0)"; },
23    ty = function(d) { return "translate(0," + y(d) + ")"; },
24    stroke = function(d) { return d ? "#ccc" : "#666"; };
25
26// x-scale (1.42 = 710/500)
27var x = d3.scale.linear()
28    .domain([-1.42, +1.42])
29    .range([0, size[0]]);
30
31// y-scale (inverted domain)
32var y = d3.scale.linear()
33    .domain([+1.00, -1.00])
34    .range([0, size[1]]);
35
36var svg = d3.select("body").append("svg:svg")
37    .attr("width", size[0] + padding[3] + padding[1])
38    .attr("height", size[1] + padding[0] + padding[2])
39    .attr("pointer-events", "all")
40  .append("svg:g")
41    .attr("transform", "translate(" + padding[3] + "," + padding[0] + ")")
42    .call(d3.behavior.zoom().on("zoom", redraw));
43
44svg.append("svg:rect")
45    .attr("width", size[0])
46    .attr("height", size[1])
47    .attr("stroke", stroke)
48    .attr("fill", "none");
49
50redraw();
51
52function redraw() {
53  if (d3.event) d3.event.transform(x, y);
54
55  var fx = x.tickFormat(10),
56      fy = y.tickFormat(10);
57
58  // Regenerate x-ticks

59  var gx = svg.selectAll("g.x")
60      .data(x.ticks(10), String)
61      .attr("transform", tx);
62
63  gx.select("text")
64      .text(fx);
65
66  var gxe = gx.enter().insert("svg:g", "rect")
67      .attr("class", "x")
68      .attr("transform", tx);
69
70  gxe.append("svg:line")
71      .attr("stroke", stroke)
72      .attr("y1", 0)
73      .attr("y2", size[1]);
74
75  gxe.append("svg:text")
76      .attr("y", size[1])
77      .attr("dy", "1em")
78      .attr("text-anchor", "middle")
79      .text(fx);
80
81  gx.exit().remove();
82
83  // Regenerate y-ticks

84  var gy = svg.selectAll("g.y")
85      .data(y.ticks(10), String)
86      .attr("transform", ty);
87
88  gy.select("text")
89      .text(fy);
90
91  var gye = gy.enter().insert("svg:g", "rect")
92      .attr("class", "y")
93      .attr("transform", ty);
94
95  gye.append("svg:line")
96      .attr("stroke", stroke)
97      .attr("x1", 0)
98      .attr("x2", size[0]);
99
100  gye.append("svg:text")
101      .attr("x", -3)
102      .attr("dy", ".35em")
103      .attr("text-anchor", "end")
104      .text(fy);
105
106  gy.exit().remove();
107
108}
109
110    </script>
111  </body>
112</html>
Note: See TracBrowser for help on using the repository browser.