Skip to content

Commit 7d67f80

Browse files
authored
Merge pull request #3424 from plotly/scrollzoom-patch
Do not disable scrollZoom scroll{Width,Height} > client{Width,Height}
2 parents 3991552 + 8969726 commit 7d67f80

File tree

2 files changed

+87
-9
lines changed

2 files changed

+87
-9
lines changed

src/plots/cartesian/dragbox.js

-9
Original file line numberDiff line numberDiff line change
@@ -430,17 +430,8 @@ function makeDragBox(gd, plotinfo, x, y, w, h, ns, ew) {
430430
return;
431431
}
432432

433-
var pc = gd.querySelector('.plotly');
434-
435433
recomputeAxisLists();
436434

437-
// if the plot has scrollbars (more than a tiny excess)
438-
// disable scrollzoom too.
439-
if(pc.scrollHeight - pc.clientHeight > 10 ||
440-
pc.scrollWidth - pc.clientWidth > 10) {
441-
return;
442-
}
443-
444435
clearTimeout(redrawTimer);
445436

446437
var wheelDelta = -e.deltaY;

test/jasmine/tests/config_test.js

+87
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
var Plotly = require('@lib/index');
22
var Plots = Plotly.Plots;
33
var Lib = require('@src/lib');
4+
5+
var d3 = require('d3');
46
var createGraphDiv = require('../assets/create_graph_div');
57
var destroyGraphDiv = require('../assets/destroy_graph_div');
68
var click = require('../assets/click');
79
var mouseEvent = require('../assets/mouse_event');
810
var failTest = require('../assets/fail_test');
911
var delay = require('../assets/delay');
12+
1013
var RESIZE_DELAY = 300;
1114

1215
describe('config argument', function() {
@@ -760,4 +763,88 @@ describe('config argument', function() {
760763
.then(done);
761764
});
762765
});
766+
767+
describe('scrollZoom interactions:', function() {
768+
var gd;
769+
770+
afterEach(destroyGraphDiv);
771+
772+
function _scroll() {
773+
var mainDrag = d3.select('.nsewdrag[data-subplot="xy"]').node();
774+
mouseEvent('scroll', 200, 200, {deltaY: -200, element: mainDrag});
775+
}
776+
777+
it('should not disable scrollZoom when *responsive:true*', function(done) {
778+
gd = document.createElement('div');
779+
gd.id = 'graph';
780+
gd.style.height = '85vh';
781+
gd.style.minHeight = '300px';
782+
document.body.appendChild(gd);
783+
784+
// locking down fix for:
785+
// https://github.com/plotly/plotly.js/issues/3337
786+
787+
var xrng0;
788+
var yrng0;
789+
790+
Plotly.newPlot(gd, [{
791+
y: [1, 2, 1]
792+
}], {}, {
793+
scrollZoom: true,
794+
responsive: true
795+
})
796+
.then(function() {
797+
xrng0 = gd._fullLayout.xaxis.range.slice();
798+
yrng0 = gd._fullLayout.yaxis.range.slice();
799+
})
800+
.then(_scroll)
801+
.then(function() {
802+
var xrng = gd._fullLayout.xaxis.range;
803+
expect(xrng[0]).toBeGreaterThan(xrng0[0], 'scrolled x-range[0]');
804+
expect(xrng[1]).toBeLessThan(xrng0[1], 'scrolled x-range[1]');
805+
806+
var yrng = gd._fullLayout.yaxis.range;
807+
expect(yrng[0]).toBeGreaterThan(yrng0[0], 'scrolled y-range[0]');
808+
expect(yrng[1]).toBeLessThan(yrng0[1], 'scrolled y-range[1]');
809+
})
810+
.catch(failTest)
811+
.then(done);
812+
});
813+
814+
it('should not disable scrollZoom when page is made scrollable by large graph', function(done) {
815+
gd = document.createElement('div');
816+
gd.id = 'graph';
817+
document.body.appendChild(gd);
818+
819+
// locking down fix for:
820+
// https://github.com/plotly/plotly.js/issues/2371
821+
822+
var xrng0;
823+
var yrng0;
824+
825+
Plotly.newPlot(gd, [{
826+
y: [1, 2, 1]
827+
}], {
828+
width: 2 * window.innerWidth
829+
}, {
830+
scrollZoom: true
831+
})
832+
.then(function() {
833+
xrng0 = gd._fullLayout.xaxis.range.slice();
834+
yrng0 = gd._fullLayout.yaxis.range.slice();
835+
})
836+
.then(_scroll)
837+
.then(function() {
838+
var xrng = gd._fullLayout.xaxis.range;
839+
expect(xrng[0]).toBeGreaterThan(xrng0[0], 'scrolled x-range[0]');
840+
expect(xrng[1]).toBeLessThan(xrng0[1], 'scrolled x-range[1]');
841+
842+
var yrng = gd._fullLayout.yaxis.range;
843+
expect(yrng[0]).toBeGreaterThan(yrng0[0], 'scrolled y-range[0]');
844+
expect(yrng[1]).toBeLessThan(yrng0[1], 'scrolled y-range[1]');
845+
})
846+
.catch(failTest)
847+
.then(done);
848+
});
849+
});
763850
});

0 commit comments

Comments
 (0)