/**
* Initializes the Dygraph. This creates a new DIV and constructs the PlotKit
- * and context <canvas> inside of it. See the constructor for details
+ * and context <canvas> inside of it. See the constructor for details.
* on the parameters.
* @param {Element} div the Element to render the graph into.
* @param {String | Function} file Source data
this.wilsonInterval_ = attrs.wilsonInterval || true;
this.is_initial_draw_ = true;
this.annotations_ = [];
-
+
// Number of digits to use when labeling the x (if numeric) and y axis
// ticks.
this.numXDigits_ = 2;
this.start_();
};
+Dygraph.prototype.toString = function() {
+ var maindiv = this.maindiv_;
+ var id = (maindiv && maindiv.id) ? maindiv.id : maindiv
+ return "[Dygraph " + id + "]";
+}
+
Dygraph.prototype.attr_ = function(name, seriesName) {
if (seriesName &&
typeof(this.user_attrs_[seriesName]) != 'undefined' &&
var canvasx = Dygraph.pageX(event) - Dygraph.findPosX(this.mouseEventElement_);
var points = this.layout_.points;
+ // This prevents JS errors when mousing over the canvas before data loads.
+ if (points === undefined) return;
+
var lastx = -1;
var lasty = -1;
var ret = formatter(range[0], range[1], this);
var xTicks = [];
+ // Note: numericTicks() returns a {ticks: [...], numDigits: yy} dictionary,
+ // whereas dateTicker and user-defined tickers typically just return a ticks
+ // array.
if (ret.ticks !== undefined) {
- // numericTicks() returns multiple values.
xTicks = ret.ticks;
this.numXDigits_ = ret.numDigits;
} else {
var ticks = [];
if (vals) {
for (var i = 0; i < vals.length; i++) {
- ticks[i].push({v: vals[i]});
+ ticks.push({v: vals[i]});
}
} else {
if (axis_props && attr("logscale")) {
// Add labels to the ticks.
for (var i = 0; i < ticks.length; i++) {
+ if (ticks[i].label !== undefined) continue; // Use current label.
var tickV = ticks[i].v;
var absTickV = Math.abs(tickV);
var label = (formatter !== undefined) ?
// On the log scale, points less than zero do not exist.
// This will create a gap in the chart. Note that this ignores
// connectSeparatedPoints.
- if (point < 0) {
+ if (point <= 0) {
point = null;
}
series.push([date, point]);