X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-canvas.js;h=f463e3955e03115237815233260a840a9a62ce35;hb=70a50f942ebb909cdc13fb1f455fb28598571c91;hp=5c0fada2a417e66b6f181d3cf9d52ff7e8893646;hpb=ff022debe05bc120e1342725aae7dfaa63c6f139;p=dygraphs.git diff --git a/dygraph-canvas.js b/dygraph-canvas.js index 5c0fada..f463e39 100644 --- a/dygraph-canvas.js +++ b/dygraph-canvas.js @@ -32,9 +32,9 @@ DygraphLayout.prototype.addDataset = function(setname, set_xy) { DygraphLayout.prototype.setAnnotations = function(ann) { // The Dygraph object's annotations aren't parsed. We parse them here and - // save a copy. + // save a copy. If there is no parser, then the user must be using raw format. this.annotations = []; - var parse = this.attr_('xValueParser'); + var parse = this.attr_('xValueParser') || function(x) { return x; }; for (var i = 0; i < ann.length; i++) { var a = {}; if (!ann[i].xval && !ann[i].x) { @@ -89,8 +89,15 @@ DygraphLayout.prototype._evaluateLimits = function() { axis.yrange = axis.maxyval - axis.minyval; axis.yscale = (axis.yrange != 0 ? 1.0 / axis.yrange : 1.0); - axis.ylogrange = Math.log(axis.maxyval) - Math.log(axis.minyval); - axis.ylogscale = (axis.ylogrange != 0 ? 1.0 / axis.ylogrange : 1.0); + if (axis.g.attr_("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)) { + axis.g.error('axis ' + i + ' of graph at ' + axis.g + + ' can\'t be displayed in log scale for range [' + + axis.minyval + ' - ' + axis.maxyval + ']'); + } + } } }; @@ -105,17 +112,17 @@ DygraphLayout.prototype._evaluateLineCharts = function() { for (var j = 0; j < dataset.length; j++) { var item = dataset[j]; - - var foo; - if (this.dygraph_.attr_("logscale")) { - foo = 1.0 - ((Math.log(parseFloat(item[1])) - Math.log(axis.minyval)) * axis.ylogscale); // really should just be yscale. + + var yval; + if (axis.logscale) { + yval = 1.0 - ((Dygraph.log10(parseFloat(item[1])) - Dygraph.log10(axis.minyval)) * axis.ylogscale); // really should just be yscale. } else { - foo = 1.0 - ((parseFloat(item[1]) - axis.minyval) * axis.yscale); + yval = 1.0 - ((parseFloat(item[1]) - axis.minyval) * axis.yscale); } var point = { // TODO(danvk): here x: ((parseFloat(item[0]) - this.minxval) * this.xscale), - y: foo, + y: yval, xval: parseFloat(item[0]), yval: parseFloat(item[1]), name: setName @@ -766,7 +773,7 @@ DygraphCanvasRenderer.prototype._renderLineChart = function() { continue; } - // TODO(danvk): here is a comment. + // TODO(danvk): here if (stepPlot) { var newYs = [ prevY - point.errorPlus * yscale, prevY + point.errorMinus * yscale ];