Merge commit '9f890c23ad80924d0a30f3a14f8680b7c2d6318e' into fix-for-issue-451
authorDavid Eberlein <david.eberlein@ch.sauter-bc.com>
Thu, 2 May 2013 08:50:24 +0000 (10:50 +0200)
committerDavid Eberlein <david.eberlein@ch.sauter-bc.com>
Thu, 2 May 2013 08:50:24 +0000 (10:50 +0200)
Conflicts:
dygraph-layout.js

1  2 
dygraph.js

diff --combined dygraph.js
@@@ -1019,8 -1019,8 +1019,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);
      }
    };
@@@ -2296,9 -2296,7 +2296,9 @@@ Dygraph.prototype.gatherDatasets_ = fun
      // Prune down to the desired range, if necessary (for zooming)
      // Because there can be lines going to points outside of the visible area,
      // we actually prune to visible points, plus one on either side.
 -    var bars = this.attr_("errorBars") || this.attr_("customBars");
 +    var errorBars = this.attr_("errorBars");
 +    var customBars = this.attr_("customBars");
 +    var bars = errorBars || customBars;
      if (dateWindow) {
        var low = dateWindow[0];
        var high = dateWindow[1];
          }
        }
        if (firstIdx === null) firstIdx = 0;
 -      if (firstIdx > 0) firstIdx--;
 +      var correctedFirstIdx = firstIdx;
 +   
 +      var isInvalidValue = true;
 +      while(isInvalidValue && correctedFirstIdx > 0){
 +        correctedFirstIdx--;
 +        
 +        if(bars){
 +          if(customBars){
 +            isInvalidValue = series[correctedFirstIdx][1][1] === null;
 +          } else if(errorBars){
 +            isInvalidValue = series[correctedFirstIdx][1][0] === null;
 +          }
 +        } else{
 +          isInvalidValue = series[correctedFirstIdx][1] === null;
 +        }
 +      }
 +      
        if (lastIdx === null) lastIdx = series.length - 1;
 -      if (lastIdx < series.length - 1) lastIdx++;
 -      boundaryIds[i-1] = [firstIdx, lastIdx];
 +      var correctedLastIdx = lastIdx;
 +      isInvalidValue = true;
 +      while(isInvalidValue && correctedLastIdx < series.length - 1){
 +        correctedLastIdx++;
 +        
 +        if(bars){
 +          if(customBars){
 +            isInvalidValue = series[correctedLastIdx][1][1] === null;
 +          } else if(errorBars){
 +            isInvalidValue = series[correctedLastIdx][1][0] === null;
 +          }
 +        } else{
 +          isInvalidValue = series[correctedLastIdx][1] === null;
 +        }
 +      }
 +      
 +      boundaryIds[i-1] = [(firstIdx > 0) ? firstIdx - 1 : firstIdx, (lastIdx < series.length - 1) ? lastIdx + 1 : lastIdx];
 +      
 +      if(correctedFirstIdx!==firstIdx)
 +        pruned.push(series[correctedFirstIdx]);
        for (k = firstIdx; k <= lastIdx; k++) {
 -        pruned.push(series[k]);
 +          pruned.push(series[k]);
        }
 +      if(correctedLastIdx !== lastIdx)
 +        pruned.push(series[correctedLastIdx]);
 +      
        series = pruned;
      } else {
        boundaryIds[i-1] = [0, series.length-1];
@@@ -2797,6 -2758,8 +2797,8 @@@ Dygraph.prototype.computeYAxisRanges_ 
  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;
  };