|
1 | 1 | var Plotly = require('@lib/index');
|
2 | 2 | var Plots = Plotly.Plots;
|
3 | 3 | var Lib = require('@src/lib');
|
| 4 | + |
| 5 | +var d3 = require('d3'); |
4 | 6 | var createGraphDiv = require('../assets/create_graph_div');
|
5 | 7 | var destroyGraphDiv = require('../assets/destroy_graph_div');
|
6 | 8 | var click = require('../assets/click');
|
7 | 9 | var mouseEvent = require('../assets/mouse_event');
|
8 | 10 | var failTest = require('../assets/fail_test');
|
9 | 11 | var delay = require('../assets/delay');
|
| 12 | + |
10 | 13 | var RESIZE_DELAY = 300;
|
11 | 14 |
|
12 | 15 | describe('config argument', function() {
|
@@ -760,4 +763,88 @@ describe('config argument', function() {
|
760 | 763 | .then(done);
|
761 | 764 | });
|
762 | 765 | });
|
| 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 | + }); |
763 | 850 | });
|
0 commit comments