From: Robert Konigsberg Date: Mon, 31 Dec 2012 20:11:11 +0000 (-0500) Subject: Merge branch 'master' of github.com:kberg/dygraphs into axis-label-font-size X-Git-Tag: v1.0.0~132^2~5 X-Git-Url: https://adrianiainlam.tk/git/?a=commitdiff_plain;h=7ff98630ca7cc2760e2115ad2372053184d3e717;hp=-c;p=dygraphs.git Merge branch 'master' of github.com:kberg/dygraphs into axis-label-font-size Conflicts: auto_tests/tests/axis_labels.js --- 7ff98630ca7cc2760e2115ad2372053184d3e717 diff --combined auto_tests/tests/Util.js index 66daa7f,3eb59e3..08cc88a --- a/auto_tests/tests/Util.js +++ b/auto_tests/tests/Util.js @@@ -58,11 -58,36 +58,23 @@@ Util.getLegend = function(parent) }; /** - * Assert that all the elements in 'parent' with class 'className' is - * the expected font size. + * Assert that all elements have a certain style property. */ -Util.assertFontSizes = function(parent, className, expectedSize) { - var expectedSizePx = expectedSize + "px"; - var labels = parent.getElementsByClassName(className); - assertTrue(labels.length > 0); - - // window.getComputedStyle is apparently compatible with all browsers - // (IE first became compatible with IE9.) - // If this test fails on earlier browsers, then enable something like this, - // because the font size is set by the parent div. - // if (!window.getComputedStyle) { - // fontSize = label.parentElement.style.fontSize; - // } - for (var idx = 0; idx < labels.length; idx++) { - var label = labels[idx]; - var fontSize = window.getComputedStyle(label).fontSize; - assertEquals(expectedSizePx, fontSize); - } +Util.assertStyleOfChildren = function(selector, property, expectedValue) { + assertTrue(selector.length > 0); + $.each(selector, function(idx, child) { + assertEquals(expectedValue, $(child).css(property)); + }); }; + + + /** + * Takes in an array of strings and returns an array of floats. + */ + Util.makeNumbers = function(ary) { + var ret = []; + for (var i = 0; i < ary.length; i++) { + ret.push(parseFloat(ary[i])); + } + return ret; + }; diff --combined auto_tests/tests/axis_labels.js index 7020475,56ddf3d..fabe1d2 --- a/auto_tests/tests/axis_labels.js +++ b/auto_tests/tests/axis_labels.js @@@ -14,21 -14,10 +14,10 @@@ AxisLabelsTestCase.prototype.tearDown AxisLabelsTestCase.simpleData = "X,Y,Y2\n" + - "0,-1,0.25\n" + - "1,0,0.5\n" + - "2,1,0.9\n" + - "3,0,0.7\n"; - - /** - * Takes in an array of strings and returns an array of floats. - */ - function makeNumbers(ary) { - var ret = []; - for (var i = 0; i < ary.length; i++) { - ret.push(parseFloat(ary[i])); - } - return ret; - } + "0,-1,.5\n" + + "1,0,.7\n" + + "2,1,.4\n" + + "3,0,.98\n"; AxisLabelsTestCase.prototype.kCloseFloat = 1.0e-10; @@@ -85,18 -74,18 +74,18 @@@ AxisLabelsTestCase.prototype.testSmallR var graph = document.getElementById("graph"); var g = new Dygraph(graph, data, opts); - assertEqualsDelta(makeNumbers(["-0.1","-0.08","-0.06","-0.04","-0.02","0","0.02","0.04","0.06","0.08"]), - makeNumbers(Util.getYLabels()), this.kCloseFloat); + assertEqualsDelta([-0.1, -0.08, -0.06, -0.04, -0.02, 0, 0.02, 0.04, 0.06, 0.08], + Util.makeNumbers(Util.getYLabels()), this.kCloseFloat); opts.valueRange = [-0.05, 0.05]; g.updateOptions(opts); - // TODO(danvk): why '1.00e-2' and not '0.01'? - assertEquals(makeNumbers(["-0.05","-0.04","-0.03","-0.02","-0.01","0","1.00e-2","0.02","0.03","0.04"]), - makeNumbers(Util.getYLabels())); + assertEquals([-0.05, -0.04, -0.03, -0.02, -0.01, 0, 0.01, 0.02, 0.03, 0.04], + Util.makeNumbers(Util.getYLabels())); opts.valueRange = [-0.01, 0.01]; g.updateOptions(opts); - assertEquals(makeNumbers(["-0.01","-8.00e-3","-6.00e-3","-4.00e-3","-2.00e-3","0","2.00e-3","4.00e-3","6.00e-3","8.00e-3"]), makeNumbers(Util.getYLabels())); + assertEquals([-0.01, -8.00e-3, -6.00e-3, -4.00e-3, -2.00e-3, 0, 2.00e-3, 4.00e-3, 6.00e-3, 8.00e-3], + Util.makeNumbers(Util.getYLabels())); g.setSelection(1); assertEquals('1: Y:0', Util.getLegend()); @@@ -580,52 -569,72 +569,52 @@@ AxisLabelsTestCase.prototype.testInclud AxisLabelsTestCase.prototype.testAxisLabelFontSize = function() { var graph = document.getElementById("graph"); var g = new Dygraph(graph, AxisLabelsTestCase.simpleData, {}); - var assertSize = function(className, size) { - var sizePx = size + "px"; - var labels = graph.getElementsByClassName(className); - assertTrue(labels.length > 0); - - // window.getComputedStyle is apparently compatible with all browsers - // (IE first became compatible with IE9.) - // If this test fails on earlier browsers, then enable something like this, - // because the font size is set by the parent div. - // if (!window.getComputedStyle) { - // fontSize = label.parentElement.style.fontSize; - // } - for (var idx = 0; idx < labels.length; idx++) { - var label = labels[idx]; - var fontSize = window.getComputedStyle(label).fontSize; - assertEquals(sizePx, fontSize); - } - } // Be sure we're dealing with a 14-point default. assertEquals(14, Dygraph.DEFAULT_ATTRS.axisLabelFontSize); - assertSize("dygraph-axis-label-x", 14); - assertSize("dygraph-axis-label-y", 14); + var assertFontSize = function(selector, expected) { + Util.assertStyleOfChildren(selector, "font-size", expected); + } + + assertFontSize($(".dygraph-axis-label-x"), "14px"); + assertFontSize($(".dygraph-axis-label-y") , "14px"); g.updateOptions({ axisLabelFontSize : 8}); - assertSize("dygraph-axis-label-x", 8); - assertSize("dygraph-axis-label-y", 8); - -/* - Enable these tests when https://code.google.com/p/dygraphs/issues/detail?id=126 - is fixed. + assertFontSize($(".dygraph-axis-label-x"), "8px"); + assertFontSize($(".dygraph-axis-label-y"), "8px"); g.updateOptions({ axisLabelFontSize : null, - axes : { + axes : { x : { axisLabelFontSize : 5 }, - } - }); + } + }); - assertSize("dygraph-axis-label-x", 5); - assertSize("dygraph-axis-label-y", 14); + assertFontSize($(".dygraph-axis-label-x"), "5px"); + assertFontSize($(".dygraph-axis-label-y"), "14px"); g.updateOptions({ - axisLabelFontSize : null, - axes : { - y : { axisLabelFontSize : 3 }, - } - }); + axes : { + y : { axisLabelFontSize : 20 }, + } + }); - assertSize("dygraph-axis-label-x", 5); - assertSize("dygraph-axis-label-y", 3); + assertFontSize($(".dygraph-axis-label-x"), "5px"); + assertFontSize($(".dygraph-axis-label-y"), "20px"); g.updateOptions({ - series : { + series : { Y2 : { axis : "y2" } // copy y2 series to y2 axis. - }, - axes : { - y2 : { axisLabelFontSize : 8 }, - } - }); - - assertSize("dygraph-axis-label-x", 5); - assertSize("dygraph-axis-label-y", 3); - assertSize("dygraph-axis-label-y2", 8); -*/ + }, + axes : { + y2 : { axisLabelFontSize : 12 }, + } + }); + + assertFontSize($(".dygraph-axis-label-x"), "5px"); + assertFontSize($(".dygraph-axis-label-y1"), "20px"); + assertFontSize($(".dygraph-axis-label-y2"), "12px"); } AxisLabelsTestCase.prototype.testAxisLabelFontSizeNull = function() { @@@ -635,82 -644,9 +624,82 @@@ axisLabelFontSize: null }); + var assertFontSize = function(selector, expected) { + Util.assertStyleOfChildren(selector, "font-size", expected); + } + + // Be sure we're dealing with a 14-point default. + assertEquals(14, Dygraph.DEFAULT_ATTRS.axisLabelFontSize); + + assertFontSize($(".dygraph-axis-label-x"), "14px"); + assertFontSize($(".dygraph-axis-label-y"), "14px"); +} + +AxisLabelsTestCase.prototype.testAxisLabelColor = function() { + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, AxisLabelsTestCase.simpleData, {}); + + // Be sure we're dealing with a black default. + assertEquals("black", Dygraph.DEFAULT_ATTRS.axisLabelColor); + + var assertColor = function(selector, expected) { + Util.assertStyleOfChildren(selector, "color", expected); + } + + assertColor($(".dygraph-axis-label-x"), "rgb(0, 0, 0)"); + assertColor($(".dygraph-axis-label-y"), "rgb(0, 0, 0)"); + + g.updateOptions({ axisLabelColor : "red"}); + assertColor($(".dygraph-axis-label-x"), "rgb(255, 0, 0)"); + assertColor($(".dygraph-axis-label-y"), "rgb(255, 0, 0)"); + + g.updateOptions({ + axisLabelColor : null, + axes : { + x : { axisLabelColor : "blue" }, + } + }); + + assertColor($(".dygraph-axis-label-x"), "rgb(0, 0, 255)"); + assertColor($(".dygraph-axis-label-y"), "rgb(0, 0, 0)"); + + g.updateOptions({ + axes : { + y : { axisLabelColor : "green" }, + } + }); + + assertColor($(".dygraph-axis-label-x"), "rgb(0, 0, 255)"); + assertColor($(".dygraph-axis-label-y"), "rgb(0, 128, 0)"); + + g.updateOptions({ + series : { + Y2 : { axis : "y2" } // copy y2 series to y2 axis. + }, + axes : { + y2 : { axisLabelColor : "yellow" }, + } + }); + + assertColor($(".dygraph-axis-label-x"), "rgb(0, 0, 255)"); + assertColor($(".dygraph-axis-label-y1"), "rgb(0, 128, 0)"); + assertColor($(".dygraph-axis-label-y2"), "rgb(255, 255, 0)"); +} + +AxisLabelsTestCase.prototype.testAxisLabelColorNull = function() { + var graph = document.getElementById("graph"); + var g = new Dygraph(graph, AxisLabelsTestCase.simpleData, + { + axisLabelColor: null + }); + + var assertColor = function(selector, expected) { + Util.assertStyleOfChildren(selector, "color", expected); + } + // Be sure we're dealing with a 14-point default. assertEquals(14, Dygraph.DEFAULT_ATTRS.axisLabelFontSize); - Util.assertFontSizes(graph, "dygraph-axis-label-x", 14); - Util.assertFontSizes(graph, "dygraph-axis-label-y", 14); + assertColor($(".dygraph-axis-label-x"), "rgb(0, 0, 0)"); + assertColor($(".dygraph-axis-label-y"), "rgb(0, 0, 0)"); } diff --combined dygraph.js index d7c558b,1ac7d43..4c8c65d --- a/dygraph.js +++ b/dygraph.js @@@ -598,9 -598,6 +598,9 @@@ Dygraph.prototype.getOption = function( return this.attr_(name, opt_seriesName); }; +Dygraph.prototype.getOptionForAxis = function(name, axis) { + return this.attributes_.getForAxis(name, axis); +} /** * @private * @param String} axis The name of the axis (i.e. 'x', 'y' or 'y2') @@@ -2455,23 -2452,13 +2455,13 @@@ Dygraph.prototype.computeYAxes_ = funct this.axes_[axis] = opts; } - // TODO(konigsberg): REMOVE THIS SILLINESS this should just come from DygraphOptions. - // TODO(konigsberg): Add tests for all of these. - - // all options which could be applied per-axis: - var axisOptions = [ - 'valueRange', - 'pixelsPerYLabel', - 'axisLabelFontSize', - ]; - - // Copy global axis options over to the first axis. - for (i = 0; i < axisOptions.length; i++) { - var k = axisOptions[i]; - v = this.attr_(k); - if (v) this.axes_[0][k] = v; - } - // TODO(konigsberg): end of REMOVE THIS SILLINESS + + // Copy global valueRange option over to the first axis. + // NOTE(konigsberg): Are these two statements necessary? + // I tried removing it. The automated tests pass, and manually + // messing with tests/zoom.html showed no trouble. + v = this.attr_('valueRange'); + if (v) this.axes_[0].valueRange = v; if (valueWindows !== undefined) { // Restore valueWindow settings.