@@ -233,18 +233,6 @@ function viewModel(model) {
233
233
return viewModel ;
234
234
}
235
235
236
- function lineLayerModel ( vm ) {
237
- return c . layers . map ( function ( key ) {
238
- return {
239
- key : key ,
240
- context : key === 'contextLineLayer' ,
241
- pick : key === 'pickLineLayer' ,
242
- viewModel : vm ,
243
- model : vm . model
244
- } ;
245
- } ) ;
246
- }
247
-
248
236
function styleExtentTexts ( selection ) {
249
237
selection
250
238
. classed ( 'axisExtentText' , true )
@@ -253,7 +241,7 @@ function styleExtentTexts(selection) {
253
241
. style ( 'user-select' , 'none' ) ;
254
242
}
255
243
256
- module . exports = function ( root , svg , styledData , layout , callbacks ) {
244
+ module . exports = function ( root , svg , parcoordsLineLayers , styledData , layout , callbacks ) {
257
245
var domainBrushing = false ;
258
246
var linePickActive = true ;
259
247
@@ -300,37 +288,31 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
300
288
. map ( model . bind ( 0 , layout ) )
301
289
. map ( viewModel ) ;
302
290
303
- root . selectAll ( '.parcoords-line-layers' ) . remove ( ) ;
304
-
305
- var parcoordsLineLayers = root . selectAll ( '.parcoords-line-layers' )
306
- . data ( vm , keyFun ) ;
307
-
308
- parcoordsLineLayers . enter ( )
309
- . insert ( 'div' , '.' + svg . attr ( 'class' ) . split ( ' ' ) . join ( ' .' ) ) // not hardcoding .main-svg
310
- . classed ( 'parcoords-line-layers' , true )
311
- . style ( 'box-sizing' , 'content-box' ) ;
291
+ parcoordsLineLayers . each ( function ( d , i ) {
292
+ return Lib . extendFlat ( d , vm [ i ] ) ;
293
+ } ) ;
312
294
313
295
parcoordsLineLayers
314
296
. style ( 'transform' , function ( d ) {
315
297
return 'translate(' + ( d . model . translateX - c . overdrag ) + 'px,' + d . model . translateY + 'px)' ;
316
298
} ) ;
317
299
318
- var parcoordsLineLayer = parcoordsLineLayers . selectAll ( '.parcoords-lines' )
319
- . data ( lineLayerModel , keyFun ) ;
300
+ var parcoordsLineLayer = parcoordsLineLayers . selectAll ( '.gl-canvas' )
301
+ . each ( function ( d ) {
302
+ var key = d . key ;
303
+ d . context = key === 'contextLayer' ;
304
+ d . pick = key === 'pickLayer' ;
305
+
306
+ // FIXME: figure out how to handle multiple instances
307
+ d . viewModel = vm [ 0 ] ;
308
+ d . model = vm [ 0 ] . model ;
309
+ } ) ;
320
310
321
311
var tweakables = { renderers : [ ] , dimensions : [ ] } ;
322
312
323
313
var lastHovered = null ;
324
314
325
- parcoordsLineLayer . enter ( )
326
- . append ( 'canvas' )
327
- . attr ( 'class' , function ( d ) { return 'parcoords-lines ' + ( d . context ? 'context' : d . pick ? 'pick' : 'focus' ) ; } )
328
- . style ( 'box-sizing' , 'content-box' )
329
- . style ( 'float' , 'left' )
330
- . style ( 'clear' , 'both' )
331
- . style ( 'left' , 0 )
332
- . style ( 'overflow' , 'visible' )
333
- . style ( 'position' , function ( d , i ) { return i > 0 ? 'absolute' : 'absolute' ; } )
315
+ parcoordsLineLayer
334
316
. filter ( function ( d ) { return d . pick ; } )
335
317
. on ( 'mousemove' , function ( d ) {
336
318
if ( linePickActive && d . lineLayer && callbacks && callbacks . hover ) {
@@ -512,8 +494,8 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
512
494
. attr ( 'transform' , function ( d ) { return 'translate(' + d . xScale ( d . xIndex ) + ', 0)' ; } ) ;
513
495
d3 . select ( this ) . attr ( 'transform' , 'translate(' + d . x + ', 0)' ) ;
514
496
yAxis . each ( function ( dd , i , ii ) { if ( ii === d . parent . key ) p . dimensions [ i ] = dd ; } ) ;
515
- p . contextLineLayer && p . contextLineLayer . render ( p . panels , false , ! someFiltersActive ( p ) ) ;
516
- p . focusLineLayer . render && p . focusLineLayer . render ( p . panels ) ;
497
+ p . contextLayer && p . contextLayer . render ( p . panels , false , ! someFiltersActive ( p ) ) ;
498
+ p . focusLayer . render && p . focusLayer . render ( p . panels ) ;
517
499
} )
518
500
. on ( 'dragend' , function ( d ) {
519
501
var p = d . parent ;
@@ -528,9 +510,9 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
528
510
updatePanelLayout ( yAxis , p ) ;
529
511
d3 . select ( this )
530
512
. attr ( 'transform' , function ( d ) { return 'translate(' + d . x + ', 0)' ; } ) ;
531
- p . contextLineLayer && p . contextLineLayer . render ( p . panels , false , ! someFiltersActive ( p ) ) ;
532
- p . focusLineLayer && p . focusLineLayer . render ( p . panels ) ;
533
- p . pickLineLayer && p . pickLineLayer . render ( p . panels , true ) ;
513
+ p . contextLayer && p . contextLayer . render ( p . panels , false , ! someFiltersActive ( p ) ) ;
514
+ p . focusLayer && p . focusLayer . render ( p . panels ) ;
515
+ p . pickLayer && p . pickLayer . render ( p . panels , true ) ;
534
516
linePickActive = true ;
535
517
536
518
if ( callbacks && callbacks . axesMoved ) {
@@ -742,13 +724,13 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
742
724
var newExtent = reset ? [ 0 , 1 ] : extent . slice ( ) ;
743
725
if ( newExtent [ 0 ] !== filter [ 0 ] || newExtent [ 1 ] !== filter [ 1 ] ) {
744
726
dimensions [ dimension . xIndex ] . filter = newExtent ;
745
- p . focusLineLayer && p . focusLineLayer . render ( p . panels , true ) ;
727
+ p . focusLayer && p . focusLayer . render ( p . panels , true ) ;
746
728
var filtersActive = someFiltersActive ( p ) ;
747
729
if ( ! contextShown && filtersActive ) {
748
- p . contextLineLayer && p . contextLineLayer . render ( p . panels , true ) ;
730
+ p . contextLayer && p . contextLayer . render ( p . panels , true ) ;
749
731
contextShown = true ;
750
732
} else if ( contextShown && ! filtersActive ) {
751
- p . contextLineLayer && p . contextLineLayer . render ( p . panels , true , true ) ;
733
+ p . contextLayer && p . contextLayer . render ( p . panels , true , true ) ;
752
734
contextShown = false ;
753
735
}
754
736
}
@@ -769,9 +751,9 @@ module.exports = function(root, svg, styledData, layout, callbacks) {
769
751
f [ 1 ] = Math . min ( 1 , f [ 1 ] + 0.05 ) ;
770
752
}
771
753
d3 . select ( this ) . transition ( ) . duration ( 150 ) . call ( dimension . brush . extent ( f ) ) ;
772
- p . focusLineLayer . render ( p . panels , true ) ;
754
+ p . focusLayer . render ( p . panels , true ) ;
773
755
}
774
- p . pickLineLayer && p . pickLineLayer . render ( p . panels , true ) ;
756
+ p . pickLayer && p . pickLayer . render ( p . panels , true ) ;
775
757
linePickActive = true ;
776
758
domainBrushing = 'ending' ;
777
759
if ( callbacks && callbacks . filterChanged ) {
0 commit comments