assertEquals([12, 18], g.xAxisRange());
assertEquals([10, 40], g.yAxisRange(0));
+ g.updateOptions({ valueRange: [10, NaN] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 44.2], g.yAxisRange(0));
+
+ g.updateOptions({ valueRange: [10, 40] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 40], g.yAxisRange(0));
+
+ g.updateOptions({ valueRange: [10, null] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 44.2], g.yAxisRange(0));
+
+ g.updateOptions({ valueRange: [10, 40] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 40], g.yAxisRange(0));
+
+ g.updateOptions({ valueRange: [10, undefined] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 44.2], g.yAxisRange(0));
+
+ g.updateOptions({ valueRange: [10, 40] });
+ assertEquals([12, 18], g.xAxisRange());
+ assertEquals([10, 40], g.yAxisRange(0));
+
g.updateOptions({ });
assertEquals([12, 18], g.xAxisRange());
assertEquals([10, 40], g.yAxisRange(0));
assertEquals([450, 1050], g.yAxisRange(0));
}
+
+/**
+ * Verify that includeZero range is properly specified per axis.
+ */
+RangeTestCase.prototype.testIncludeZeroPerAxis = function() {
+ var g = new Dygraph("graph",
+ 'X,A,B\n'+
+ '0,50,50\n'+
+ '50,110,110\n',
+ {
+ drawPoints: true,
+ pointSize:5,
+ series:{
+ A: {
+ axis: 'y',
+ pointSize: 10
+ },
+ B: {
+ axis: 'y2'
+ }
+ },
+ axes: {
+ 'y2': { includeZero: true }
+ }
+ });
+
+
+ assertEquals([44, 116], g.yAxisRange(0));
+ assertEquals([0, 121], g.yAxisRange(1));
+
+ g.updateOptions({
+ axes: {
+ 'y2': { includeZero: false }
+ }
+ });
+
+ assertEquals([44, 116], g.yAxisRange(1));
+}
+
+
+/**
+ * Verify that includeZero range is properly specified per axis with old axis options.
+ */
+RangeTestCase.prototype.testIncludeZeroPerAxisOld = function() {
+ var g = new Dygraph("graph",
+ 'X,A,B\n' +
+ '0,50,50\n' +
+ '50,110,110\n',
+ {
+ drawPoints: true,
+ pointSize: 5,
+
+ A: {
+ pointSize: 10
+ },
+ B: {
+ axis: {}
+ },
+ axes: {
+ 'y': { includeZero: true },
+ 'y2': { includeZero: false }
+ }
+ });
+
+ assertEquals([0, 121], g.yAxisRange(0));
+ assertEquals([44, 116], g.yAxisRange(1));
+
+ g.updateOptions({
+ axes: {
+ 'y': { includeZero: false },
+ 'y2': { includeZero: true }
+ }
+ });
+
+ assertEquals([44, 116], g.yAxisRange(0));
+ assertEquals([0, 121], g.yAxisRange(1));
+}
+
/**
* Verify that very large Y ranges don't break things.
*/
}
};
- for (var idx = 0; idx < this.registeredEvents_.length; idx++) {
- var reg = this.registeredEvents_[idx];
- Dygraph.removeEvent(reg.elem, reg.type, reg.fn);
+ if (this.registeredEvents_) {
+ for (var idx = 0; idx < this.registeredEvents_.length; idx++) {
+ var reg = this.registeredEvents_[idx];
+ Dygraph.removeEvent(reg.elem, reg.type, reg.fn);
+ }
}
+
this.registeredEvents_ = [];
// remove mouse event handlers (This may not be necessary anymore)
axis.computedValueRange = [axis.valueWindow[0], axis.valueWindow[1]];
} else if (axis.valueRange) {
// This is a user-set value range for this axis.
- axis.computedValueRange = [axis.valueRange[0], axis.valueRange[1]];
+ axis.computedValueRange = [
+ !isNaN(axis.valueRange[0]) && axis.valueRange[0] !== null && axis.valueRange[0] !== undefined ? axis.valueRange[0] : axis.extremeRange[0],
+ !isNaN(axis.valueRange[1]) && axis.valueRange[1] !== null && axis.valueRange[1] !== undefined ? axis.valueRange[1] : axis.extremeRange[1]
+ ];
} else {
axis.computedValueRange = axis.extremeRange;
}