Merge commit 'de2545148870a1bdb0957c4c42e80bdb8ce1656d' into per-axis-grid
authorDavid Eberlein <david.eberlein@ch.sauter-bc.com>
Thu, 25 Apr 2013 06:48:54 +0000 (08:48 +0200)
committerDavid Eberlein <david.eberlein@ch.sauter-bc.com>
Thu, 25 Apr 2013 06:48:54 +0000 (08:48 +0200)
1  2 
dygraph.js

diff --combined dygraph.js
@@@ -344,24 -344,18 +344,24 @@@ Dygraph.DEFAULT_ATTRS = 
        pixelsPerLabel: 60,
        axisLabelFormatter: Dygraph.dateAxisFormatter,
        valueFormatter: Dygraph.dateString_,
 +      drawGrid: true,
 +      independentTicks: true,
        ticker: null  // will be set in dygraph-tickers.js
      },
      y: {
        pixelsPerLabel: 30,
        valueFormatter: Dygraph.numberValueFormatter,
        axisLabelFormatter: Dygraph.numberAxisLabelFormatter,
 +      drawGrid: true,
 +      independentTicks: true,
        ticker: null  // will be set in dygraph-tickers.js
      },
      y2: {
        pixelsPerLabel: 30,
        valueFormatter: Dygraph.numberValueFormatter,
        axisLabelFormatter: Dygraph.numberAxisLabelFormatter,
 +      drawGrid: false,
 +      independentTicks: false,
        ticker: null  // will be set in dygraph-tickers.js
      }
    }
@@@ -1025,8 -1019,8 +1025,8 @@@ Dygraph.prototype.createInterface_ = fu
      // 2. e.relatedTarget is outside the chart
      var target = e.target || e.fromElement;
      var relatedTarget = e.relatedTarget || e.toElement;
-     if (Dygraph.isElementContainedBy(target, dygraph.graphDiv) &&
-         !Dygraph.isElementContainedBy(relatedTarget, dygraph.graphDiv)) {
+     if (Dygraph.isNodeContainedBy(target, dygraph.graphDiv) &&
+         !Dygraph.isNodeContainedBy(relatedTarget, dygraph.graphDiv)) {
        dygraph.mouseOut_(e);
      }
    };
@@@ -2594,15 -2588,12 +2594,15 @@@ Dygraph.prototype.computeYAxisRanges_ 
    };
    var numAxes = this.attributes_.numAxes();
    var ypadCompat, span, series, ypad;
 +  
 +  var p_axis;
  
    // Compute extreme values, a span and tick marks for each axis.
    for (var i = 0; i < numAxes; i++) {
      var axis = this.axes_[i];
      var logscale = this.attributes_.getForAxis("logscale", i);
      var includeZero = this.attributes_.getForAxis("includeZero", i);
 +    var independentTicks = this.attributes_.getForAxis("independentTicks", i);
      series = this.attributes_.seriesForAxis(i);
  
      // Add some padding. This supports two Y padding operation modes:
      } else {
        axis.computedValueRange = axis.extremeRange;
      }
 -
 -    // Add ticks. By default, all axes inherit the tick positions of the
 -    // primary axis. However, if an axis is specifically marked as having
 -    // independent ticks, then that is permissible as well.
 -    var opts = this.optionsViewForAxis_('y' + (i ? '2' : ''));
 -    var ticker = opts('ticker');
 -    if (i === 0 || axis.independentTicks) {
 +    
 +    
 +    if(independentTicks) {
 +      axis.independentTicks = independentTicks;
 +      var opts = this.optionsViewForAxis_('y' + (i ? '2' : ''));
 +      var ticker = opts('ticker');
        axis.ticks = ticker(axis.computedValueRange[0],
 -                          axis.computedValueRange[1],
 -                          this.height_,  // TODO(danvk): should be area.height
 -                          opts,
 -                          this);
 -    } else {
 -      var p_axis = this.axes_[0];
 +              axis.computedValueRange[1],
 +              this.height_,  // TODO(danvk): should be area.height
 +              opts,
 +              this);
 +      // Define the first independent axis as primary axis.
 +      if(!p_axis)
 +        p_axis = axis;
 +    }
 +  }
 +  if(p_axis === undefined)
 +    throw ("Configuration Error: At least one axis has to have the \"independentTicks\" option activated.");
 +  // Add ticks. By default, all axes inherit the tick positions of the
 +  // primary axis. However, if an axis is specifically marked as having
 +  // independent ticks, then that is permissible as well.
 +  for (var i = 0; i < numAxes; i++) {
 +    var axis = this.axes_[i];
 +    
 +    if (!axis.independentTicks) {
 +      var opts = this.optionsViewForAxis_('y' + (i ? '2' : ''));
 +      var ticker = opts('ticker');
        var p_ticks = p_axis.ticks;
        var p_scale = p_axis.computedValueRange[1] - p_axis.computedValueRange[0];
        var scale = axis.computedValueRange[1] - axis.computedValueRange[0];
  Dygraph.prototype.extractSeries_ = function(rawData, i, logScale) {
    // TODO(danvk): pre-allocate series here.
    var series = [];
+   var errorBars = this.attr_("errorBars");
+   var customBars =  this.attr_("customBars");
    for (var j = 0; j < rawData.length; j++) {
      var x = rawData[j][0];
      var point = rawData[j][i];
          point = null;
        }
      }
-     series.push([x, point]);
+     // Fix null points to fit the display type standard.
+     if(point !== null) {
+       series.push([x, point]);
+     } else {
+       series.push([x, errorBars ? [null, null] : customBars ? [null, null, null] : point]);
+     }
    }
    return series;
  };