From 3f265488c2a49d7bacdf50c208e24dc1d9ddaa05 Mon Sep 17 00:00:00 2001 From: Lucas Bergman Date: Thu, 7 Mar 2013 15:30:18 -0600 Subject: [PATCH] Make dygraph-options.js warning-free under Closure Compiler --- closure-todo.txt | 4 ++-- dygraph-externs.js | 11 ++++++++++- dygraph-options.js | 20 ++++++++++++-------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/closure-todo.txt b/closure-todo.txt index c9d42b7..5c61495 100644 --- a/closure-todo.txt +++ b/closure-todo.txt @@ -12,7 +12,7 @@ Core: - dygraph-canvas.js - dygraph-interaction-model.js - dygraph-layout.js -- dygraph-options.js +x dygraph-options.js - dygraph-range-selector.js - dygraph.js x dygraph-gviz.js @@ -32,6 +32,6 @@ Plugins: Here's a command that can be used to build dygraphs using the closure compiler: -java -jar ../../closure-compiler-read-only/build/compiler.jar --js=dygraph-utils.js --js=dashed-canvas.js --js=dygraph-options-reference.js --js=dygraph-tickers.js --js=dygraph-gviz.js --js_output_file=/tmp/out.js --compilation_level ADVANCED_OPTIMIZATIONS --warning_level VERBOSE --externs dygraph-externs.js +java -jar ../../closure-compiler-read-only/build/compiler.jar --js=dygraph-utils.js --js=dashed-canvas.js --js=dygraph-options-reference.js --js=dygraph-tickers.js --js=dygraph-gviz.js --js=dygraph-options.js --js_output_file=/tmp/out.js --compilation_level ADVANCED_OPTIMIZATIONS --warning_level VERBOSE --externs dygraph-externs.js As each file is closurized, it can be added as a "--js" parameter. diff --git a/dygraph-externs.js b/dygraph-externs.js index 6e487fd..ed5de4c 100644 --- a/dygraph-externs.js +++ b/dygraph-externs.js @@ -72,13 +72,22 @@ function DygraphLayout() {} */ DygraphLayout.prototype.datasets; +// TODO: DygraphOptions should not reach inside Dygraph private data like this. +/** @type {Object} */ +Dygraph.prototype.attrs_; +/** @type {Object} */ +Dygraph.prototype.user_attrs_; + /** * @type {DygraphLayout} */ Dygraph.prototype.layout_; +/** @type {function(): string} */ +Dygraph.prototype.getHighlightSeries; + /** @type {Array.<{elem:Element,type:string,fn:function(!Event):(boolean|undefined|null)}>} */ Dygraph.prototype.registeredEvents_; -/** @type {Object} */ +/** @type {{axes: Object}} */ Dygraph.DEFAULT_ATTRS; diff --git a/dygraph-options.js b/dygraph-options.js index f1828d8..5fa8f3e 100644 --- a/dygraph-options.js +++ b/dygraph-options.js @@ -34,13 +34,17 @@ var DygraphOptions = (function() { * 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. + * @param {Dygraph} dygraph The chart to which these options belong. * @constructor */ var DygraphOptions = function(dygraph) { this.dygraph_ = dygraph; + + /** @type {Array.<{options: Object, series: string}>} @private */ this.yAxes_ = []; - this.xAxis_ = {}; + /** @type {{options: Object}} @private */ + this.xAxis_ = {options: {}}; + /** @type {Object} @private */ this.series_ = {}; // Once these two objects are initialized, you can call get(); @@ -64,6 +68,10 @@ DygraphOptions.AXIS_STRING_MAPPINGS_ = { 'Y2' : 1 }; +/** + * @param {string|number} axis + * @private + */ DygraphOptions.axisToIndex_ = function(axis) { if (typeof(axis) == "string") { if (DygraphOptions.AXIS_STRING_MAPPINGS_.hasOwnProperty(axis)) { @@ -77,10 +85,6 @@ DygraphOptions.axisToIndex_ = function(axis) { } throw "Dygraphs only supports two y-axes, indexed from 0-1."; } - if (typeof(axis) == "object") { - throw "Using objects for axis specification " + - "is not supported inside the 'series' option."; - } if (axis) { throw "Unknown axis : " + axis; } @@ -293,7 +297,7 @@ DygraphOptions.prototype.getForAxis = function(name, axis) { */ DygraphOptions.prototype.getForSeries = function(name, series) { // Honors indexes as series. - if (series === this.dygraph_.highlightSet_) { + if (series === this.dygraph_.getHighlightSeries()) { if (this.highlightSeries_.hasOwnProperty(name)) { return this.highlightSeries_[name]; } @@ -314,7 +318,7 @@ DygraphOptions.prototype.getForSeries = function(name, series) { /** * Returns the number of y-axes on the chart. - * @return {Number} the number of axes. + * @return {number} the number of axes. */ DygraphOptions.prototype.numAxes = function() { return this.yAxes_.length; -- 2.7.4