- Stop charts with no visible plots from crashing.
[dygraphs.git] / tests / underlay-callback.html
1 <html>
2 <head>
3 <title>Custom underlay callback</title>
4 <!--[if IE]>
5 <script type="text/javascript" src="../excanvas.js"></script>
6 <![endif]-->
7 <script type="text/javascript" src="../strftime/strftime-min.js"></script>
8 <script type="text/javascript" src="../rgbcolor/rgbcolor.js"></script>
9 <script type="text/javascript" src="../dygraph-canvas.js"></script>
10 <script type="text/javascript" src="../dygraph.js"></script>
11 <script type="text/javascript" src="data.js"></script>
12 </head>
13 <body>
14 <p>Should draw a two-colored background, split horizontally at 2.25:</p>
15 <div id="div_g" style="width:600px; height:300px;"></div>
16
17 <div id="status" style="width:100%; height:200px;"></div>
18
19 <script type="text/javascript">
20 s = document.getElementById("status");
21
22 g = new Dygraph(
23 document.getElementById("div_g"),
24 NoisyData, {
25 rollPeriod: 7,
26 showRoller: true,
27 errorBars: true,
28
29 underlayCallback: function(canvas, area, g) {
30 // Selecting a date in the middle of the graph.
31 var splitDate = new Date("2006-11-19").getTime();
32 var coords = g.toDomCoords(splitDate, 2.25);
33
34 // splitX and splitY are the coordinates on the canvas for (2006-11-19, 2.25).
35 var splitX = coords[0];
36 var splitY = coords[1];
37
38 // The drawing area doesn't start at (0, 0), it starts at (area.x, area.y).
39 // That's why we subtract them from splitX and splitY. This gives us the
40 // actual distance from the upper-left hand corder of the graph itself.
41 var leftSideWidth = splitX - area.x;
42 var rightSideWidth = area.w - leftSideWidth;
43 var topHeight = splitY - area.y;
44 var bottomHeight = area.h - topHeight;
45
46 // fillRect(x, y, width, height)
47 // Top section: y = (2.25, +Infinity)
48 // left: (x < 2006-11-19)
49 canvas.fillStyle = 'lightblue';
50 canvas.fillRect(area.x, area.y, leftSideWidth, topHeight);
51
52 // right: (x > 2006-11-19)
53 canvas.fillStyle = 'orange';
54 canvas.fillRect(splitX, area.y, rightSideWidth, topHeight);
55
56 // Bottom section: y = (-Infinity, 2.25)
57 canvas.fillStyle = 'pink';
58 canvas.fillRect(area.x, splitY, area.w, bottomHeight);
59 }
60 }
61 );
62 </script>
63 </body>
64 </html>