X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-layout.js;fp=dygraph-layout.js;h=20e84810f4df520398ac35be57ce1994c40c85a0;hb=335011fd4473f55aaaceb69726d15e0063373149;hp=4caa935e167b5c64e55fe7f73b9a965aa84d06f5;hpb=01275da4c4f66755dbcef3df7a45ffece4ba2a9b;p=dygraphs.git diff --git a/dygraph-layout.js b/dygraph-layout.js index 4caa935..20e8481 100644 --- a/dygraph-layout.js +++ b/dygraph-layout.js @@ -175,6 +175,7 @@ DygraphLayout.prototype.setYAxes = function (yAxes) { }; DygraphLayout.prototype.evaluate = function() { + this._xAxis = {}; this._evaluateLimits(); this._evaluateLineCharts(); this._evaluateLineTicks(); @@ -183,11 +184,15 @@ DygraphLayout.prototype.evaluate = function() { DygraphLayout.prototype._evaluateLimits = function() { var xlimits = this.dygraph_.xAxisRange(); - this.minxval = xlimits[0]; - this.maxxval = xlimits[1]; + this._xAxis.minxval = xlimits[0]; + this._xAxis.maxxval = xlimits[1]; var xrange = xlimits[1] - xlimits[0]; - this.xscale = (xrange !== 0 ? 1 / xrange : 1.0); + this._xAxis.xscale = (xrange !== 0 ? 1 / xrange : 1.0); + if (this.dygraph_.getOptionForAxis("logscale", 'x')) { + this._xAxis.xlogrange = Dygraph.log10(this._xAxis.maxxval) - Dygraph.log10(this._xAxis.minxval); + this._xAxis.xlogscale = (this._xAxis.xlogrange !== 0 ? 1.0 / this._xAxis.xlogrange : 1.0); + } for (var i = 0; i < this.yAxes_.length; i++) { var axis = this.yAxes_[i]; axis.minyval = axis.computedValueRange[0]; @@ -195,7 +200,7 @@ DygraphLayout.prototype._evaluateLimits = function() { axis.yrange = axis.maxyval - axis.minyval; axis.yscale = (axis.yrange !== 0 ? 1.0 / axis.yrange : 1.0); - if (axis.g.getOption("logscale")) { + if (this.dygraph_.getOption("logscale")) { axis.ylogrange = Dygraph.log10(axis.maxyval) - Dygraph.log10(axis.minyval); axis.ylogscale = (axis.ylogrange !== 0 ? 1.0 / axis.ylogrange : 1.0); if (!isFinite(axis.ylogrange) || isNaN(axis.ylogrange)) { @@ -207,6 +212,14 @@ DygraphLayout.prototype._evaluateLimits = function() { } }; +DygraphLayout.calcXNormal_ = function(value, axis, logscale) { + if (logscale) { + return ((Dygraph.log10(value) - Dygraph.log10(axis.minxval)) * axis.xlogscale); + } else { + return (value - axis.minxval) * axis.xscale; + } +}; + /** * @param {DygraphAxisType} axis * @param {number} value @@ -224,6 +237,7 @@ DygraphLayout.calcYNormal_ = function(axis, value, logscale) { DygraphLayout.prototype._evaluateLineCharts = function() { var isStacked = this.dygraph_.getOption("stackedGraph"); + var isLogscaleForX = this.dygraph_.getOptionForAxis("logscale", 'x'); for (var setIdx = 0; setIdx < this.points.length; setIdx++) { var points = this.points[setIdx]; @@ -237,7 +251,7 @@ DygraphLayout.prototype._evaluateLineCharts = function() { var point = points[j]; // Range from 0-1 where 0 represents left and 1 represents right. - point.x = (point.xval - this.minxval) * this.xscale; + point.x = DygraphLayout.calcXNormal_(point.xval, this._xAxis, isLogscaleForX); // Range from 0-1 where 0 represents top and 1 represents bottom var yval = point.yval; if (isStacked) { @@ -266,7 +280,7 @@ DygraphLayout.prototype._evaluateLineTicks = function() { for (i = 0; i < this.xTicks_.length; i++) { tick = this.xTicks_[i]; label = tick.label; - pos = this.xscale * (tick.v - this.minxval); + pos = this.dygraph_.toPercentXCoord(tick.v); if ((pos >= 0.0) && (pos < 1.0)) { this.xticks.push([pos, label]); }