@@ -36,6 +36,8 @@ function calc(gd, trace) {
36
36
// only differ here for log axes, pass ldata to createMatrix as 'data'
37
37
var cdata = opts . cdata = [ ] ;
38
38
var ldata = opts . data = [ ] ;
39
+ // keep track of visible dimensions
40
+ var visibleDims = stash . visibleDims = [ ] ;
39
41
var i , k , dim , xa , ya ;
40
42
41
43
function makeCalcdata ( ax , dim ) {
@@ -71,6 +73,8 @@ function calc(gd, trace) {
71
73
// should not make it here, if both xa and ya undefined
72
74
makeCalcdata ( ya , dim ) ;
73
75
}
76
+
77
+ visibleDims . push ( i ) ;
74
78
}
75
79
}
76
80
@@ -80,26 +84,24 @@ function calc(gd, trace) {
80
84
var visibleLength = cdata . length ;
81
85
var hasTooManyPoints = ( visibleLength * commonLength ) > TOO_MANY_POINTS ;
82
86
83
- for ( i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
87
+ for ( k = 0 ; k < visibleDims . length ; k ++ ) {
88
+ i = visibleDims [ k ] ;
84
89
dim = dimensions [ i ] ;
85
90
86
- if ( dim . visible ) {
87
- xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
88
- ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
89
-
90
- // Reuse SVG scatter axis expansion routine.
91
- // For graphs with very large number of points and array marker.size,
92
- // use average marker size instead to speed things up.
93
- var ppad ;
94
- if ( hasTooManyPoints ) {
95
- ppad = 2 * ( opts . sizeAvg || Math . max ( opts . size , 3 ) ) ;
96
- } else {
97
- ppad = calcMarkerSize ( trace , commonLength ) ;
98
- }
99
-
100
- calcAxisExpansion ( gd , trace , xa , ya , cdata [ k ] , cdata [ k ] , ppad ) ;
101
- k ++ ;
91
+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) || { } ;
92
+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) || { } ;
93
+
94
+ // Reuse SVG scatter axis expansion routine.
95
+ // For graphs with very large number of points and array marker.size,
96
+ // use average marker size instead to speed things up.
97
+ var ppad ;
98
+ if ( hasTooManyPoints ) {
99
+ ppad = 2 * ( opts . sizeAvg || Math . max ( opts . size , 3 ) ) ;
100
+ } else {
101
+ ppad = calcMarkerSize ( trace , commonLength ) ;
102
102
}
103
+
104
+ calcAxisExpansion ( gd , trace , xa , ya , cdata [ k ] , cdata [ k ] , ppad ) ;
103
105
}
104
106
105
107
var scene = stash . _scene = sceneUpdate ( gd , stash ) ;
@@ -133,9 +135,7 @@ function sceneUpdate(gd, stash) {
133
135
// draw traces in selection mode
134
136
if ( scene . matrix && scene . selectBatch ) {
135
137
scene . matrix . draw ( scene . unselectBatch , scene . selectBatch ) ;
136
- }
137
-
138
- else if ( scene . matrix ) {
138
+ } else if ( scene . matrix ) {
139
139
scene . matrix . draw ( ) ;
140
140
}
141
141
@@ -191,34 +191,32 @@ function plotOne(gd, cd0) {
191
191
matrixOpts . upper = trace . showlowerhalf ;
192
192
matrixOpts . diagonal = trace . diagonal . visible ;
193
193
194
- var dimensions = trace . dimensions ;
194
+ var visibleDims = stash . visibleDims ;
195
195
var visibleLength = cdata . length ;
196
196
var viewOpts = { } ;
197
197
viewOpts . ranges = new Array ( visibleLength ) ;
198
198
viewOpts . domains = new Array ( visibleLength ) ;
199
199
200
- for ( i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
201
- if ( trace . dimensions [ i ] . visible ) {
202
- var rng = viewOpts . ranges [ k ] = new Array ( 4 ) ;
203
- var dmn = viewOpts . domains [ k ] = new Array ( 4 ) ;
200
+ for ( k = 0 ; k < visibleDims . length ; k ++ ) {
201
+ i = visibleDims [ k ] ;
204
202
205
- xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
206
- if ( xa ) {
207
- rng [ 0 ] = xa . _rl [ 0 ] ;
208
- rng [ 2 ] = xa . _rl [ 1 ] ;
209
- dmn [ 0 ] = xa . domain [ 0 ] ;
210
- dmn [ 2 ] = xa . domain [ 1 ] ;
211
- }
203
+ var rng = viewOpts . ranges [ k ] = new Array ( 4 ) ;
204
+ var dmn = viewOpts . domains [ k ] = new Array ( 4 ) ;
212
205
213
- ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
214
- if ( ya ) {
215
- rng [ 1 ] = ya . _rl [ 0 ] ;
216
- rng [ 3 ] = ya . _rl [ 1 ] ;
217
- dmn [ 1 ] = ya . domain [ 0 ] ;
218
- dmn [ 3 ] = ya . domain [ 1 ] ;
219
- }
206
+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
207
+ if ( xa ) {
208
+ rng [ 0 ] = xa . _rl [ 0 ] ;
209
+ rng [ 2 ] = xa . _rl [ 1 ] ;
210
+ dmn [ 0 ] = xa . domain [ 0 ] ;
211
+ dmn [ 2 ] = xa . domain [ 1 ] ;
212
+ }
220
213
221
- k ++ ;
214
+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
215
+ if ( ya ) {
216
+ rng [ 1 ] = ya . _rl [ 0 ] ;
217
+ rng [ 3 ] = ya . _rl [ 1 ] ;
218
+ dmn [ 1 ] = ya . domain [ 0 ] ;
219
+ dmn [ 3 ] = ya . domain [ 1 ] ;
222
220
}
223
221
}
224
222
@@ -260,25 +258,23 @@ function plotOne(gd, cd0) {
260
258
var xpx = stash . xpx = new Array ( visibleLength ) ;
261
259
var ypx = stash . ypx = new Array ( visibleLength ) ;
262
260
263
- for ( i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
264
- if ( trace . dimensions [ i ] . visible ) {
265
- xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
266
- if ( xa ) {
267
- xpx [ k ] = new Array ( commonLength ) ;
268
- for ( j = 0 ; j < commonLength ; j ++ ) {
269
- xpx [ k ] [ j ] = xa . c2p ( cdata [ k ] [ j ] ) ;
270
- }
271
- }
261
+ for ( k = 0 ; k < visibleDims . length ; k ++ ) {
262
+ i = visibleDims [ k ] ;
272
263
273
- ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
274
- if ( ya ) {
275
- ypx [ k ] = new Array ( commonLength ) ;
276
- for ( j = 0 ; j < commonLength ; j ++ ) {
277
- ypx [ k ] [ j ] = ya . c2p ( cdata [ k ] [ j ] ) ;
278
- }
264
+ xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
265
+ if ( xa ) {
266
+ xpx [ k ] = new Array ( commonLength ) ;
267
+ for ( j = 0 ; j < commonLength ; j ++ ) {
268
+ xpx [ k ] [ j ] = xa . c2p ( cdata [ k ] [ j ] ) ;
279
269
}
270
+ }
280
271
281
- k ++ ;
272
+ ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
273
+ if ( ya ) {
274
+ ypx [ k ] = new Array ( commonLength ) ;
275
+ for ( j = 0 ; j < commonLength ; j ++ ) {
276
+ ypx [ k ] [ j ] = ya . c2p ( cdata [ k ] [ j ] ) ;
277
+ }
282
278
}
283
279
}
284
280
@@ -293,8 +289,8 @@ function plotOne(gd, cd0) {
293
289
}
294
290
}
295
291
else {
296
- scene . matrix . update ( matrixOpts ) ;
297
- scene . matrix . update ( viewOpts ) ;
292
+ scene . matrix . update ( matrixOpts , null ) ;
293
+ scene . matrix . update ( viewOpts , null ) ;
298
294
stash . xpx = stash . ypx = null ;
299
295
}
300
296
@@ -313,8 +309,8 @@ function hoverPoints(pointData, xval, yval) {
313
309
var ypx = ya . c2p ( yval ) ;
314
310
var maxDistance = pointData . distance ;
315
311
316
- var xi = getDimIndex ( trace , xa ) ;
317
- var yi = getDimIndex ( trace , ya ) ;
312
+ var xi = getDimIndex ( trace , stash , xa ) ;
313
+ var yi = getDimIndex ( trace , stash , ya ) ;
318
314
if ( xi === false || yi === false ) return [ pointData ] ;
319
315
320
316
var x = cdata [ xi ] ;
@@ -363,8 +359,8 @@ function selectPoints(searchInfo, polygon) {
363
359
var hasOnlyLines = ( ! subTypes . hasMarkers ( trace ) && ! subTypes . hasText ( trace ) ) ;
364
360
if ( trace . visible !== true || hasOnlyLines ) return selection ;
365
361
366
- var xi = getDimIndex ( trace , xa ) ;
367
- var yi = getDimIndex ( trace , ya ) ;
362
+ var xi = getDimIndex ( trace , stash , xa ) ;
363
+ var yi = getDimIndex ( trace , stash , ya ) ;
368
364
if ( xi === false || yi === false ) return selection ;
369
365
370
366
var xpx = stash . xpx [ xi ] ;
@@ -445,17 +441,15 @@ function style(gd, cds) {
445
441
}
446
442
}
447
443
448
- function getDimIndex ( trace , ax ) {
444
+ function getDimIndex ( trace , stash , ax ) {
449
445
var axId = ax . _id ;
450
446
var axLetter = axId . charAt ( 0 ) ;
451
447
var ind = { x : 0 , y : 1 } [ axLetter ] ;
452
- var dimensions = trace . dimensions ;
448
+ var visibleDims = stash . visibleDims ;
453
449
454
- for ( var i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
455
- if ( dimensions [ i ] . visible ) {
456
- if ( trace . _diag [ i ] [ ind ] === axId ) return k ;
457
- k ++ ;
458
- }
450
+ for ( var k = 0 ; k < visibleDims . length ; k ++ ) {
451
+ var i = visibleDims [ k ] ;
452
+ if ( trace . _diag [ i ] [ ind ] === axId ) return k ;
459
453
}
460
454
return false ;
461
455
}
0 commit comments