Commit | Line | Data |
---|---|---|
54425b14 | 1 | <!DOCTYPE html> |
8b83c6cc RK |
2 | <html> |
3 | <head> | |
fd6b8dad | 4 | <link rel="stylesheet" href="../dist/dygraph.css"> |
937029df | 5 | <title>zoom</title> |
fbd6834a | 6 | <script type="text/javascript" src="../dist/dygraph.js"></script> |
7e5ddc94 | 7 | |
8b83c6cc RK |
8 | <script type="text/javascript" src="data.js"></script> |
9 | </head> | |
10 | <body> | |
437c0979 | 11 | <h3>Click the buttons to change the zoom level or just use the normal |
447254de | 12 | click-and drag. While zoom typically works by click-and-drag, the |
c65f2303 | 13 | buttons are useful for testing.</h3> |
8b83c6cc | 14 | <h4>Window coordinates (in dates and values):</h4> |
c65f2303 | 15 | <div id="xdimensions"></div> <div id="ydimensions"></div> |
45f2c689 NN |
16 | <div style="float: right"> |
17 | <p>Zoomed: <span id="zoomed">False</span><p/> | |
18 | <p>Zoomed X: <span id="zoomedX">False</span><p/> | |
19 | <p>Zoomed Y: <span id="zoomedY">False</span><p/> | |
20 | </div> | |
8b83c6cc RK |
21 | <div id="div_g" style="width:600px; height:300px;"></div> |
22 | ||
45f2c689 | 23 | |
8b83c6cc RK |
24 | <p><b>Zoom operations:</b></p> |
25 | <p> | |
437c0979 RK |
26 | <input type="button" value="Y (3,5)" onclick="zoomGraphY(3,5)"> |
27 | <input type="button" value="Y (0,4)" onclick="zoomGraphY(0,4)"> | |
28 | <input type="button" value="Y (2,4)" onclick="zoomGraphY(2,4)"> | |
29 | <input type="button" value="Y (0,2)" onclick="zoomGraphY(0,2)"> | |
937029df | 30 | <input type="button" value="Y (0,1)" onclick="zoomGraphY(0,1)"> |
4cac8c7a | 31 | <br> <br> |
437c0979 RK |
32 | <input type="button" value="Oct 8-13" onclick="zoomGraphX(1160261979962, 1163905694248)"> |
33 | <input type="button" value="Oct 22-28" onclick="zoomGraphX(1161489164461 , 1162008465957)"> | |
34 | <input type="button" value="Oct 23-24" onclick="zoomGraphX(1161575878860, 1161660991675)"> | |
35 | <input type="button" value="Oct 26 6AM-noon" onclick="zoomGraphX(1161770537840, 1161792063332)"> | |
4cac8c7a | 36 | <br> <br> |
437c0979 | 37 | <input type="button" value="Unzoom" onclick="unzoomGraph()"> |
4cac8c7a | 38 | <br> <br> |
9ec21d0a | 39 | <input type="button" value="pan frame null" onclick="panEdgeFraction(null)"> |
965a030e RK |
40 | <input type="button" value="pan frame 0.1" onclick="panEdgeFraction(0.1)"> |
41 | <input type="button" value="pan frame 0.5" onclick="panEdgeFraction(0.5)"> | |
8b83c6cc RK |
42 | </p> |
43 | ||
44 | ||
45 | <script type="text/javascript"> | |
46 | g = new Dygraph( | |
47 | document.getElementById("div_g"), | |
48 | NoisyData, { | |
a6cc9f3e | 49 | errorBars: true, |
87f78fb2 | 50 | zoomCallback: function(minDate, maxDate, yRange) { |
f0f2aef6 | 51 | showDimensions(minDate, maxDate, yRange); |
45f2c689 | 52 | }, |
87f78fb2 DV |
53 | drawCallback: function() { |
54 | document.getElementById("zoomed").innerHTML = "" + this.isZoomed(); | |
55 | document.getElementById("zoomedX").innerHTML = "" + this.isZoomed("x"); | |
56 | document.getElementById("zoomedY").innerHTML = "" + this.isZoomed("y"); | |
45f2c689 | 57 | } |
8b83c6cc RK |
58 | } |
59 | ); | |
60 | ||
61 | // TODO(konigsberg): Implement a visualization that verifies that initial | |
62 | // displays also show correctly. | |
63 | ||
64 | // Pull an initial value for logging. | |
65 | var minDate = g.xAxisRange()[0]; | |
66 | var maxDate = g.xAxisRange()[1]; | |
67 | var minValue = g.yAxisRange()[0]; | |
68 | var maxValue = g.yAxisRange()[1]; | |
dea5c743 | 69 | showDimensions(minDate, maxDate, [minValue, maxValue]); |
8b83c6cc | 70 | |
dea5c743 | 71 | function showDimensions(minDate, maxDate, yRanges) { |
90b15133 | 72 | showXDimensions(minDate, maxDate); |
885c13e4 | 73 | showYDimensions(yRanges); |
c65f2303 RK |
74 | } |
75 | ||
76 | function showXDimensions(first, second) { | |
77 | var elem = document.getElementById("xdimensions"); | |
78 | elem.innerHTML = "dateWindow : [" + first + ", "+ second + "]"; | |
79 | } | |
80 | ||
5f3b823b | 81 | function showYDimensions(ranges) { |
c65f2303 | 82 | var elem = document.getElementById("ydimensions"); |
5f3b823b | 83 | elem.innerHTML = "valueRange : [" + ranges + "]"; |
8b83c6cc RK |
84 | } |
85 | ||
437c0979 | 86 | function zoomGraphX(minDate, maxDate) { |
c65f2303 RK |
87 | g.updateOptions({ |
88 | dateWindow: [minDate, maxDate] | |
89 | }); | |
90b15133 | 90 | showXDimensions(minDate, maxDate); |
437c0979 RK |
91 | } |
92 | ||
93 | function zoomGraphY(minValue, maxValue) { | |
c65f2303 RK |
94 | g.updateOptions({ |
95 | valueRange: [minValue, maxValue] | |
96 | }); | |
f99d913c | 97 | showYDimensions(g.yAxisRanges()); |
437c0979 RK |
98 | } |
99 | ||
100 | function unzoomGraph() { | |
c65f2303 | 101 | g.updateOptions({ |
eeab5025 RK |
102 | dateWindow: null, |
103 | valueRange: null | |
c65f2303 | 104 | }); |
8b83c6cc | 105 | } |
4cac8c7a | 106 | |
965a030e RK |
107 | function panEdgeFraction(value) { |
108 | g.updateOptions({ panEdgeFraction : value }); | |
4cac8c7a | 109 | } |
8b83c6cc RK |
110 | </script> |
111 | ||
112 | </body> | |
113 | </html> |