X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;ds=sidebyside;f=dygraph.js;h=aefbd198a8e89ff2d43e2eb73efa009974179049;hb=1ca77443b3d062bed8045846e53660f262f35cf4;hp=1193e74e8c0f32117a4627137fb51a58cbcb327a;hpb=6ad8b6a444ae32d026264409698f496506b3d33b;p=dygraphs.git diff --git a/dygraph.js b/dygraph.js index 1193e74..aefbd19 100644 --- a/dygraph.js +++ b/dygraph.js @@ -91,7 +91,8 @@ Dygraph.DEFAULT_ROLL_PERIOD = 1; Dygraph.DEFAULT_WIDTH = 480; Dygraph.DEFAULT_HEIGHT = 320; -Dygraph.ANIMATION_STEPS = 10; +// For max 60 Hz. animation: +Dygraph.ANIMATION_STEPS = 12; Dygraph.ANIMATION_DURATION = 200; // These are defined before DEFAULT_ATTRS so that it can refer to them. @@ -418,6 +419,9 @@ Dygraph.prototype.__init__ = function(div, file, attrs) { attrs.animatedZooms = false; } + // DEPRECATION WARNING: All option processing should be moved from + // attrs_ and user_attrs_ to options_, which holds all this information. + // // Dygraphs has many options, some of which interact with one another. // To keep track of everything, we maintain two sets of options: // @@ -2424,6 +2428,7 @@ Dygraph.prototype.renderGraph_ = function(is_initial_draw) { * indices are into the axes_ array. */ Dygraph.prototype.computeYAxes_ = function() { + // Preserve valueWindow settings if they exist, and if the user hasn't // specified a new valueRange. var i, valueWindows, seriesName, axis, index, opts, v; @@ -2436,15 +2441,22 @@ Dygraph.prototype.computeYAxes_ = function() { // this.axes_ doesn't match this.attributes_.axes_.options. It's used for // data computation as well as options storage. + // Go through once and add all the axes. this.axes_ = []; + for (axis = 0; axis < this.attributes_.numAxes(); axis++) { - this.axes_.push({ yAxisId : i, g : this }); + // Add a new axis, making a copy of its per-axis options. + opts = { g : this }; + Dygraph.update(opts, this.attributes_.axisOptions(axis)); + this.axes_[axis] = opts; } + // TODO(konigsberg): REMOVE THIS SILLINESS this should just come from DygraphOptions. + // TODO(konigsberg): Add tests for all of these. Currently just tests for + // includeZero and logscale. + // all options which could be applied per-axis: - // TODO(konigsberg) - var globalAxisOptions = [ - 'includeZero', + var axisOptions = [ 'valueRange', 'labelsKMB', 'labelsKMG2', @@ -2456,23 +2468,12 @@ Dygraph.prototype.computeYAxes_ = function() { ]; // Copy global axis options over to the first axis. - for (i = 0; i < globalAxisOptions.length; i++) { - var k = globalAxisOptions[i]; + for (i = 0; i < axisOptions.length; i++) { + var k = axisOptions[i]; v = this.attr_(k); if (v) this.axes_[0][k] = v; } - - // Go through once and add all the axes. - - // This seems to be right - starting at 1. I think this gets simpler now. - for (axis = 1; axis < this.attributes_.numAxes(); axis++) { - // Add a new axis, making a copy of its per-axis options. - opts = {}; - Dygraph.update(opts, this.axes_[0]); - Dygraph.update(opts, { valueRange: null }); // shouldn't inherit this. - Dygraph.update(opts, this.attributes_.axisOptions(axis)); - this.axes_[axis] = opts; - } + // TODO(konigsberg): end of REMOVE THIS SILLINESS if (valueWindows !== undefined) { // Restore valueWindow settings. @@ -2481,7 +2482,6 @@ Dygraph.prototype.computeYAxes_ = function() { } } - // New axes options for (axis = 0; axis < this.axes_.length; axis++) { if (axis === 0) { opts = this.optionsViewForAxis_('y' + (axis ? '2' : '')); @@ -2530,7 +2530,8 @@ Dygraph.prototype.computeYAxisRanges_ = function(extremes) { // 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); series = this.attributes_.seriesForAxis(i); if (series.length == 0) { @@ -2556,7 +2557,7 @@ Dygraph.prototype.computeYAxisRanges_ = function(extremes) { maxY = Math.max(extremeMaxY, maxY); } } - if (axis.includeZero && minY > 0) minY = 0; + if (includeZero && minY > 0) minY = 0; // Ensure we have a valid scale, otherwise default to [0, 1] for safety. if (minY == Infinity) minY = 0; @@ -2568,7 +2569,7 @@ Dygraph.prototype.computeYAxisRanges_ = function(extremes) { if (span === 0) { span = maxY; } var maxAxisY, minAxisY; - if (axis.logscale) { + if (logscale) { maxAxisY = maxY + 0.1 * span; minAxisY = minY; } else { @@ -3223,6 +3224,7 @@ Dygraph.prototype.parseDataTable_ = function(data) { if (annotations.length > 0) { this.setAnnotations(annotations, true); } + this.attributes_.reparseSeries(); }; /** @@ -3357,6 +3359,10 @@ Dygraph.mapLegacyOptions_ = function(attrs) { }; var map = function(opt, axis, new_opt) { if (typeof(attrs[opt]) != 'undefined') { + Dygraph.warn("Option " + opt + " is deprecated. Use the " + + new_opt + " option for the " + axis + " axis instead. " + + "(e.g. { axes : { " + axis + " : { " + new_opt + " : ... } } } " + + "(see http://dygraphs.com/per-axis.html for more information."); set(axis, new_opt, attrs[opt]); delete my_attrs[opt]; }