};
Dygraph.NAME = "Dygraph";
-Dygraph.VERSION = "1.0.1";
+Dygraph.VERSION = "1.1.0";
Dygraph.__repr__ = function() {
return "[" + Dygraph.NAME + " " + Dygraph.VERSION + "]";
};
if (granularity >= Dygraph.DECADAL) {
return '' + year;
} else if (granularity >= Dygraph.MONTHLY) {
- return Dygraph.SHORT_MONTH_NAMES_[month] + ' ' + year;
+ return Dygraph.SHORT_MONTH_NAMES_[month] + ' ' + year;
} else {
var frac = hours * 3600 + mins * 60 + secs + 1e-3 * millis;
if (frac === 0 || granularity >= Dygraph.DAILY) {
- // e.g. '21Jan' (%d%b)
- return Dygraph.zeropad(day) + Dygraph.SHORT_MONTH_NAMES_[month];
+ // e.g. '21 Jan' (%d%b)
+ return Dygraph.zeropad(day) + ' ' + Dygraph.SHORT_MONTH_NAMES_[month];
} else {
return Dygraph.hmsString_(hours, mins, secs);
}
axisTickSize: 3,
axisLabelFontSize: 14,
- xAxisLabelWidth: 50,
- yAxisLabelWidth: 50,
rightGap: 5,
showRoller: false,
stackedGraphNaNFill: 'all',
hideOverlayOnMouseOut: true,
- // TODO(danvk): support 'onmouseover' and 'never', and remove synonyms.
- legend: 'onmouseover', // the only relevant value at the moment is 'always'.
-
+ legend: 'onmouseover',
stepPlot: false,
avoidMinZero: false,
xRangePad: 0,
// per-axis options
axes: {
x: {
- pixelsPerLabel: 60,
+ pixelsPerLabel: 70,
+ axisLabelWidth: 60,
axisLabelFormatter: Dygraph.dateAxisLabelFormatter,
valueFormatter: Dygraph.dateValueFormatter,
drawGrid: true,
ticker: null // will be set in dygraph-tickers.js
},
y: {
+ axisLabelWidth: 50,
pixelsPerLabel: 30,
valueFormatter: Dygraph.numberValueFormatter,
axisLabelFormatter: Dygraph.numberAxisLabelFormatter,
ticker: null // will be set in dygraph-tickers.js
},
y2: {
+ axisLabelWidth: 50,
pixelsPerLabel: 30,
valueFormatter: Dygraph.numberValueFormatter,
axisLabelFormatter: Dygraph.numberAxisLabelFormatter,
- drawAxis: false,
+ drawAxis: true, // only applies when there are two axes of data.
drawGrid: false,
independentTicks: false,
ticker: null // will be set in dygraph-tickers.js
* @private
*/
Dygraph.prototype.__init__ = function(div, file, attrs) {
- // Hack for IE: if we're using excanvas and the document hasn't finished
- // loading yet (and hence may not have initialized whatever it needs to
- // initialize), then keep calling this routine periodically until it has.
- if (/MSIE/.test(navigator.userAgent) && !window.opera &&
- typeof(G_vmlCanvasManager) != 'undefined' &&
- document.readyState != 'complete') {
- var self = this;
- setTimeout(function() { self.__init__(div, file, attrs); }, 100);
- return;
- }
-
// Support two-argument constructor
if (attrs === null || attrs === undefined) { attrs = {}; }
return;
}
- this.isUsingExcanvas_ = typeof(G_vmlCanvasManager) != 'undefined';
-
// Copy the important bits into the object
// TODO(danvk): most of these should just stay in the attrs_ dictionary.
this.maindiv_ = div;
* @private
*/
Dygraph.prototype.createMouseEventElement_ = function() {
- if (this.isUsingExcanvas_) {
- var elem = document.createElement("div");
- elem.style.position = 'absolute';
- elem.style.backgroundColor = 'white';
- elem.style.filter = 'alpha(opacity=0)';
- elem.style.width = this.width_ + "px";
- elem.style.height = this.height_ + "px";
- this.graphDiv.appendChild(elem);
- return elem;
- } else {
- return this.canvas_;
- }
+ return this.canvas_;
};
/**
this.layout_.getPlotArea().w, Math.abs(endY - startY));
}
}
-
- if (this.isUsingExcanvas_) {
- this.currentZoomRectArgs_ = [direction, startX, endX, startY, endY, 0, 0, 0];
- }
};
/**
2 * maxCircleSize + 2, this.height_);
}
- if (this.isUsingExcanvas_ && this.currentZoomRectArgs_) {
- Dygraph.prototype.drawZoomRect_.apply(this, this.currentZoomRectArgs_);
- }
-
if (this.selPoints_.length > 0) {
// Draw colored circles over the center of each selected point
var canvasx = this.selPoints_[0].canvasx;
* legend. The selection can be cleared using clearSelection() and queried
* using getSelection().
* @param {number} row Row number that should be highlighted (i.e. appear with
- * hover dots on the chart). Set to false to clear any selection.
+ * hover dots on the chart).
* @param {seriesName} optional series name to highlight that series with the
* the highlightSeriesOpts setting.
* @param { locked } optional If true, keep seriesName selected when mousing
var xTicks = xAxisOptionsView('ticker')(
range[0],
range[1],
- this.width_, // TODO(danvk): should be area.width
+ this.plotter_.area.w, // TODO(danvk): should be area.width
xAxisOptionsView,
this);
// var msg = 'ticker(' + range[0] + ', ' + range[1] + ', ' + this.width_ + ', ' + this.attr_('pixelsPerXLabel') + ') -> ' + JSON.stringify(xTicks);
var ticker = opts('ticker');
axis.ticks = ticker(axis.computedValueRange[0],
axis.computedValueRange[1],
- this.height_, // TODO(danvk): should be area.height
+ this.plotter_.area.h,
opts,
this);
// Define the first independent axis as primary axis.
axis.ticks = ticker(axis.computedValueRange[0],
axis.computedValueRange[1],
- this.height_, // TODO(danvk): should be area.height
+ this.plotter_.area.h,
opts,
this,
tick_values);
map('drawXAxis', 'x', 'drawAxis');
map('drawYGrid', 'y', 'drawGrid');
map('drawYAxis', 'y', 'drawAxis');
+ map('xAxisLabelWidth', 'x', 'axisLabelWidth');
+ map('yAxisLabelWidth', 'y', 'axisLabelWidth');
return my_attrs;
};