X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;f=dygraph-options.js;h=9a4f6bf1962e4b6048a3f613a0ee1c5ff852c641;hb=b21fe3cfa8ce99d827a6b4d1068ccc2b39d866a0;hp=cc8c770b72415d97c0a811f5ecc88d62f011c1f8;hpb=237060cc571db3965c26e21689c01a87c4cbb8a3;p=dygraphs.git diff --git a/dygraph-options.js b/dygraph-options.js index cc8c770..9a4f6bf 100644 --- a/dygraph-options.js +++ b/dygraph-options.js @@ -11,40 +11,49 @@ * dygraph_ - the graph. * global - global attributes (common among all graphs, AIUI) * user - attributes set by the user - * axes + * axes - map of options specific to the axis. * series - { seriesName -> { idx, yAxis, options } * labels - used as mapping from index to series name. */ /** - * @constructor - * * This parses attributes into an object that can be easily queried. * + * It doesn't necessarily mean that all options are available, specifically + * if labels are not yet available, since those drive details of the per-series + * and per-axis options. + * * @param {Dyraph} dygraph The chart to which these options belong. + * @constructor */ var DygraphOptions = function(dygraph) { this.dygraph_ = dygraph; this.axes_ = []; this.series_ = {}; - // Once these two objects are initialized, you can call find(); + // Once these two objects are initialized, you can call get(); this.global_ = this.dygraph_.attrs_; this.user_ = this.dygraph_.user_attrs_ || {}; - this.highlightSeries_ = this.find("highlightSeriesOpts") || {}; + this.highlightSeries_ = this.get("highlightSeriesOpts") || {}; // Get a list of series names. - var labels = this.find("labels"); + var labels = this.get("labels"); if (!labels) { return; // -- can't do more for now, will parse after getting the labels. - }; + } this.reparseSeries(); -} +}; +/** + * Reparses options that are all related to series. This typically occurs when + * options are either updated, or source data has been made avaialble. + * + * TODO(konigsberg): The method name is kind of weak; fix. + */ DygraphOptions.prototype.reparseSeries = function() { - this.labels = this.find("labels").slice(1); + this.labels = this.get("labels").slice(1); this.axes_ = [ {} ]; // Always one axis at least. this.series_ = {}; @@ -98,7 +107,12 @@ DygraphOptions.prototype.reparseSeries = function() { } }; -DygraphOptions.prototype.find = function(name) { +/** + * Get a global value. + * + * @param {String} name the name of the option. + */ +DygraphOptions.prototype.get = function(name) { if (this.user_.hasOwnProperty(name)) { return this.user_[name]; } @@ -106,19 +120,41 @@ DygraphOptions.prototype.find = function(name) { return this.global_[name]; } return null; -} +}; -DygraphOptions.prototype.findForAxis = function(name, axis) { - var axisIdx = (axis == "y2" || axis == "y2" || axis == 1) ? 1 : 0; +/** + * Get a value for a specific axis. If there is no specific value for the axis, + * the global value is returned. + * + * @param {String} name the name of the option. + * @param {String|number} axis the axis to search. Can be the string representation + * ("y", "y2") or the axis number (0, 1). + */ +DygraphOptions.prototype.getForAxis = function(name, axis) { + var axisIdx = 0; + if (typeof(axis) == 'number') { + axisIdx = axis; + } else { + // TODO(konigsberg): Accept only valid axis strings? + axisIdx = (axis == "y2") ? 1 : 0; + } var axisOptions = this.axes_[axisIdx]; if (axisOptions.hasOwnProperty(name)) { return axisOptions[name]; } - return this.find(name); -} + return this.get(name); +}; -DygraphOptions.prototype.findForSeries = function(name, series) { +/** + * Get a value for a specific series. If there is no specific value for the series, + * the value for the axis is returned (and afterwards, the global value.) + * + * @param {String} name the name of the option. + * @param {String|number} series the series to search. Can be the string representation + * or 0-offset series number. + */ +DygraphOptions.prototype.getForSeries = function(name, series) { // Honors indexes as series. var seriesName = (typeof(series) == "number") ? this.labels[series] : series; @@ -138,6 +174,6 @@ DygraphOptions.prototype.findForSeries = function(name, series) { return seriesOptions[name]; } - return this.findForAxis(name, seriesObj["yAxis"]); -} + return this.getForAxis(name, seriesObj["yAxis"]); +};