From: Robert Konigsberg Date: Sun, 18 Nov 2012 03:01:46 +0000 (-0600) Subject: Support highlightSeriesOpts, and, standardize on field names. X-Git-Tag: v1.0.0~168^2~2 X-Git-Url: https://adrianiainlam.tk/git/?a=commitdiff_plain;h=ed30673a8a861b1bb777e1b8f4a02cfa833c10ac;p=dygraphs.git Support highlightSeriesOpts, and, standardize on field names. --- diff --git a/dygraph-options.js b/dygraph-options.js index 9227870..cc8c770 100644 --- a/dygraph-options.js +++ b/dygraph-options.js @@ -10,7 +10,7 @@ * Interesting member variables: * dygraph_ - the graph. * global - global attributes (common among all graphs, AIUI) - * global_user - attributes set by the user + * user - attributes set by the user * axes * series - { seriesName -> { idx, yAxis, options } * labels - used as mapping from index to series name. @@ -25,13 +25,14 @@ */ var DygraphOptions = function(dygraph) { this.dygraph_ = dygraph; - this.axes = []; - this.series = {}; + this.axes_ = []; + this.series_ = {}; // Once these two objects are initialized, you can call find(); - this.global = this.dygraph_.attrs_; - this.global_user = this.dygraph_.user_attrs_ || {}; + this.global_ = this.dygraph_.attrs_; + this.user_ = this.dygraph_.user_attrs_ || {}; + this.highlightSeries_ = this.find("highlightSeriesOpts") || {}; // Get a list of series names. var labels = this.find("labels"); @@ -45,73 +46,72 @@ var DygraphOptions = function(dygraph) { DygraphOptions.prototype.reparseSeries = function() { this.labels = this.find("labels").slice(1); - this.axes = [ {} ]; // Always one axis at least. - this.series = {}; + this.axes_ = [ {} ]; // Always one axis at least. + this.series_ = {}; var axisId = 0; // 0-offset; there's always one. // Go through once, add all the series, and for those with {} axis options, add a new axis. for (var idx = 0; idx < this.labels.length; idx++) { var seriesName = this.labels[idx]; - var optionsForSeries = this.global_user[seriesName] || {}; + var optionsForSeries = this.user_[seriesName] || {}; var yAxis = 0; var axis = optionsForSeries["axis"]; if (typeof(axis) == 'object') { yAxis = ++axisId; - this.axes[yAxis] = axis; + this.axes_[yAxis] = axis; } - this.series[seriesName] = { idx: idx, yAxis: yAxis, options : optionsForSeries }; + this.series_[seriesName] = { idx: idx, yAxis: yAxis, options : optionsForSeries }; } // Go through one more time and assign series to an axis defined by another // series, e.g. { 'Y1: { axis: {} }, 'Y2': { axis: 'Y1' } } for (var idx = 0; idx < this.labels.length; idx++) { var seriesName = this.labels[idx]; - var optionsForSeries = this.series[seriesName]["options"]; + var optionsForSeries = this.series_[seriesName]["options"]; var axis = optionsForSeries["axis"]; if (typeof(axis) == 'string') { - if (!this.series.hasOwnProperty(axis)) { + if (!this.series_.hasOwnProperty(axis)) { this.dygraph_.error("Series " + seriesName + " wants to share a y-axis with " + "series " + axis + ", which does not define its own axis."); return null; } - this.series[seriesName].yAxis = this.series[axis].yAxis; + this.series_[seriesName].yAxis = this.series_[axis].yAxis; } } // This doesn't support reading from the 'x' axis, only 'y' and 'y2. // Read from the global "axes" option. - if (this.global_user.hasOwnProperty("axes")) { - var axis_opts = this.global_user.axes; + if (this.user_.hasOwnProperty("axes")) { + var axis_opts = this.user_.axes; if (axis_opts.hasOwnProperty("y")) { - Dygraph.update(this.axes[0], axis_opts.y); + Dygraph.update(this.axes_[0], axis_opts.y); } if (axis_opts.hasOwnProperty("y2")) { - this.axes[1] = this.axes[1] || {}; - Dygraph.update(this.axes[1], axis_opts.y2); + this.axes_[1] = this.axes_[1] || {}; + Dygraph.update(this.axes_[1], axis_opts.y2); } } }; DygraphOptions.prototype.find = function(name) { - if (this.global_user.hasOwnProperty(name)) { - return this.global_user[name]; + if (this.user_.hasOwnProperty(name)) { + return this.user_[name]; } - if (this.global.hasOwnProperty(name)) { - return this.global[name]; + if (this.global_.hasOwnProperty(name)) { + return this.global_[name]; } return null; } DygraphOptions.prototype.findForAxis = function(name, axis) { - var axisIdx = (axis == "y2" || axis == "y2" || axis == 1) ? 1 : 0; - var axisOptions = this.axes[axisIdx]; + var axisOptions = this.axes_[axisIdx]; if (axisOptions.hasOwnProperty(name)) { return axisOptions[name]; } @@ -122,15 +122,22 @@ DygraphOptions.prototype.findForSeries = function(name, series) { // Honors indexes as series. var seriesName = (typeof(series) == "number") ? this.labels[series] : series; - if (!this.series.hasOwnProperty(seriesName)) { + if (seriesName === this.dygraph_.highlightSet_) { + if (this.highlightSeries_.hasOwnProperty(name)) { + return this.highlightSeries_[name]; + } + } + + if (!this.series_.hasOwnProperty(seriesName)) { throw "Unknown series: " + series; } - var seriesObj = this.series[seriesName]; + var seriesObj = this.series_[seriesName]; var seriesOptions = seriesObj["options"]; if (seriesOptions.hasOwnProperty(name)) { return seriesOptions[name]; } + return this.findForAxis(name, seriesObj["yAxis"]); } diff --git a/dygraph.js b/dygraph.js index fa8823e..3a8c862 100644 --- a/dygraph.js +++ b/dygraph.js @@ -603,13 +603,12 @@ Dygraph.prototype.attr_ = function(name, seriesName) { } var computedValue = seriesName ? this.attributes_.findForSeries(name, seriesName) : this.attributes_.find(name); - if (ret !== computedValue) { console.log("Mismatch", name, seriesName, ret, computedValue); - } else { - console.log("Match", name, seriesName, ret, computedValue); } - return computedValue; + + var USE_NEW_VALUE = true; + return USE_NEW_VALUE ? computedValue : ret; }; /**