@@ -45,36 +45,34 @@ function drag(gd) {
45
45
for ( var i = 0 ; i < cd . length ; i ++ ) {
46
46
var cd0 = cd [ i ] [ 0 ] ;
47
47
var trace = cd0 . trace ;
48
- var scene = cd0 . t . _scene ;
48
+ var stash = cd0 . t ;
49
+ var scene = stash . _scene ;
49
50
50
51
if ( trace . type === 'splom' && scene && scene . matrix ) {
51
- dragOne ( gd , trace , scene ) ;
52
+ dragOne ( gd , trace , stash , scene ) ;
52
53
}
53
54
}
54
55
}
55
56
56
- function dragOne ( gd , trace , scene ) {
57
- var dimensions = trace . dimensions ;
57
+ function dragOne ( gd , trace , stash , scene ) {
58
58
var visibleLength = scene . matrixOptions . data . length ;
59
+ var visibleDims = stash . visibleDims ;
59
60
var ranges = new Array ( visibleLength ) ;
60
61
61
- for ( var i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
62
- if ( dimensions [ i ] . visible ) {
63
- var rng = ranges [ k ] = new Array ( 4 ) ;
62
+ for ( var k = 0 ; k < visibleDims . length ; k ++ ) {
63
+ var i = visibleDims [ k ] ;
64
+ var rng = ranges [ k ] = new Array ( 4 ) ;
64
65
65
- var xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
66
- if ( xa ) {
67
- rng [ 0 ] = xa . r2l ( xa . range [ 0 ] ) ;
68
- rng [ 2 ] = xa . r2l ( xa . range [ 1 ] ) ;
69
- }
70
-
71
- var ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
72
- if ( ya ) {
73
- rng [ 1 ] = ya . r2l ( ya . range [ 0 ] ) ;
74
- rng [ 3 ] = ya . r2l ( ya . range [ 1 ] ) ;
75
- }
66
+ var xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
67
+ if ( xa ) {
68
+ rng [ 0 ] = xa . r2l ( xa . range [ 0 ] ) ;
69
+ rng [ 2 ] = xa . r2l ( xa . range [ 1 ] ) ;
70
+ }
76
71
77
- k ++ ;
72
+ var ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
73
+ if ( ya ) {
74
+ rng [ 1 ] = ya . r2l ( ya . range [ 0 ] ) ;
75
+ rng [ 3 ] = ya . r2l ( ya . range [ 1 ] ) ;
78
76
}
79
77
}
80
78
@@ -229,6 +227,30 @@ function clean(newFullData, newFullLayout, oldFullData, oldFullLayout, oldCalcda
229
227
Cartesian . clean ( newFullData , newFullLayout , oldFullData , oldFullLayout ) ;
230
228
}
231
229
230
+ function updateFx ( gd ) {
231
+ Cartesian . updateFx ( gd ) ;
232
+
233
+ var fullLayout = gd . _fullLayout ;
234
+ var dragmode = fullLayout . dragmode ;
235
+
236
+ // unset selection styles when coming out of a selection mode
237
+ if ( dragmode === 'zoom' || dragmode === 'pan' ) {
238
+ var cd = gd . calcdata ;
239
+
240
+ for ( var i = 0 ; i < cd . length ; i ++ ) {
241
+ var cd0 = cd [ i ] [ 0 ] ;
242
+ var trace = cd0 . trace ;
243
+
244
+ if ( trace . type === 'splom' ) {
245
+ var scene = cd0 . t . _scene ;
246
+ if ( scene . selectBatch === null ) {
247
+ scene . matrix . update ( scene . matrixOptions , null ) ;
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+
232
254
module . exports = {
233
255
name : SPLOM ,
234
256
attr : Cartesian . attr ,
@@ -239,6 +261,6 @@ module.exports = {
239
261
plot : plot ,
240
262
drag : drag ,
241
263
clean : clean ,
242
- updateFx : Cartesian . updateFx ,
264
+ updateFx : updateFx ,
243
265
toSVG : Cartesian . toSVG
244
266
} ;
0 commit comments