@@ -4,14 +4,18 @@ var Lib = require('@src/lib');
4
4
var createGraphDiv = require ( '../assets/create_graph_div' ) ;
5
5
var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
6
6
var customMatchers = require ( '../assets/custom_matchers' ) ;
7
+ var hasWebGLSupport = require ( '../assets/has_webgl_support' ) ;
7
8
8
9
// cartesian click events events use the hover data
9
10
// from the mousemove events and then simulate
10
11
// a click event on mouseup
11
- // var click = require('../assets/click ');
12
+ var click = require ( '../assets/timed_click ' ) ;
12
13
var hover = require ( '../assets/hover' ) ;
13
14
14
15
describe ( 'Test click interactions:' , function ( ) {
16
+
17
+ if ( ! hasWebGLSupport ( 'gl2d_click_test' ) ) return ;
18
+
15
19
var mock = require ( '@mocks/gl2d_14.json' ) ;
16
20
17
21
var mockCopy , gd ;
@@ -97,6 +101,41 @@ describe('Test click interactions:', function() {
97
101
} ) ) ;
98
102
99
103
104
+ } ) ;
105
+
106
+ it ( 'event happens even on a click interaction' , function ( done ) {
107
+
108
+ var modifiedMockCopy = Lib . extendDeep ( { } , mockCopy ) ;
109
+ modifiedMockCopy . data [ 0 ] . hoverinfo = 'none' ;
110
+
111
+ Plotly . plot ( gd , modifiedMockCopy . data , modifiedMockCopy . layout )
112
+
113
+ . then ( new Promise ( function ( ) {
114
+
115
+ gd . on ( 'plotly_hover' , function ( data ) {
116
+ futureData = data ;
117
+ } ) ;
118
+
119
+ click ( 654.7712871743302 , 316.97670766680994 ) ;
120
+
121
+ window . setTimeout ( function ( ) {
122
+
123
+ expect ( futureData . points . length ) . toEqual ( 1 ) ;
124
+
125
+ var pt = futureData . points [ 0 ] ;
126
+
127
+ expect ( Object . keys ( pt ) ) . toEqual ( [
128
+ 'trace' , 'dataCoord' , 'traceCoord' , 'textLabel' , 'color' ,
129
+ 'name' , 'hoverinfo' , 'screenCoord'
130
+ ] ) ;
131
+
132
+ expect ( pt . traceCoord ) . toEqual ( [ 15.772 , 0.387 ] ) ;
133
+
134
+ done ( ) ;
135
+ } , 250 ) ;
136
+ } ) ) ;
137
+
138
+
100
139
} ) ;
101
140
102
141
it ( 'unhover happens' , function ( done ) {
@@ -143,4 +182,110 @@ describe('Test click interactions:', function() {
143
182
144
183
145
184
} ) ;
185
+
186
+ describe ( 'click event is fired on click' , function ( ) {
187
+ var futureData ;
188
+
189
+ it ( 'in general' , function ( done ) {
190
+
191
+ var modifiedMockCopy = Lib . extendDeep ( { } , mockCopy ) ;
192
+
193
+ Plotly . plot ( gd , modifiedMockCopy . data , modifiedMockCopy . layout )
194
+
195
+ . then ( new Promise ( function ( ) {
196
+
197
+ gd . on ( 'plotly_click' , function ( data ) {
198
+ futureData = data ;
199
+ } ) ;
200
+
201
+ click ( 654.7712871743302 , 316.97670766680994 ) ;
202
+
203
+ window . setTimeout ( function ( ) {
204
+ expect ( futureData . points [ 0 ] . traceCoord ) . toEqual ( [ 15.772 , 0.387 ] ) ;
205
+
206
+ done ( ) ;
207
+
208
+ } , 350 ) ;
209
+ } ) ) ;
210
+
211
+ } ) ;
212
+
213
+ it ( 'even when hoverinfo (== plotly tooltip) is set to none' , function ( done ) {
214
+
215
+ var modifiedMockCopy = Lib . extendDeep ( { } , mockCopy ) ;
216
+ modifiedMockCopy . data [ 0 ] . hoverinfo = 'none' ;
217
+
218
+ Plotly . plot ( gd , modifiedMockCopy . data , modifiedMockCopy . layout )
219
+
220
+ . then ( new Promise ( function ( ) {
221
+
222
+ gd . on ( 'plotly_hover' , function ( data ) {
223
+ futureData = data ;
224
+ } ) ;
225
+
226
+ hover ( 654.7712871743302 , 316.97670766680994 ) ;
227
+
228
+ window . setTimeout ( function ( ) {
229
+
230
+ expect ( futureData . points . length ) . toEqual ( 1 ) ;
231
+
232
+ var pt = futureData . points [ 0 ] ;
233
+
234
+ expect ( Object . keys ( pt ) ) . toEqual ( [
235
+ 'trace' , 'dataCoord' , 'traceCoord' , 'textLabel' , 'color' ,
236
+ 'name' , 'hoverinfo' , 'screenCoord'
237
+ ] ) ;
238
+
239
+ expect ( pt . traceCoord ) . toEqual ( [ 15.772 , 0.387 ] ) ;
240
+
241
+ done ( ) ;
242
+ } , 250 ) ;
243
+ } ) ) ;
244
+
245
+
246
+ } ) ;
247
+
248
+ it ( 'unhover happens' , function ( done ) {
249
+
250
+ var modifiedMockCopy = Lib . extendDeep ( { } , mockCopy ) ;
251
+ modifiedMockCopy . data [ 0 ] . hoverinfo = 'none' ;
252
+
253
+ Plotly . plot ( gd , modifiedMockCopy . data , modifiedMockCopy . layout )
254
+
255
+ . then ( new Promise ( function ( ) {
256
+
257
+ futureData = undefined ;
258
+
259
+ gd . on ( 'plotly_unhover' , function ( ) {
260
+ futureData = 'emitted plotly_unhover' ;
261
+ } ) ;
262
+
263
+ hover ( 654.7712871743302 , 316.97670766680994 ) ;
264
+
265
+ // fairly realistic simulation of moving with the cursor
266
+ window . setTimeout ( function ( ) {
267
+
268
+ var x = 654 , y = 316 ; // we start here
269
+ var canceler = window . setInterval ( function ( ) {
270
+ hover ( x -- , y ++ ) ; // move the cursor
271
+ } , 10 ) ;
272
+
273
+ window . setTimeout ( function ( ) {
274
+ window . clearInterval ( canceler ) ; // stop the mouse at some point
275
+ } , 250 ) ;
276
+
277
+ window . setTimeout ( function ( ) {
278
+
279
+ expect ( futureData ) . toEqual ( 'emitted plotly_unhover' ) ;
280
+
281
+ done ( ) ;
282
+
283
+ } , 250 ) ;
284
+
285
+ } , 250 ) ;
286
+ } ) ) ;
287
+
288
+ } ) ;
289
+
290
+ } ) ;
146
291
} ) ;
0 commit comments