};
Dygraph.NAME = "Dygraph";
-Dygraph.VERSION = "2.0.0";
+Dygraph.VERSION = "2.1.0";
// Various default values
Dygraph.DEFAULT_ROLL_PERIOD = 1;
this.graphDiv.style.width = this.width_ + "px";
this.graphDiv.style.height = this.height_ + "px";
- var canvasScale = utils.getContextPixelRatio(this.canvas_ctx_);
+ var pixelRatioOption = this.getNumericOption('pixelRatio')
+
+ var canvasScale = pixelRatioOption || utils.getContextPixelRatio(this.canvas_ctx_);
this.canvas_.width = this.width_ * canvasScale;
this.canvas_.height = this.height_ * canvasScale;
this.canvas_.style.width = this.width_ + "px"; // for IE
this.canvas_ctx_.scale(canvasScale, canvasScale);
}
- var hiddenScale = utils.getContextPixelRatio(this.hidden_ctx_);
+ var hiddenScale = pixelRatioOption || utils.getContextPixelRatio(this.hidden_ctx_);
this.hidden_.width = this.width_ * hiddenScale;
this.hidden_.height = this.height_ * hiddenScale;
this.hidden_.style.width = this.width_ + "px"; // for IE
const zoomCallback = this.getFunctionOption('zoomCallback');
// TODO(danvk): merge this block w/ the code below.
+ // TODO(danvk): factor out a generic, public zoomTo method.
if (!animatedZooms) {
this.dateWindow_ = null;
this.axes_.forEach(axis => {
/**
* Signals to plugins that the chart data has updated.
* This happens after the data has updated but before the chart has redrawn.
+ * @private
*/
Dygraph.prototype.cascadeDataDidUpdateEvent_ = function() {
// TODO(danvk): there are some issues checking xAxisRange() and using
// copyUserAttrs_ drops the "file" parameter as a convenience to us.
var file = input_attrs.file;
var attrs = Dygraph.copyUserAttrs_(input_attrs);
+ var prevNumAxes = this.attributes_.numAxes();
// TODO(danvk): this is a mess. Move these options into attr_.
if ('rollPeriod' in attrs) {
this.attributes_.reparseSeries();
+ if (prevNumAxes < this.attributes_.numAxes()) this.plotter_.clear();
if (file) {
// This event indicates that the data is about to change, but hasn't yet.
- // TODO(danvk): support cancelation of the update via this event.
+ // TODO(danvk): support cancellation of the update via this event.
this.cascadeEvents_('dataWillUpdate', {});
this.file_ = file;
/**
* Make a copy of input attributes, removing file as a convenience.
+ * @private
*/
Dygraph.copyUserAttrs_ = function(attrs) {
var my_attrs = {};