@@ -275,7 +275,6 @@ function plotOne(gd, plotinfo, cdSubplot, transitionOpts, makeOnCompleteCallback
275
275
. attr ( 'class' , function ( d ) { return d . className ; } )
276
276
. classed ( 'mlayer' , true )
277
277
. classed ( 'rangeplot' , plotinfo . isRangePlot ) ;
278
-
279
278
layers . exit ( ) . remove ( ) ;
280
279
281
280
layers . order ( ) ;
@@ -395,12 +394,11 @@ exports.drawFramework = function(gd) {
395
394
subplotLayers . enter ( ) . append ( 'g' )
396
395
. attr ( 'class' , function ( d ) { return 'subplot ' + d [ 0 ] ; } ) ;
397
396
398
- //subplotLayers.order();
397
+ subplotLayers . order ( ) ;
398
+
399
+ subplotLayers . exit ( )
400
+ . call ( purgeSubplotLayers , fullLayout ) ;
399
401
400
- //subplotLayers.exit()
401
- // .call(purgeSubplotLayers, fullLayout);
402
- console . log ( "Subplotlayers" )
403
- console . log ( subplotLayers )
404
402
subplotLayers . each ( function ( d ) {
405
403
var id = d [ 0 ] ;
406
404
var plotinfo = fullLayout . _plots [ id ] ;
@@ -424,7 +422,7 @@ exports.rangePlot = function(gd, plotinfo, cdSubplot) {
424
422
function makeSubplotData ( gd ) {
425
423
var fullLayout = gd . _fullLayout ;
426
424
var ids = fullLayout . _subplots . cartesian ;
427
- var len = ids . length ;
425
+
428
426
var i , j , id , plotinfo , xa , ya ;
429
427
430
428
// split 'regular' and 'overlaying' subplots
@@ -447,29 +445,24 @@ function makeSubplotData(gd) {
447
445
var zindices = Object . keys ( subplotZindexGroups )
448
446
. map ( Number )
449
447
. sort ( Lib . sorterAsc ) ;
450
-
451
- console . log ( subplotZindexGroups )
448
+ var len = zindices . length ;
452
449
453
- for ( i = 0 ; i < zindices . length ; i ++ ) {
454
- console . log ( i )
450
+ for ( i = 0 ; i < len ; i ++ ) {
455
451
var zindex = subplotZindexGroups [ zindices [ i ] ] ;
456
- console . log ( zindex )
457
- console . log ( )
458
452
var ids = Object . keys ( zindex ) ;
459
453
for ( var j = 0 ; j < ids . length ; j ++ ) {
460
454
var id = ids [ j ] ;
461
455
plotinfo = fullLayout . _plots [ id ] ;
462
- //xa = plotinfo.xaxis;
463
- //ya = plotinfo.yaxis;
464
456
465
- //var xa2 = xa._mainAxis;
466
- //var ya2 = ya._mainAxis;
467
- var mainplot = mainplot ? mainplot : id ; //xa2._id + ya2._id;
468
- var mainplotinfo = fullLayout . _plots [ mainplot ] ;
457
+ var mainplot = mainplot ? mainplot : id ;
458
+ var mainplotinfo = Object . assign ( { } , fullLayout . _plots [ mainplot ] )
469
459
plotinfo . overlays = [ ] ;
470
460
471
- if ( i !== 0 ) { //if(mainplot !== id && mainplotinfo) {
472
- console . log ( "hererere" )
461
+ if ( regulars . indexOf ( id ) !== - 1 || overlays . indexOf ( id ) !== - 1 ) {
462
+ plotinfo . mainplot = mainplot ;
463
+ plotinfo . mainplotinfo = mainplotinfo ;
464
+ overlays . push ( id + '-over-' + i ) ;
465
+ } else if ( mainplot !== id && mainplotinfo ) {
473
466
plotinfo . mainplot = mainplot ;
474
467
plotinfo . mainplotinfo = mainplotinfo ;
475
468
overlays . push ( id ) ;
@@ -478,44 +471,40 @@ function makeSubplotData(gd) {
478
471
plotinfo . mainplotinfo = undefined ;
479
472
regulars . push ( id ) ;
480
473
}
481
- console . log ( "....." )
482
474
}
483
-
484
- }
485
- console . log ( plotinfo . mainplotinfo )
486
- console . log ( "----" )
487
- console . log ( regulars , overlays )
488
- function onlyUnique ( value , index , array ) {
489
- return array . indexOf ( value ) === index ;
490
475
}
491
476
492
- regulars = regulars . filter ( onlyUnique ) ;
493
- overlays = overlays . filter ( onlyUnique ) ;
494
- console . log ( regulars , overlays )
495
477
// fill in list of overlaying subplots in 'main plot'
496
478
for ( i = 0 ; i < overlays . length ; i ++ ) {
497
479
id = overlays [ i ] ;
498
- plotinfo = fullLayout . _plots [ id ] ;
499
- plotinfo . mainplotinfo . overlays . push ( plotinfo ) ;
480
+ if ( id . indexOf ( '-over-' ) !== - 1 ) {
481
+ id = id . split ( "-over-" ) [ 0 ] ;
482
+ }
483
+ var plotinfoCopy = Object . assign ( { } , fullLayout . _plots [ id ] ) ;
484
+ plotinfoCopy . id = overlays [ i ] ;
485
+ fullLayout . _plots [ id ] . mainplotinfo . overlays . push ( plotinfoCopy ) ;
500
486
}
501
487
502
488
// put 'regular' subplot data before 'overlaying'
503
489
var subplotIds = regulars . concat ( overlays ) ;
504
- var subplotData = new Array ( len ) ;
505
-
506
- for ( i = 0 ; i < len ; i ++ ) {
490
+ var subplotData = new Array ( subplotIds . length ) ;
491
+ for ( i = 0 ; i < subplotIds . length ; i ++ ) {
507
492
id = subplotIds [ i ] ;
493
+ if ( id . indexOf ( '-over-' ) !== - 1 ) {
494
+ fullLayout . _plots [ id ] = Object . assign ( { } , fullLayout . _plots [ id . split ( "-over-" ) [ 0 ] ] ) ;
495
+ }
508
496
plotinfo = fullLayout . _plots [ id ] ;
509
- console . log ( id , plotinfo )
510
497
xa = plotinfo . xaxis ;
511
498
ya = plotinfo . yaxis ;
512
499
513
500
// use info about axis layer and overlaying pattern
514
501
// to clean what need to be cleaned up in exit selection
515
- var d = [ id , xa . layer , ya . layer , xa . overlaying || '' , ya . overlaying || '' ] ;
516
- for ( j = 0 ; j < plotinfo . overlays . length ; j ++ ) {
517
- d . push ( plotinfo . overlays [ j ] . id ) ;
518
- }
502
+ var d = [ id , xa . layer , ya . layer , xa . overlaying || '' , ya . overlaying || '' ] ;
503
+ if ( id . indexOf ( '-over-' ) !== - 1 ) {
504
+ for ( j = 0 ; j < plotinfo . overlays . length ; j ++ ) {
505
+ d . push ( plotinfo . overlays [ j ] . id ) ;
506
+ }
507
+ }
519
508
subplotData [ i ] = d ;
520
509
}
521
510
return subplotData ;
@@ -528,7 +517,7 @@ function makeSubplotLayer(gd, plotinfo) {
528
517
var yLayer = constants . layerValue2layerClass [ plotinfo . yaxis . layer ] ;
529
518
var hasOnlyLargeSploms = gd . _fullLayout . _hasOnlyLargeSploms ;
530
519
531
- if ( ! plotinfo . mainplot ) {
520
+ if ( ! plotinfo . mainplot || id . indexOf ( '-over-' ) === - 1 ) {
532
521
if ( hasOnlyLargeSploms ) {
533
522
// TODO could do even better
534
523
// - we don't need plot (but we would have to mock it in lsInner
@@ -587,22 +576,21 @@ function makeSubplotLayer(gd, plotinfo) {
587
576
plotinfo . minorGridlayer = mainplotinfo . minorGridlayer ;
588
577
plotinfo . gridlayer = mainplotinfo . gridlayer ;
589
578
plotinfo . zerolinelayer = mainplotinfo . zerolinelayer ;
590
- console . log ( xId )
591
- console . log ( mainplotinfo )
592
- console . log ( mainplotinfo . overlinesBelow )
593
- ensureSingle ( mainplotinfo . overlinesBelow , 'path' , xId ) ;
594
- console . log ( yId )
595
579
580
+ ensureSingle ( mainplotinfo . overlinesBelow , 'path' , xId ) ;
596
581
ensureSingle ( mainplotinfo . overlinesBelow , 'path' , yId ) ;
582
+
597
583
ensureSingle ( mainplotinfo . overaxesBelow , 'g' , xId ) ;
598
584
ensureSingle ( mainplotinfo . overaxesBelow , 'g' , yId ) ;
599
585
600
586
plotinfo . plot = ensureSingle ( mainplotinfo . overplot , 'g' , id ) ;
601
587
602
588
ensureSingle ( mainplotinfo . overlinesAbove , 'path' , xId ) ;
603
589
ensureSingle ( mainplotinfo . overlinesAbove , 'path' , yId ) ;
590
+
604
591
ensureSingle ( mainplotinfo . overaxesAbove , 'g' , xId ) ;
605
592
ensureSingle ( mainplotinfo . overaxesAbove , 'g' , yId ) ;
593
+
606
594
607
595
// set refs to correct layers as determined by 'abovetraces'
608
596
plotinfo . xlines = mainplotgroup . select ( '.overlines-' + xLayer ) . select ( '.' + xId ) ;
@@ -614,17 +602,21 @@ function makeSubplotLayer(gd, plotinfo) {
614
602
// common attributes for all subplots, overlays or not
615
603
616
604
if ( ! hasOnlyLargeSploms ) {
617
- ensureSingleAndAddDatum ( plotinfo . minorGridlayer , 'g' , plotinfo . xaxis . _id ) ;
605
+ if ( plotinfo . minorGridlayer ) {
606
+ ensureSingleAndAddDatum ( plotinfo . minorGridlayer , 'g' , plotinfo . xaxis . _id ) ;
618
607
ensureSingleAndAddDatum ( plotinfo . minorGridlayer , 'g' , plotinfo . yaxis . _id ) ;
619
608
plotinfo . minorGridlayer . selectAll ( 'g' )
620
609
. map ( function ( d ) { return d [ 0 ] ; } )
621
610
. sort ( axisIds . idSort ) ;
622
611
623
- ensureSingleAndAddDatum ( plotinfo . gridlayer , 'g' , plotinfo . xaxis . _id ) ;
624
- ensureSingleAndAddDatum ( plotinfo . gridlayer , 'g' , plotinfo . yaxis . _id ) ;
625
- plotinfo . gridlayer . selectAll ( 'g' )
626
- . map ( function ( d ) { return d [ 0 ] ; } )
627
- . sort ( axisIds . idSort ) ;
612
+ }
613
+ if ( plotinfo . gridlayer ) {
614
+ ensureSingleAndAddDatum ( plotinfo . gridlayer , 'g' , plotinfo . xaxis . _id ) ;
615
+ ensureSingleAndAddDatum ( plotinfo . gridlayer , 'g' , plotinfo . yaxis . _id ) ;
616
+ plotinfo . gridlayer . selectAll ( 'g' )
617
+ . map ( function ( d ) { return d [ 0 ] ; } )
618
+ . sort ( axisIds . idSort ) ;
619
+ }
628
620
}
629
621
630
622
plotinfo . xlines
@@ -634,7 +626,6 @@ function makeSubplotLayer(gd, plotinfo) {
634
626
plotinfo . ylines
635
627
. style ( 'fill' , 'none' )
636
628
. classed ( 'crisp' , true ) ;
637
- console . log ( "ñññññ" )
638
629
}
639
630
640
631
function purgeSubplotLayers ( layers , fullLayout ) {
0 commit comments