@@ -446,6 +446,9 @@ plots.sendDataToCloud = function(gd) {
446
446
// gd._fullLayout._modules
447
447
// is a list of all the trace modules required to draw the plot
448
448
//
449
+ // gd._fullLayout._basePlotModules
450
+ // is a list of all the plot modules required to draw the plot
451
+ //
449
452
plots . supplyDefaults = function ( gd ) {
450
453
var oldFullLayout = gd . _fullLayout || { } ,
451
454
newFullLayout = gd . _fullLayout = { } ,
@@ -455,7 +458,8 @@ plots.supplyDefaults = function(gd) {
455
458
newFullData = gd . _fullData = [ ] ,
456
459
newData = gd . data || [ ] ;
457
460
458
- var modules = newFullLayout . _modules = [ ] ;
461
+ var modules = newFullLayout . _modules = [ ] ,
462
+ basePlotModules = newFullLayout . _basePlotModules = [ ] ;
459
463
460
464
var i , _module ;
461
465
@@ -474,9 +478,12 @@ plots.supplyDefaults = function(gd) {
474
478
// detect polar
475
479
if ( 'r' in fullTrace ) newFullLayout . _hasPolar = true ;
476
480
477
- // fill in modules list
478
481
_module = fullTrace . _module ;
479
- if ( _module && modules . indexOf ( _module ) === - 1 ) modules . push ( _module ) ;
482
+ if ( ! _module ) continue ;
483
+
484
+ // fill in module lists
485
+ Lib . fillUnique ( modules , _module ) ;
486
+ Lib . fillUnique ( basePlotModules , fullTrace . _module . basePlotModule ) ;
480
487
}
481
488
482
489
// attach helper method
@@ -740,13 +747,17 @@ plots.supplyLayoutGlobalDefaults = function(layoutIn, layoutOut) {
740
747
plots . supplyLayoutModuleDefaults = function ( layoutIn , layoutOut , fullData ) {
741
748
var i , _module ;
742
749
743
- // TODO incorporate into subplotsRegistry
750
+ // can't be be part of basePlotModules loop
751
+ // in order to handle the orphan axes case
744
752
Plotly . Axes . supplyLayoutDefaults ( layoutIn , layoutOut , fullData ) ;
745
753
746
- // plot module layout defaults
747
- var plotTypes = Object . keys ( subplotsRegistry ) ;
748
- for ( i = 0 ; i < plotTypes . length ; i ++ ) {
749
- _module = subplotsRegistry [ plotTypes [ i ] ] ;
754
+ // base plot module layout defaults
755
+ var basePlotModules = layoutOut . _basePlotModules ;
756
+ for ( i = 0 ; i < basePlotModules . length ; i ++ ) {
757
+ _module = basePlotModules [ i ] ;
758
+
759
+ // done above already
760
+ if ( _module . name === 'cartesian' ) continue ;
750
761
751
762
// e.g. gl2d does not have a layout-defaults step
752
763
if ( _module . supplyLayoutDefaults ) {
@@ -755,9 +766,9 @@ plots.supplyLayoutModuleDefaults = function(layoutIn, layoutOut, fullData) {
755
766
}
756
767
757
768
// trace module layout defaults
758
- var traceTypes = Object . keys ( modules ) ;
759
- for ( i = 0 ; i < traceTypes . length ; i ++ ) {
760
- _module = modules [ allTypes [ i ] ] . _module ;
769
+ var modules = layoutOut . _modules
770
+ for ( i = 0 ; i < modules . length ; i ++ ) {
771
+ _module = modules [ i ] ;
761
772
762
773
if ( _module . supplyLayoutDefaults ) {
763
774
_module . supplyLayoutDefaults ( layoutIn , layoutOut , fullData ) ;
0 commit comments