@@ -206,7 +206,7 @@ function viewModel(state, callbacks, model) {
206
206
var unitPad = c . verticalPadding / height ;
207
207
var _unitToPaddedPx = unitToPaddedPx ( height , c . verticalPadding ) ;
208
208
209
- var viewModel = {
209
+ var vm = {
210
210
key : model . key ,
211
211
xScale : xScale ,
212
212
model : model ,
@@ -215,7 +215,7 @@ function viewModel(state, callbacks, model) {
215
215
216
216
var uniqueKeys = { } ;
217
217
218
- viewModel . dimensions = dimensions . filter ( helpers . isVisible ) . map ( function ( dimension , i ) {
218
+ vm . dimensions = dimensions . filter ( helpers . isVisible ) . map ( function ( dimension , i ) {
219
219
var domainToPaddedUnit = domainToPaddedUnitScale ( dimension , unitPad ) ;
220
220
var foundKey = uniqueKeys [ dimension . label ] ;
221
221
uniqueKeys [ dimension . label ] = ( foundKey || 0 ) + 1 ;
@@ -229,7 +229,7 @@ function viewModel(state, callbacks, model) {
229
229
specifiedConstraint . map ( function ( d ) { return d . map ( domainToPaddedUnit ) ; } ) :
230
230
[ [ - Infinity , Infinity ] ] ;
231
231
var brushMove = function ( ) {
232
- var p = viewModel ;
232
+ var p = vm ;
233
233
p . focusLayer && p . focusLayer . render ( p . panels , true ) ;
234
234
var filtersActive = someFiltersActive ( p ) ;
235
235
if ( ! state . contextShown ( ) && filtersActive ) {
@@ -299,7 +299,7 @@ function viewModel(state, callbacks, model) {
299
299
unitToPaddedPx : _unitToPaddedPx ,
300
300
domainScale : domainScale ( height , c . verticalPadding , dimension , tickvals , ticktext ) ,
301
301
ordinalScale : ordinalScale ( dimension ) ,
302
- parent : viewModel ,
302
+ parent : vm ,
303
303
model : model ,
304
304
brush : brush . makeBrush (
305
305
state ,
@@ -310,9 +310,8 @@ function viewModel(state, callbacks, model) {
310
310
} ,
311
311
brushMove ,
312
312
function ( f ) {
313
- var p = viewModel ;
314
- p . focusLayer . render ( p . panels , true ) ;
315
- p . pickLayer && p . pickLayer . render ( p . panels , true ) ;
313
+ vm . focusLayer . render ( vm . panels , true ) ;
314
+ vm . pickLayer && vm . pickLayer . render ( vm . panels , true ) ;
316
315
state . linePickActive ( true ) ;
317
316
if ( callbacks && callbacks . filterChanged ) {
318
317
var invScale = domainToPaddedUnit . invert ;
@@ -321,14 +320,14 @@ function viewModel(state, callbacks, model) {
321
320
var newRanges = f . map ( function ( r ) {
322
321
return r . map ( invScale ) . sort ( Lib . sorterAsc ) ;
323
322
} ) . sort ( function ( a , b ) { return a [ 0 ] - b [ 0 ] ; } ) ;
324
- callbacks . filterChanged ( p . key , dimension . _index , newRanges ) ;
323
+ callbacks . filterChanged ( vm . key , dimension . _index , newRanges ) ;
325
324
}
326
325
}
327
326
)
328
327
} ;
329
328
} ) ;
330
329
331
- return viewModel ;
330
+ return vm ;
332
331
}
333
332
334
333
function styleExtentTexts ( selection ) {
@@ -381,45 +380,61 @@ function updatePanelLayout(yAxis, vm) {
381
380
function calcAllTicks ( cd ) {
382
381
for ( var i = 0 ; i < cd . length ; i ++ ) {
383
382
for ( var j = 0 ; j < cd [ i ] . length ; j ++ ) {
384
- var dimensions = cd [ i ] [ j ] . trace . dimensions ;
383
+ var trace = cd [ i ] [ j ] . trace ;
384
+ var len = trace . _length ;
385
+ var dimensions = trace . dimensions ;
386
+
385
387
for ( var k = 0 ; k < dimensions . length ; k ++ ) {
388
+ var values = dimensions [ k ] . values ;
386
389
var dim = dimensions [ k ] . _ax ;
387
390
388
391
if ( dim ) {
389
- if ( ! dim . range ) dim . range = [ 0 , 1 ] ;
390
- if ( ! dim . dtick ) dim . dtick = 0.1 ;
391
- dim . tickformat = dimensions [ k ] . tickformat ;
392
+ if ( ! dim . range ) {
393
+ var max = - Infinity ;
394
+ var min = Infinity ;
395
+ for ( var q = 0 ; q < len ; q ++ ) {
396
+ var v = values [ q ] ;
397
+ if ( isFinite ( v ) ) {
398
+ if ( max < v ) max = v ;
399
+ if ( min > v ) min = v ;
400
+ }
401
+ }
402
+ dim . range = [ min , max ] ;
403
+ }
392
404
393
- Axes . calcTicks ( dim ) ;
405
+ if ( ! dim . dtick ) dim . dtick = 0.01 * Math . abs ( dim . range [ 1 ] - dim . range [ 0 ] ) ;
394
406
407
+ dim . tickformat = dimensions [ k ] . tickformat ;
408
+ Axes . calcTicks ( dim ) ;
395
409
dim . cleanRange ( ) ;
396
410
}
397
411
}
398
412
}
399
413
}
400
414
}
401
415
402
- module . exports = function parcoords ( gd , cdModule , layout , callbacks ) {
403
- var state = parcoordsInteractionState ( ) ;
416
+ function linearFormat ( dim , v ) {
417
+ return Axes . tickText ( dim . _ax , v , false ) . text ;
418
+ }
404
419
405
- var fullLayout = gd . _fullLayout ;
406
- var svg = fullLayout . _toppaper ;
407
- var glContainer = fullLayout . _glcontainer ;
420
+ function extremeText ( d , isTop ) {
421
+ if ( d . ordinal ) return '' ;
422
+ var domain = d . domainScale . domain ( ) ;
423
+ var v = ( domain [ isTop ? domain . length - 1 : 0 ] ) ;
408
424
409
- function linearFormat ( dim , v ) {
410
- return Axes . tickText ( dim . _ax , v , false ) . text ;
411
- }
425
+ return linearFormat ( d . model . dimensions [ d . visibleIndex ] , v ) ;
426
+ }
412
427
413
- function extremeText ( d , isTop ) {
414
- if ( d . ordinal ) return '' ;
415
- var domain = d . domainScale . domain ( ) ;
416
- var v = ( domain [ isTop ? domain . length - 1 : 0 ] ) ;
417
428
418
- return linearFormat ( d . model . dimensions [ d . visibleIndex ] , v ) ;
419
- }
429
+ module . exports = function parcoords ( gd , cdModule , layout , callbacks ) {
430
+ var fullLayout = gd . _fullLayout ;
431
+ var svg = fullLayout . _toppaper ;
432
+ var glContainer = fullLayout . _glcontainer ;
420
433
421
434
calcAllTicks ( cdModule ) ;
422
435
436
+ var state = parcoordsInteractionState ( ) ;
437
+
423
438
var vm = cdModule
424
439
. filter ( function ( d ) { return unwrap ( d ) . trace . visible ; } )
425
440
. map ( model . bind ( 0 , layout ) )
@@ -509,14 +524,14 @@ module.exports = function parcoords(gd, cdModule, layout, callbacks) {
509
524
} ) ;
510
525
511
526
var yAxis = parcoordsControlView . selectAll ( '.' + c . cn . yAxis )
512
- . data ( function ( vm ) { return vm . dimensions ; } , keyFun ) ;
527
+ . data ( function ( p ) { return p . dimensions ; } , keyFun ) ;
513
528
514
529
yAxis . enter ( )
515
530
. append ( 'g' )
516
531
. classed ( c . cn . yAxis , true ) ;
517
532
518
- parcoordsControlView . each ( function ( vm ) {
519
- updatePanelLayout ( yAxis , vm ) ;
533
+ parcoordsControlView . each ( function ( p ) {
534
+ updatePanelLayout ( yAxis , p ) ;
520
535
} ) ;
521
536
522
537
glLayers
0 commit comments