@@ -237,21 +237,32 @@ Plotly.plot = function(gd, data, layout, config) {
237
237
return ;
238
238
}
239
239
240
- var subplots = Plots . getSubplotIds ( fullLayout , 'cartesian' ) ,
241
- modules = fullLayout . _modules ;
240
+ var subplots = Plots . getSubplotIds ( fullLayout , 'cartesian' ) ;
241
+ var modules = fullLayout . _modules ;
242
+ var setPositionsArray = [ ] ;
243
+ var hasSetPositions = false ;
242
244
243
245
// position and range calculations for traces that
244
246
// depend on each other ie bars (stacked or grouped)
245
247
// and boxes (grouped) push each other out of the way
246
248
247
- var subplotInfo , _module ;
249
+ var subplotInfo , setPositionsFunc , i , j ;
248
250
249
- for ( var i = 0 ; i < subplots . length ; i ++ ) {
250
- subplotInfo = fullLayout . _plots [ subplots [ i ] ] ;
251
+ for ( j = 0 ; j < modules . length ; j ++ ) {
252
+ setPositionsFunc = modules [ j ] . setPositions ;
253
+ if ( setPositionsFunc && setPositionsArray . indexOf ( setPositionsFunc ) === - 1 ) {
254
+ setPositionsArray . push ( setPositionsFunc ) ;
255
+ hasSetPositions = true ;
256
+ }
257
+ }
251
258
252
- for ( var j = 0 ; j < modules . length ; j ++ ) {
253
- _module = modules [ j ] ;
254
- if ( _module . setPositions ) _module . setPositions ( gd , subplotInfo ) ;
259
+ if ( hasSetPositions ) {
260
+ for ( i = 0 ; i < subplots . length ; i ++ ) {
261
+ subplotInfo = fullLayout . _plots [ subplots [ i ] ] ;
262
+
263
+ for ( j = 0 ; j < setPositionsArray . length ; j ++ ) {
264
+ setPositionsArray [ j ] ( gd , subplotInfo ) ;
265
+ }
255
266
}
256
267
}
257
268
0 commit comments