@@ -30,7 +30,10 @@ function calc(gd, trace) {
30
30
var commonLength = trace . _commonLength ;
31
31
var stash = { } ;
32
32
var opts = { } ;
33
- var matrixData = opts . data = [ ] ;
33
+ // 'c' for calculated, 'l' for linear,
34
+ // only differ here for log axes, pass ldata to createMatrix as 'data'
35
+ var cdata = opts . cdata = [ ] ;
36
+ var ldata = opts . data = [ ] ;
34
37
var i , k , dim ;
35
38
36
39
for ( i = 0 ; i < dimensions . length ; i ++ ) {
@@ -39,14 +42,19 @@ function calc(gd, trace) {
39
42
if ( dim . visible ) {
40
43
var axId = trace . _diag [ i ] [ 0 ] || trace . _diag [ i ] [ 1 ] ;
41
44
var ax = AxisIDs . getFromId ( gd , axId ) ;
42
- if ( ax ) matrixData . push ( makeCalcdata ( ax , trace , dim ) ) ;
45
+ if ( ax ) {
46
+ var ccol = makeCalcdata ( ax , trace , dim ) ;
47
+ var lcol = ax . type === 'log' ? Lib . simpleMap ( ccol , ax . c2l ) : ccol ;
48
+ cdata . push ( ccol ) ;
49
+ ldata . push ( lcol ) ;
50
+ }
43
51
}
44
52
}
45
53
46
54
calcColorscales ( trace ) ;
47
55
Lib . extendFlat ( opts , convertMarkerStyle ( trace ) ) ;
48
56
49
- var visibleLength = matrixData . length ;
57
+ var visibleLength = cdata . length ;
50
58
var hasTooManyPoints = ( visibleLength * commonLength ) > TOO_MANY_POINTS ;
51
59
52
60
for ( i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
@@ -68,7 +76,7 @@ function calc(gd, trace) {
68
76
ppad = calcMarkerSize ( trace , commonLength ) ;
69
77
}
70
78
71
- calcAxisExpansion ( gd , trace , xa , ya , matrixData [ k ] , matrixData [ k ] , ppad ) ;
79
+ calcAxisExpansion ( gd , trace , xa , ya , cdata [ k ] , cdata [ k ] , ppad ) ;
72
80
k ++ ;
73
81
}
74
82
}
@@ -84,24 +92,17 @@ function calc(gd, trace) {
84
92
}
85
93
86
94
function makeCalcdata ( ax , trace , dim ) {
87
- var i ;
88
-
89
- var cdata = ax . makeCalcdata ( {
95
+ // call makeCalcdata with fake input
96
+ var ccol = ax . makeCalcdata ( {
90
97
v : dim . values ,
91
98
vcalendar : trace . calendar
92
99
} , 'v' ) ;
93
100
94
- for ( i = 0 ; i < cdata . length ; i ++ ) {
95
- cdata [ i ] = cdata [ i ] === BADNUM ? NaN : cdata [ i ] ;
101
+ for ( var i = 0 ; i < ccol . length ; i ++ ) {
102
+ ccol [ i ] = ccol [ i ] === BADNUM ? NaN : ccol [ i ] ;
96
103
}
97
104
98
- if ( ax . type === 'log' ) {
99
- for ( i = 0 ; i < cdata . length ; i ++ ) {
100
- cdata [ i ] = ax . c2l ( cdata [ i ] ) ;
101
- }
102
- }
103
-
104
- return cdata ;
105
+ return ccol ;
105
106
}
106
107
107
108
function sceneUpdate ( gd , stash ) {
@@ -154,11 +155,11 @@ function sceneUpdate(gd, stash) {
154
155
return scene ;
155
156
}
156
157
157
- function plot ( gd , _ , cdata ) {
158
- if ( ! cdata . length ) return ;
158
+ function plot ( gd , _ , splomCalcData ) {
159
+ if ( ! splomCalcData . length ) return ;
159
160
160
- for ( var i = 0 ; i < cdata . length ; i ++ ) {
161
- plotOne ( gd , cdata [ i ] [ 0 ] ) ;
161
+ for ( var i = 0 ; i < splomCalcData . length ; i ++ ) {
162
+ plotOne ( gd , splomCalcData [ i ] [ 0 ] ) ;
162
163
}
163
164
}
164
165
@@ -169,13 +170,13 @@ function plotOne(gd, cd0) {
169
170
var stash = cd0 . t ;
170
171
var scene = stash . _scene ;
171
172
var matrixOpts = scene . matrixOptions ;
172
- var matrixData = matrixOpts . data ;
173
+ var cdata = matrixOpts . cdata ;
173
174
var regl = fullLayout . _glcanvas . data ( ) [ 0 ] . regl ;
174
175
var dragmode = fullLayout . dragmode ;
175
176
var xa , ya ;
176
177
var i , j , k ;
177
178
178
- if ( matrixData . length === 0 ) return ;
179
+ if ( cdata . length === 0 ) return ;
179
180
180
181
// augment options with proper upper/lower halves
181
182
// regl-scattermatrix's default grid start from bottom-left
@@ -184,7 +185,7 @@ function plotOne(gd, cd0) {
184
185
matrixOpts . diagonal = trace . diagonal . visible ;
185
186
186
187
var dimensions = trace . dimensions ;
187
- var visibleLength = matrixData . length ;
188
+ var visibleLength = cdata . length ;
188
189
var viewOpts = { } ;
189
190
viewOpts . ranges = new Array ( visibleLength ) ;
190
191
viewOpts . domains = new Array ( visibleLength ) ;
@@ -196,16 +197,16 @@ function plotOne(gd, cd0) {
196
197
197
198
xa = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 0 ] ) ;
198
199
if ( xa ) {
199
- rng [ 0 ] = xa . range [ 0 ] ;
200
- rng [ 2 ] = xa . range [ 1 ] ;
200
+ rng [ 0 ] = xa . _rl [ 0 ] ;
201
+ rng [ 2 ] = xa . _rl [ 1 ] ;
201
202
dmn [ 0 ] = xa . domain [ 0 ] ;
202
203
dmn [ 2 ] = xa . domain [ 1 ] ;
203
204
}
204
205
205
206
ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
206
207
if ( ya ) {
207
- rng [ 1 ] = ya . range [ 0 ] ;
208
- rng [ 3 ] = ya . range [ 1 ] ;
208
+ rng [ 1 ] = ya . _rl [ 0 ] ;
209
+ rng [ 3 ] = ya . _rl [ 1 ] ;
209
210
dmn [ 1 ] = ya . domain [ 0 ] ;
210
211
dmn [ 3 ] = ya . domain [ 1 ] ;
211
212
}
@@ -258,15 +259,15 @@ function plotOne(gd, cd0) {
258
259
if ( xa ) {
259
260
xpx [ k ] = new Array ( commonLength ) ;
260
261
for ( j = 0 ; j < commonLength ; j ++ ) {
261
- xpx [ k ] [ j ] = xa . c2p ( matrixData [ k ] [ j ] ) ;
262
+ xpx [ k ] [ j ] = xa . c2p ( cdata [ k ] [ j ] ) ;
262
263
}
263
264
}
264
265
265
266
ya = AxisIDs . getFromId ( gd , trace . _diag [ i ] [ 1 ] ) ;
266
267
if ( ya ) {
267
268
ypx [ k ] = new Array ( commonLength ) ;
268
269
for ( j = 0 ; j < commonLength ; j ++ ) {
269
- ypx [ k ] [ j ] = ya . c2p ( matrixData [ k ] [ j ] ) ;
270
+ ypx [ k ] [ j ] = ya . c2p ( cdata [ k ] [ j ] ) ;
270
271
}
271
272
}
272
273
@@ -298,19 +299,21 @@ function plotOne(gd, cd0) {
298
299
function hoverPoints ( pointData , xval , yval ) {
299
300
var cd = pointData . cd ;
300
301
var trace = cd [ 0 ] . trace ;
302
+ var stash = cd [ 0 ] . t ;
303
+ var scene = stash . _scene ;
304
+ var cdata = scene . matrixOptions . cdata ;
301
305
var xa = pointData . xa ;
302
306
var ya = pointData . ya ;
303
307
var xpx = xa . c2p ( xval ) ;
304
308
var ypx = ya . c2p ( yval ) ;
305
309
var maxDistance = pointData . distance ;
306
- var dimensions = trace . dimensions ;
307
310
308
311
var xi = getDimIndex ( trace , xa ) ;
309
312
var yi = getDimIndex ( trace , ya ) ;
310
- if ( xi === undefined || yi === undefined ) return [ pointData ] ;
313
+ if ( xi === false || yi === false ) return [ pointData ] ;
311
314
312
- var x = dimensions [ xi ] . values || [ ] ;
313
- var y = dimensions [ yi ] . values || [ ] ;
315
+ var x = cdata [ xi ] ;
316
+ var y = cdata [ yi ] ;
314
317
315
318
var id , dxy ;
316
319
var minDist = maxDistance ;
@@ -341,13 +344,13 @@ function hoverPoints(pointData, xval, yval) {
341
344
342
345
function selectPoints ( searchInfo , polygon ) {
343
346
var cd = searchInfo . cd ;
344
- var selection = [ ] ;
345
347
var trace = cd [ 0 ] . trace ;
346
348
var stash = cd [ 0 ] . t ;
347
349
var scene = stash . _scene ;
350
+ var cdata = scene . matrixOptions . cdata ;
348
351
var xa = searchInfo . xaxis ;
349
352
var ya = searchInfo . yaxis ;
350
- var matrixData = scene . matrixOptions . data ;
353
+ var selection = [ ] ;
351
354
var i ;
352
355
353
356
if ( ! scene ) return selection ;
@@ -357,12 +360,12 @@ function selectPoints(searchInfo, polygon) {
357
360
358
361
var xi = getDimIndex ( trace , xa ) ;
359
362
var yi = getDimIndex ( trace , ya ) ;
360
- if ( xi === undefined || yi === undefined ) return selection ;
363
+ if ( xi === false || yi === false ) return selection ;
361
364
362
365
var xpx = stash . xpx [ xi ] ;
363
366
var ypx = stash . ypx [ yi ] ;
364
- var x = matrixData [ xi ] ;
365
- var y = matrixData [ yi ] ;
367
+ var x = cdata [ xi ] ;
368
+ var y = cdata [ yi ] ;
366
369
367
370
// degenerate polygon does not enable selection
368
371
// filter out points by visible scatter ones
@@ -423,10 +426,15 @@ function getDimIndex(trace, ax) {
423
426
var axId = ax . _id ;
424
427
var axLetter = axId . charAt ( 0 ) ;
425
428
var ind = { x : 0 , y : 1 } [ axLetter ] ;
429
+ var dimensions = trace . dimensions ;
426
430
427
- for ( var i = 0 ; i < trace . dimensions . length ; i ++ ) {
428
- if ( trace . _diag [ i ] [ ind ] === axId ) return i ;
431
+ for ( var i = 0 , k = 0 ; i < dimensions . length ; i ++ ) {
432
+ if ( dimensions [ i ] . visible ) {
433
+ if ( trace . _diag [ i ] [ ind ] === axId ) return k ;
434
+ k ++ ;
435
+ }
429
436
}
437
+ return false ;
430
438
}
431
439
432
440
module . exports = {
0 commit comments