X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph.js;h=1ed103c07e21926569d769b716a357c22390a196;hb=727439b43dccb8ffb42f5dba3ef3c7cdb3ae5a76;hp=1f36f1c56e9d7bec4c97b1ea8241b11e42b50dc3;hpb=c2909c73e4f5b8acc7881ca51ce3ece7dbe4ed3e;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 1f36f1c..1ed103c 100644 --- a/dygraph.js +++ b/dygraph.js @@ -37,7 +37,7 @@ And error bars will be calculated automatically using a binomial distribution. - For further documentation and examples, see http://www.danvk.org/dygraphs + For further documentation and examples, see http://dygraphs.com/ */ @@ -166,6 +166,16 @@ Dygraph.prototype.__old_init__ = function(div, file, labels, attrs) { * @private */ Dygraph.prototype.__init__ = function(div, file, attrs) { + // Hack for IE: if we're using excanvas and the document hasn't finished + // loading yet (and hence may not have initialized whatever it needs to + // initialize), then keep calling this routine periodically until it has. + if (/MSIE/.test(navigator.userAgent) && !window.opera && + typeof(G_vmlCanvasManager) != 'undefined' && + document.readyState != 'complete') { + var self = this; + setTimeout(function() { self.__init__(div, file, attrs) }, 100); + } + // Support two-argument constructor if (attrs == null) { attrs = {}; } @@ -1076,8 +1086,7 @@ Dygraph.prototype.doZoomXDates_ = function(minDate, maxDate) { this.dateWindow_ = [minDate, maxDate]; this.drawGraph_(); if (this.attr_("zoomCallback")) { - var yRange = this.yAxisRange(); - this.attr_("zoomCallback")(minDate, maxDate, yRange[0], yRange[1]); + this.attr_("zoomCallback")(minDate, maxDate, this.yAxisRanges()); } }; @@ -1214,23 +1223,22 @@ Dygraph.prototype.mouseMove_ = function(event) { }; /** - * Transforms layout_.points index into data row number + * Transforms layout_.points index into data row number. * @param int layout_.points index - * @return int row number + * @return int row number, or -1 if none could be found. * @private */ Dygraph.prototype.idxToRow_ = function(idx) { - if(idx<0)return -1; - - for (var i in this.layout_.datasets) { - if (idx < this.layout_.datasets[i].length) { - return this.boundaryIds_[0][0]+idx; - } - idx-=this.layout_.datasets[i].length; - } - return -1; -} + if (idx < 0) return -1; + for (var i in this.layout_.datasets) { + if (idx < this.layout_.datasets[i].length) { + return this.boundaryIds_[0][0]+idx; + } + idx -= this.layout_.datasets[i].length; + } + return -1; +}; /** * Draw dots over the selectied points in the data series. This function @@ -2404,7 +2412,8 @@ Dygraph.prototype.parseCSV_ = function(data) { // Parse the x as a float or return null if it's not a number. var parseFloatOrNull = function(x) { var val = parseFloat(x); - return isNaN(val) ? null : val; + // isFinite() returns false for NaN and +/-Infinity. + return isFinite(val) ? val : null; }; var xParser; @@ -2636,6 +2645,11 @@ Dygraph.prototype.parseDataTable_ = function(data) { if (ret.length > 0 && row[0] < ret[ret.length - 1][0]) { outOfOrder = true; } + + // Strip out infinities, which give dygraphs problems later on. + for (var j = 0; j < row.length; j++) { + if (!isFinite(row[j])) row[j] = null; + } ret.push(row); }