X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=auto_tests%2Ftests%2Fmultiple_axes.js;h=05e93c75526ad186814de9fadaa72072df27c66f;hb=5469113bc1d7bb38c9214e709c87598b7f6ef256;hp=12c9c4274778db9f9821b1ecd76f3209d237e575;hpb=f6828af01b3fe5a0a970bc5e7d9400ac97f40305;p=dygraphs.git diff --git a/auto_tests/tests/multiple_axes.js b/auto_tests/tests/multiple_axes.js index 12c9c42..05e93c7 100644 --- a/auto_tests/tests/multiple_axes.js +++ b/auto_tests/tests/multiple_axes.js @@ -24,6 +24,17 @@ function getLegend() { return legend.textContent; } +// returns all text in tags w/ a given css class, sorted. +function getClassTexts(css_class) { + var texts = []; + var els = document.getElementsByClassName(css_class); + for (var i = 0; i < els.length; i++) { + texts[i] = els[i].textContent; + } + texts.sort(); + return texts; +} + MultipleAxesTestCase.getData = function() { var data = []; for (var i = 1; i <= 100; i++) { @@ -45,7 +56,7 @@ MultipleAxesTestCase.getData = function() { MultipleAxesTestCase.prototype.testBasicMultipleAxes = function() { var data = MultipleAxesTestCase.getData(); - g = new Dygraph( + var g = new Dygraph( document.getElementById("graph"), data, { @@ -71,7 +82,7 @@ MultipleAxesTestCase.prototype.testBasicMultipleAxes = function() { MultipleAxesTestCase.prototype.testNewStylePerAxisOptions = function() { var data = MultipleAxesTestCase.getData(); - g = new Dygraph( + var g = new Dygraph( document.getElementById("graph"), data, { @@ -101,7 +112,7 @@ MultipleAxesTestCase.prototype.testMultiAxisLayout = function() { var el = document.getElementById("graph"); - g = new Dygraph( + var g = new Dygraph( el, data, { @@ -133,3 +144,150 @@ MultipleAxesTestCase.prototype.testMultiAxisLayout = function() { // assertTrue((child.offsetTop + child.offsetHeight) <= 350); } }; + +MultipleAxesTestCase.prototype.testTwoAxisVisibility = function() { + var data = []; + data.push([0,0,0]); + data.push([1,2,2000]); + data.push([2,4,1000]); + + var g = new Dygraph( + document.getElementById("graph"), + data, + { + labels: [ 'X', 'bar', 'zot' ], + 'zot': { + axis: { + labelsKMB: true + } + } + } + ); + + assertTrue(document.getElementsByClassName("dygraph-axis-label-y").length > 0); + assertTrue(document.getElementsByClassName("dygraph-axis-label-y2").length > 0); + + g.setVisibility(0, false); + + assertTrue(document.getElementsByClassName("dygraph-axis-label-y").length > 0); + assertTrue(document.getElementsByClassName("dygraph-axis-label-y2").length > 0); + + g.setVisibility(0, true); + g.setVisibility(1, false); + + assertTrue(document.getElementsByClassName("dygraph-axis-label-y").length > 0); + assertTrue(document.getElementsByClassName("dygraph-axis-label-y2").length > 0); +}; + +// verifies that all four chart labels (title, x-, y-, y2-axis label) can be +// used simultaneously. +MultipleAxesTestCase.prototype.testMultiChartLabels = function() { + var data = MultipleAxesTestCase.getData(); + + var el = document.getElementById("graph"); + el.style.border = '1px solid black'; + el.style.marginLeft = '200px'; + el.style.marginTop = '200px'; + + var g = new Dygraph( + el, + data, + { + labels: [ 'Date', 'Y1', 'Y2', 'Y3', 'Y4' ], + width: 640, + height: 350, + 'Y3': { + axis: { } + }, + 'Y4': { + axis: 'Y3' // use the same y-axis as series Y3 + }, + xlabel: 'x-axis', + ylabel: 'y-axis', + y2label: 'y2-axis', + title: 'Chart title' + } + ); + + assertEquals(["Chart title", "x-axis", "y-axis", "y2-axis"], + getClassTexts("dygraph-label")); + assertEquals(["Chart title"], getClassTexts("dygraph-title")); + assertEquals(["x-axis"], getClassTexts("dygraph-xlabel")); + assertEquals(["y-axis"], getClassTexts("dygraph-ylabel")); + assertEquals(["y2-axis"], getClassTexts("dygraph-y2label")); + + // TODO(danvk): check relative positioning here: title on top, y left of y2. +}; + +// Check that a chart w/o a secondary y-axis will not get a y2label, even if one +// is specified. +MultipleAxesTestCase.prototype.testNoY2LabelWithoutSecondaryAxis = function() { + var g = new Dygraph( + document.getElementById("graph"), + MultipleAxesTestCase.getData(), + { + labels: [ 'Date', 'Y1', 'Y2', 'Y3', 'Y4' ], + width: 640, + height: 350, + xlabel: 'x-axis', + ylabel: 'y-axis', + y2label: 'y2-axis', + title: 'Chart title' + } + ); + + assertEquals(["Chart title", "x-axis", "y-axis"], + getClassTexts("dygraph-label")); + assertEquals(["Chart title"], getClassTexts("dygraph-title")); + assertEquals(["x-axis"], getClassTexts("dygraph-xlabel")); + assertEquals(["y-axis"], getClassTexts("dygraph-ylabel")); + assertEquals([], getClassTexts("dygraph-y2label")); +}; + +MultipleAxesTestCase.prototype.testValueRangePerAxisOptions = function() { + var data = MultipleAxesTestCase.getData(); + + g = new Dygraph( + document.getElementById("graph"), + data, + { + labels: [ 'Date', 'Y1', 'Y2', 'Y3', 'Y4' ], + 'Y3': { + axis: { + } + }, + 'Y4': { + axis: 'Y3' // use the same y-axis as series Y3 + }, + axes: { + y: { + valueRange: [40, 70] + }, + y2: { + // set axis-related properties here + labelsKMB: true + } + }, + ylabel: 'Primary y-axis', + y2label: 'Secondary y-axis', + yAxisLabelWidth: 60 + } + ); + assertEquals(["40", "45", "50", "55", "60", "65"], getYLabelsForAxis("1")); + assertEquals(["900K","1.1M","1.3M","1.5M","1.7M","1.9M"], getYLabelsForAxis("2")); + + g.updateOptions( + { + axes: { + y: { + valueRange: [40, 80] + }, + y2: { + valueRange: [1e6, 1.2e6] + } + } + } + ); + assertEquals(["40", "45", "50", "55", "60", "65", "70", "75"], getYLabelsForAxis("1")); + assertEquals(["1M", "1.02M", "1.05M", "1.08M", "1.1M", "1.13M", "1.15M", "1.18M"], getYLabelsForAxis("2")); +}; \ No newline at end of file