Skip to content

Commit

Permalink
Unit test for animated zooms.
Browse files Browse the repository at this point in the history
Also documents the behavior of zoomCallback more clearly.
  • Loading branch information
danvk committed Mar 28, 2015
1 parent 5db9ad5 commit bf7d192
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 1 deletion.
50 changes: 50 additions & 0 deletions auto_tests/tests/interaction_model.js
Original file line number Diff line number Diff line change
Expand Up @@ -405,4 +405,54 @@ it('testPointClickCallback_missingData', function() {
assert.equal(110, clicked.yval);
});

describe('animated zooms', function() {
var oldDuration;

before(function() {
oldDuration = Dygraph.ANIMATION_DURATION;
Dygraph.ANIMATION_DURATION = 100; // speed up the animation for testing
});
after(function() {
Dygraph.ANIMATION_DURATION = oldDuration;
});

it('should support animated zooms', function(done) {
var data =
"X,A,B\n" +
"1,120,100\n"+
"2,110,110\n"+
"3,140,120\n"+
"4,130,110\n";

var ranges = [];

var g = new Dygraph('graph', data, {
animatedZooms: true,
});

// updating the dateWindow does not result in an animation.
assert.deepEqual([1, 4], g.xAxisRange());
g.updateOptions({dateWindow: [2, 4]});
assert.deepEqual([2, 4], g.xAxisRange());

g.updateOptions({
// zoomCallback is called once when the animation is complete.
zoomCallback: function(xMin, xMax) {
assert.equal(1, xMin);
assert.equal(4, xMax);
assert.deepEqual([1, 4], g.xAxisRange());
done();
}
}, false);

// Zoom out -- resetZoom() _does_ produce an animation.
g.resetZoom();
assert.notDeepEqual([2, 4], g.xAxisRange()); // first frame is synchronous
assert.notDeepEqual([1, 4], g.xAxisRange());

// at this point control flow goes up to zoomCallback
});

});

});
2 changes: 1 addition & 1 deletion src/dygraph-options-reference.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Dygraph.OPTIONS_REFERENCE = // <JSON>
[ "maxDate" , "milliseconds since epoch." ],
[ "yRanges" , "is an array of [bottom, top] pairs, one for each y-axis." ]
],
"description": "A function to call when the zoom window is changed (either by zooming in or out)."
"description": "A function to call when the zoom window is changed (either by zooming in or out). When animatedZooms is set, zoomCallback is called once at the end of the transition (it will not be called for intermediate frames)."
},
"pointClickCallback": {
"snippet": "function(e, point){<br>&nbsp;&nbsp;alert(point);<br>}",
Expand Down

0 comments on commit bf7d192

Please sign in to comment.