@@ -5,11 +5,11 @@ var DBLCLICKDELAY = require('@src/plots/cartesian/constants').DBLCLICKDELAY;
5
5
var createGraphDiv = require ( '../assets/create_graph_div' ) ;
6
6
var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
7
7
var mouseEvent = require ( '../assets/mouse_event' ) ;
8
+ var customMatchers = require ( '../assets/custom_matchers' ) ;
8
9
9
10
10
11
describe ( 'click interactions' , function ( ) {
11
12
var mock = require ( '@mocks/14.json' ) ,
12
- mockCopy = Lib . extendDeep ( { } , mock ) ,
13
13
gd ;
14
14
15
15
var pointPos = [ 351 , 223 ] ,
@@ -34,17 +34,16 @@ describe('click interactions', function() {
34
34
} , DBLCLICKDELAY / 2 ) ;
35
35
}
36
36
37
- beforeEach ( function ( done ) {
38
- gd = createGraphDiv ( ) ;
39
-
40
- Plotly . plot ( gd , mockCopy . data , mockCopy . layout )
41
- . then ( done ) ;
42
- } ) ;
43
-
44
37
describe ( 'click events' , function ( ) {
45
38
var futureData ;
46
39
47
- beforeEach ( function ( ) {
40
+ beforeEach ( function ( done ) {
41
+ gd = createGraphDiv ( ) ;
42
+
43
+ var mockCopy = Lib . extendDeep ( { } , mock ) ;
44
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout )
45
+ . then ( done ) ;
46
+
48
47
gd . on ( 'plotly_click' , function ( data ) {
49
48
futureData = data ;
50
49
} ) ;
@@ -74,10 +73,17 @@ describe('click interactions', function() {
74
73
describe ( 'double click events' , function ( ) {
75
74
var futureData ;
76
75
77
- beforeEach ( function ( ) {
76
+ beforeEach ( function ( done ) {
77
+ gd = createGraphDiv ( ) ;
78
+
79
+ var mockCopy = Lib . extendDeep ( { } , mock ) ;
80
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout )
81
+ . then ( done ) ;
82
+
78
83
gd . on ( 'plotly_doubleclick' , function ( data ) {
79
84
futureData = data ;
80
85
} ) ;
86
+
81
87
} ) ;
82
88
83
89
it ( 'should return null' , function ( done ) {
@@ -87,4 +93,232 @@ describe('click interactions', function() {
87
93
} ) ;
88
94
} ) ;
89
95
} ) ;
96
+
97
+ describe ( 'double click interactions' , function ( ) {
98
+ var mockCopy ;
99
+
100
+ var autoRangeX = [ - 3.011967491973726 , 2.1561305597186564 ] ,
101
+ autoRangeY = [ - 0.9910086301469277 , 1.389382716298284 ] ;
102
+
103
+ var setRangeX = [ - 3 , 1 ] ,
104
+ setRangeY = [ - 0.5 , 1 ] ;
105
+
106
+ var zoomRangeX = [ - 2 , 0 ] ,
107
+ zoomRangeY = [ 0 , 0.5 ] ;
108
+
109
+ var update = {
110
+ 'xaxis.range[0]' : zoomRangeX [ 0 ] ,
111
+ 'xaxis.range[1]' : zoomRangeX [ 1 ] ,
112
+ 'yaxis.range[0]' : zoomRangeY [ 0 ] ,
113
+ 'yaxis.range[1]' : zoomRangeY [ 1 ]
114
+ } ;
115
+
116
+ beforeEach ( function ( ) {
117
+ jasmine . addMatchers ( customMatchers ) ;
118
+
119
+ gd = createGraphDiv ( ) ;
120
+ mockCopy = Lib . extendDeep ( { } , mock ) ;
121
+ } ) ;
122
+
123
+ function setRanges ( mockCopy ) {
124
+ mockCopy . layout . xaxis . autorange = false ;
125
+ mockCopy . layout . xaxis . range = setRangeX . slice ( ) ;
126
+
127
+ mockCopy . layout . yaxis . autorange = false ;
128
+ mockCopy . layout . yaxis . range = setRangeY . slice ( ) ;
129
+
130
+ return mockCopy ;
131
+ }
132
+
133
+ describe ( 'when set to \'reset+autorange\' (the default)' , function ( ) {
134
+ it ( 'should work when \'autorange\' is on' , function ( done ) {
135
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
136
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
137
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
138
+
139
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
140
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
141
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
142
+
143
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
144
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
145
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
146
+
147
+ done ( ) ;
148
+ } ) ;
149
+ } ) ;
150
+ } ) ;
151
+ } ) ;
152
+
153
+ it ( 'should reset to set range on double click' , function ( done ) {
154
+ mockCopy = setRanges ( mockCopy ) ;
155
+
156
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
157
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
158
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
159
+
160
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
161
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
162
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
163
+
164
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
165
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
166
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
167
+
168
+ done ( ) ;
169
+ } ) ;
170
+ } ) ;
171
+ } ) ;
172
+ } ) ;
173
+
174
+ it ( 'should autosize on 1st double click and reset on 2nd' , function ( done ) {
175
+ mockCopy = setRanges ( mockCopy ) ;
176
+
177
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout ) . then ( function ( ) {
178
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
179
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
180
+
181
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
182
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
183
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
184
+
185
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
186
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
187
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
188
+
189
+ done ( ) ;
190
+ } ) ;
191
+ } ) ;
192
+ } ) ;
193
+ } ) ;
194
+
195
+ } ) ;
196
+
197
+ describe ( 'when set to \'reset\'' , function ( ) {
198
+ var config = {
199
+ doubleClick : 'reset'
200
+ } ;
201
+
202
+ it ( 'should work when \'autorange\' is on' , function ( done ) {
203
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
204
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
205
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
206
+
207
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
208
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
209
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
210
+
211
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
212
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
213
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
214
+
215
+ done ( ) ;
216
+ } ) ;
217
+ } ) ;
218
+ } ) ;
219
+ } ) ;
220
+
221
+ it ( 'should reset to set range on double click' , function ( done ) {
222
+ mockCopy = setRanges ( mockCopy ) ;
223
+
224
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
225
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
226
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
227
+
228
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
229
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
230
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
231
+
232
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
233
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
234
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
235
+
236
+ done ( ) ;
237
+ } ) ;
238
+ } ) ;
239
+ } ) ;
240
+ } ) ;
241
+
242
+ it ( 'should reset on all double clicks' , function ( done ) {
243
+ mockCopy = setRanges ( mockCopy ) ;
244
+
245
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
246
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
247
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
248
+
249
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
250
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
251
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
252
+
253
+ done ( ) ;
254
+ } ) ;
255
+ } ) ;
256
+ } ) ;
257
+
258
+ } ) ;
259
+
260
+ describe ( 'when set to \'autosize\'' , function ( ) {
261
+ var config = {
262
+ doubleClick : 'autosize'
263
+ } ;
264
+
265
+ it ( 'should work when \'autorange\' is on' , function ( done ) {
266
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
267
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
268
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
269
+
270
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
271
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
272
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
273
+
274
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
275
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
276
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
277
+
278
+ done ( ) ;
279
+ } ) ;
280
+ } ) ;
281
+ } ) ;
282
+ } ) ;
283
+
284
+ it ( 'should set to autorange on double click' , function ( done ) {
285
+ mockCopy = setRanges ( mockCopy ) ;
286
+
287
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
288
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
289
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
290
+
291
+ Plotly . relayout ( gd , update ) . then ( function ( ) {
292
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( zoomRangeX ) ;
293
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( zoomRangeY ) ;
294
+
295
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
296
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
297
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
298
+
299
+ done ( ) ;
300
+ } ) ;
301
+ } ) ;
302
+ } ) ;
303
+ } ) ;
304
+
305
+ it ( 'should reset on all double clicks' , function ( done ) {
306
+ mockCopy = setRanges ( mockCopy ) ;
307
+
308
+ Plotly . plot ( gd , mockCopy . data , mockCopy . layout , config ) . then ( function ( ) {
309
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( setRangeX ) ;
310
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( setRangeY ) ;
311
+
312
+ doubleClick ( blankPos [ 0 ] , blankPos [ 1 ] , function ( ) {
313
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( autoRangeX ) ;
314
+ expect ( gd . layout . yaxis . range ) . toBeCloseToArray ( autoRangeY ) ;
315
+
316
+ done ( ) ;
317
+ } ) ;
318
+ } ) ;
319
+ } ) ;
320
+
321
+ } ) ;
322
+
323
+ } ) ;
90
324
} ) ;
0 commit comments