@@ -446,6 +446,9 @@ plots.sendDataToCloud = function(gd) {
446446// gd._fullLayout._modules
447447// is a list of all the trace modules required to draw the plot
448448//
449+ // gd._fullLayout._basePlotModules
450+ // is a list of all the plot modules required to draw the plot
451+ //
449452plots . supplyDefaults = function ( gd ) {
450453 var oldFullLayout = gd . _fullLayout || { } ,
451454 newFullLayout = gd . _fullLayout = { } ,
@@ -455,7 +458,8 @@ plots.supplyDefaults = function(gd) {
455458 newFullData = gd . _fullData = [ ] ,
456459 newData = gd . data || [ ] ;
457460
458- var modules = newFullLayout . _modules = [ ] ;
461+ var modules = newFullLayout . _modules = [ ] ,
462+ basePlotModules = newFullLayout . _basePlotModules = [ ] ;
459463
460464 var i , _module ;
461465
@@ -474,11 +478,13 @@ plots.supplyDefaults = function(gd) {
474478 // detect polar
475479 if ( 'r' in fullTrace ) newFullLayout . _hasPolar = true ;
476480
477- // fill in modules list
478481 _module = fullTrace . _module ;
479- if ( _module && modules . indexOf ( _module ) === - 1 ) modules . push ( _module ) ;
480- }
482+ if ( ! _module ) continue ;
481483
484+ // fill in module lists
485+ Lib . fillUnique ( modules , _module ) ;
486+ Lib . fillUnique ( basePlotModules , fullTrace . _module . basePlotModule ) ;
487+ }
482488 // attach helper method
483489 newFullLayout . _has = hasPlotType . bind ( newFullLayout ) ;
484490
@@ -532,18 +538,17 @@ plots.supplyDefaults = function(gd) {
532538} ;
533539
534540// helper function to be bound to fullLayout to check
535- // whether a certain plot type or layout categories is present on plot
541+ // whether a certain plot type is present on plot
536542function hasPlotType ( category ) {
537- var modules = this . _modules || [ ] ;
543+ var basePlotModules = this . _basePlotModules || [ ] ;
538544
539- for ( var i = 0 ; i < modules . length ; i ++ ) {
540- var _module = modules [ i ] ;
545+ for ( var i = 0 ; i < basePlotModules . length ; i ++ ) {
546+ var _module = basePlotModules [ i ] ;
541547
542- if ( _module . basePlotModule . name === category ) return true ;
548+ if ( _module . name === category ) return true ;
543549 }
544550
545551 return false ;
546- }
547552
548553plots . cleanPlot = function ( newFullData , newFullLayout , oldFullData , oldFullLayout ) {
549554 var i , j ;
0 commit comments