Merge branch 'master' of github.com:kberg/dygraphs into axis-label-font-size
authorRobert Konigsberg <konigsberg@gmail.com>
Mon, 31 Dec 2012 20:11:11 +0000 (15:11 -0500)
committerRobert Konigsberg <konigsberg@gmail.com>
Mon, 31 Dec 2012 20:11:11 +0000 (15:11 -0500)
Conflicts:
auto_tests/tests/axis_labels.js

1  2 
auto_tests/tests/Util.js
auto_tests/tests/axis_labels.js
dygraph.js

diff --combined 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;
+ };
@@@ -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() {
        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
@@@ -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.