From: Dan Vanderkam Date: Wed, 17 Apr 2013 21:52:58 +0000 (-0700) Subject: Merge pull request #242 from sauter-hq/draw-xaxis-bugfix X-Git-Tag: v1.0.0~39 X-Git-Url: https://adrianiainlam.tk/git/?a=commitdiff_plain;h=5605628cc2f2ca8d4f3b297a3d15dbded2c07f1e;hp=55cf43c3e5c88980f80aa7b74cd4dc1cb30d0645;p=dygraphs.git Merge pull request #242 from sauter-hq/draw-xaxis-bugfix BUGFIX: RangeSelector: xAxisLabelHeight is set to 0 in case the option 'drawXAxis' is set to false. --- 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 6889a09..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; } @@ -162,9 +166,9 @@ DygraphOptions.prototype.reparseSeries = function() { if (typeof(axis) == 'string') { if (!this.series_.hasOwnProperty(axis)) { - this.dygraph_.error("Series " + seriesName + " wants to share a y-axis with " + + Dygraph.error("Series " + seriesName + " wants to share a y-axis with " + "series " + axis + ", which does not define its own axis."); - return null; + return; } var yAxis = this.series_[axis].yAxis; this.series_[seriesName].yAxis = yAxis; @@ -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; diff --git a/dygraph-tickers.js b/dygraph-tickers.js index 4909909..155afb0 100644 --- a/dygraph-tickers.js +++ b/dygraph-tickers.js @@ -386,7 +386,7 @@ Dygraph.getDateAxis = function(start_time, end_time, granularity, opts, dg) { var check_dst = (spacing >= Dygraph.SHORT_SPACINGS[Dygraph.TWO_HOURLY]); for (t = start_time; t <= end_time; t += spacing) { - var d = new Date(t); + d = new Date(t); // This ensures that we stay on the same hourly "rhythm" across // daylight savings transitions. Without this, the ticks could get off diff --git a/dygraph-utils.js b/dygraph-utils.js index 035aba6..250c855 100644 --- a/dygraph-utils.js +++ b/dygraph-utils.js @@ -135,7 +135,6 @@ Dygraph.prototype.warn = Dygraph.warn; /** * @param {string} message - * @private */ Dygraph.error = function(message) { Dygraph.log(Dygraph.ERROR, message); @@ -634,7 +633,6 @@ Dygraph.dateStrToMillis = function(str) { * @param {!Object} self * @param {!Object} o * @return {!Object} - * @private */ Dygraph.update = function(self, o) { if (typeof(o) != 'undefined' && o !== null) { @@ -818,7 +816,7 @@ Dygraph.Iterator.prototype.next = function() { }; /** - * Returns a new iterator over array, between indexes start and + * Returns a new iterator over array, between indexes start and * start + length, and only returns entries that pass the accept function * * @param {!Array} array the array to iterate over. @@ -908,7 +906,7 @@ Dygraph.repeatAndCleanup = function(repeatFn, maxFrames, framePeriodInMillis, * This function will scan the option list and determine if they * require us to recalculate the pixel positions of each point. * @param {!Array.} labels a list of options to check. - * @param {!Object} attrs + * @param {!Object} attrs * @return {boolean} true if the graph needs new points else false. * @private */ @@ -1012,7 +1010,7 @@ Dygraph.isPixelChangingOptionList = function(labels, attrs) { /** * Compares two arrays to see if they are equal. If either parameter is not an - * array it will return false. Does a shallow compare + * array it will return false. Does a shallow compare * Dygraph.compareArrays([[1,2], [3, 4]], [[1,2], [3,4]]) === false. * @param {!Array.} array1 first array * @param {!Array.} array2 second array @@ -1057,7 +1055,7 @@ Dygraph.regularShape_ = function( var computeCoordinates = function() { var x = cx + (Math.sin(angle) * radius); var y = cy + (-Math.cos(angle) * radius); - return [x, y]; + return [x, y]; }; var initialCoordinates = computeCoordinates(); @@ -1165,7 +1163,7 @@ Dygraph.Circles = { * }; * window.addEventListener('mouseup', mouseUpHandler); * }; - * + * * @constructor */ Dygraph.IFrameTarp = function() { @@ -1236,13 +1234,13 @@ Dygraph.detectLineDelimiter = function(data) { }; /** - * Is one element contained by another? - * @param {Element} containee The contained element. - * @param {Element} container The container element. + * Is one node contained by another? + * @param {Node} containee The contained node. + * @param {Node} container The container node. * @return {boolean} Whether containee is inside (or equal to) container. * @private */ -Dygraph.isElementContainedBy = function(containee, container) { +Dygraph.isNodeContainedBy = function(containee, container) { if (container === null || containee === null) { return false; } diff --git a/dygraph.js b/dygraph.js index 0dcc23a..f11fa74 100644 --- a/dygraph.js +++ b/dygraph.js @@ -1019,8 +1019,8 @@ Dygraph.prototype.createInterface_ = function() { // 2. e.relatedTarget is outside the chart var target = e.target || e.fromElement; var relatedTarget = e.relatedTarget || e.toElement; - if (Dygraph.isElementContainedBy(target, dygraph.graphDiv) && - !Dygraph.isElementContainedBy(relatedTarget, dygraph.graphDiv)) { + if (Dygraph.isNodeContainedBy(target, dygraph.graphDiv) && + !Dygraph.isNodeContainedBy(relatedTarget, dygraph.graphDiv)) { dygraph.mouseOut_(e); } };