dcos-dygraphs
Version:
dygraphs is a fast, flexible open source JavaScript charting library.
61 lines (47 loc) • 1.66 kB
JavaScript
/**
* @fileoverview Regression test for a bug involving data update while panning.
*
* See http://stackoverflow.com/questions/9528173
*
* @author dan@dygraphs.com (Dan Vanderkam)
*/
import Dygraph from '../../src/dygraph';
import DygraphOps from './DygraphOps';
describe("update-while-panning", function() {
cleanupAfterEach();
// This tests the following sequence:
// 1. Begin dragging a chart (x-panning)
// 2. Do a data update (updateOptions({file: ...}))
// 3. Verify that the y-axis is still well-defined.
it('testUpdateWhilePanning', function() {
var sinewave = function(start, limit, step) {
var data = [];
for (var x = start; x < limit; x += step) {
data.push([x, Math.sin(x)]);
}
return data;
};
var opts = {
width: 480,
height: 320,
valueRange: [-2, 2],
labels: ['X', 'Y']
};
var graph = document.getElementById("graph");
var g = new Dygraph(graph, sinewave(0, 6, 0.1), opts);
assert.deepEqual([-2, 2], g.yAxisRange());
// Start a pan, but don't finish it yet.
DygraphOps.dispatchMouseDown_Point(g, 200, 100, {shiftKey: true});
DygraphOps.dispatchMouseMove_Point(g, 100, 100, {shiftKey: true});
assert.deepEqual([-2, 2], g.yAxisRange());
// Now do a data update. y-axis should remain the same.
g.updateOptions({file: sinewave(0, 7, 0.1)});
assert.deepEqual([-2, 2], g.yAxisRange());
// Keep the pan going.
DygraphOps.dispatchMouseMove_Point(g, 50, 100, {shiftKey: true});
assert.deepEqual([-2, 2], g.yAxisRange());
// Now finish the pan.
DygraphOps.dispatchMouseUp_Point(g, 100, 100, {shiftKey: true});
assert.deepEqual([-2, 2], g.yAxisRange());
});
});