Check that setRow is not negative, fixes #644. (#773)
[dygraphs.git] / gallery / edge-padding.js
1 /*global Gallery,Dygraph,data */
2 Gallery.register(
3 'edge-padding',
4 {
5 name: 'Edge Padding',
6 title: 'Graph edge padding and axis position',
7 setup: function(parent) {
8 parent.innerHTML = (
9 "<p>" +
10 " <b>Mode:</b>" +
11 " <input type='radio' name='mode'>use {x,y}RangePad</input>" +
12 " <input type='radio' name='mode'>original</input>" +
13 " <br /><b>Settings:</b>" +
14 " <input type='checkbox' id='yrange'>valueRange=[-2,2]</input>" +
15 "</p>" +
16 "<div id='demodiv'></div>"
17 );
18 },
19 run: function() {
20 var parent = document.getElementById("demodiv");
21
22 var graphs = [];
23 var nrows = 50;
24
25 for (var oy = -2; oy <= 2; ++oy) {
26 for (var ox = -1; ox <= 1; ++ox) {
27 var gdiv = document.createElement('div');
28 gdiv.style.display = 'inline-block';
29 gdiv.style.margin = '2px';
30 parent.appendChild(gdiv);
31
32 var data = [];
33 for (var row = 0; row < nrows; ++row) {
34 var x = row * 5 / (nrows - 1);
35 data.push([ox * 2.5 + x - 2.5,
36 oy + Math.sin(x),
37 oy + Math.round(Math.cos(x))]);
38 }
39
40 var g = new Dygraph(gdiv, data, {
41 labels: ['x', 'A', 'B'],
42 labelsDivWidth: 100,
43 gridLineColor: '#ccc',
44 includeZero: true,
45 width: 250,
46 height: 130
47 });
48 graphs.push(g);
49 }
50 parent.appendChild(document.createElement('br'));
51 }
52
53 var updateGraphOpts = function(opts) {
54 for (var i = 0; i < graphs.length; ++i) {
55 graphs[i].updateOptions(opts);
56 }
57 };
58
59 var mode = document.getElementsByName('mode');
60 mode[0].onchange = function() {
61 updateGraphOpts({
62 avoidMinZero: false,
63 xRangePad: 3,
64 yRangePad: 10,
65 drawAxesAtZero: true});
66 };
67 mode[1].onchange = function() {
68 updateGraphOpts({
69 avoidMinZero: true,
70 xRangePad: 0,
71 yRangePad: null,
72 drawAxesAtZero: false});
73 };
74 mode[0].checked = true;
75 mode[0].onchange();
76
77 var yrange = document.getElementById('yrange');
78 yrange.onchange = function(ev) {
79 updateGraphOpts({
80 valueRange: ev.target.checked ? [-2, 2] : null});
81 };
82
83 }
84 });