* options, see http://dygraphs.com/options.html.
*/
var Dygraph = function(div, data, opts) {
- // These have to go above the "Hack for IE" in __init__ since .ready() can be
- // called as soon as the constructor returns. Once support for OldIE is
- // dropped, this can go down with the rest of the initializers.
- this.is_initial_draw_ = true;
- this.readyFns_ = [];
-
this.__init__(div, data, opts);
};
* @private
*/
Dygraph.prototype.__init__ = function(div, file, attrs) {
+ this.is_initial_draw_ = true;
+ this.readyFns_ = [];
+
// Support two-argument constructor
if (attrs === null || attrs === undefined) { attrs = {}; }
}
if (!div) {
- throw 'Constructing dygraph with a non-existent div!';
+ throw new Error('Constructing dygraph with a non-existent div!');
}
// Copy the important bits into the object
this.canvas_.getContext('2d').clearRect(0, 0, this.width_, this.height_);
if (this.getFunctionOption("drawCallback") !== null) {
- this.getFunctionOption("drawCallback")(this, is_initial_draw);
+ this.getFunctionOption("drawCallback").call(this, this, is_initial_draw);
}
if (is_initial_draw) {
this.readyFired_ = true;
this.attrs_.axes.x.ticker = Dygraph.numericTicks;
this.attrs_.axes.x.axisLabelFormatter = this.attrs_.axes.x.valueFormatter;
} else {
- console.error("only 'date', 'datetime' and 'number' types are supported " +
- "for column 1 of DataTable input (Got '" + indepType + "')");
- return null;
+ throw new Error(
+ "only 'date', 'datetime' and 'number' types are supported " +
+ "for column 1 of DataTable input (Got '" + indepType + "')");
}
// Array of the column indices which contain data (and not annotations).
}
hasAnnotations = true;
} else {
- console.error("Only 'number' is supported as a dependent type with Gviz." +
- " 'string' is only supported if displayAnnotations is true");
+ throw new Error(
+ "Only 'number' is supported as a dependent type with Gviz." +
+ " 'string' is only supported if displayAnnotations is true");
}
}
/**
* Changes the visibility of one or more series.
*
- * @param {number|number[]} num the series index or an array of series indices
- * @param {boolean} value true or false, identifying the visibility.
+ * @param {number|number[]|object} num the series index or an array of series indices
+ * or a boolean array of visibility states by index
+ * or an object mapping series numbers, as keys, to
+ * visibility state (boolean values)
+ * @param {boolean} value the visibility state expressed as a boolean
*/
Dygraph.prototype.setVisibility = function(num, value) {
var x = this.visibility();
+ var numIsObject = false;
- if (num.constructor !== Array) num = [num];
-
- for (var i = 0; i < num.length; i++) {
- if (num[i] < 0 || num[i] >= x.length) {
- console.warn("invalid series number in setVisibility: " + num[i]);
+ if (!Array.isArray(num)) {
+ if (num !== null && typeof num === 'object') {
+ numIsObject = true;
} else {
- x[num[i]] = value;
+ num = [num];
+ }
+ }
+
+ if (numIsObject) {
+ for (var i in num) {
+ if (num.hasOwnProperty(i)) {
+ if (i < 0 || i >= x.length) {
+ console.warn("Invalid series number in setVisibility: " + i);
+ } else {
+ x[i] = num[i];
+ }
+ }
+ }
+ } else {
+ for (var i = 0; i < num.length; i++) {
+ if (typeof num[i] === 'boolean') {
+ if (i >= x.length) {
+ console.warn("Invalid series number in setVisibility: " + i);
+ } else {
+ x[i] = num[i];
+ }
+ } else {
+ if (num[i] < 0 || num[i] >= x.length) {
+ console.warn("Invalid series number in setVisibility: " + num[i]);
+ } else {
+ x[num[i]] = value;
+ }
+ }
}
}
console.warn("Unable to add default annotation CSS rule; display may be off.");
};
+if (typeof exports === "object" && typeof module !== "undefined") {
+ module.exports = Dygraph;
+}
+
return Dygraph;
})();