@@ -137,21 +137,22 @@ function plotOne(gd, plotinfo, cdSubplot, transitionOpts, makeOnCompleteCallback
137
137
}
138
138
}
139
139
140
- _module . plot ( gd , plotinfo , cdModule , transitionOpts , makeOnCompleteCallback ) ;
140
+ if ( _module . plot ) _module . plot ( gd , plotinfo , cdModule , transitionOpts , makeOnCompleteCallback ) ;
141
141
}
142
142
}
143
143
144
144
exports . clean = function ( newFullData , newFullLayout , oldFullData , oldFullLayout ) {
145
145
var oldModules = oldFullLayout . _modules || [ ] ,
146
146
newModules = newFullLayout . _modules || [ ] ;
147
147
148
- var hadScatter , hasScatter , i ;
148
+ var hadScatter , hasScatter , hadGl , hasGl , i , oldPlots , ids , subplotInfo ;
149
+
149
150
150
151
for ( i = 0 ; i < oldModules . length ; i ++ ) {
151
152
if ( oldModules [ i ] . name === 'scatter' ) {
152
153
hadScatter = true ;
153
- break ;
154
154
}
155
+ break ;
155
156
}
156
157
157
158
for ( i = 0 ; i < newModules . length ; i ++ ) {
@@ -161,12 +162,26 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
161
162
}
162
163
}
163
164
165
+ for ( i = 0 ; i < oldModules . length ; i ++ ) {
166
+ if ( oldModules [ i ] . name === 'scattergl' ) {
167
+ hadGl = true ;
168
+ }
169
+ break ;
170
+ }
171
+
172
+ for ( i = 0 ; i < newModules . length ; i ++ ) {
173
+ if ( newModules [ i ] . name === 'scattergl' ) {
174
+ hasGl = true ;
175
+ break ;
176
+ }
177
+ }
178
+
164
179
if ( hadScatter && ! hasScatter ) {
165
- var oldPlots = oldFullLayout . _plots ,
166
- ids = Object . keys ( oldPlots || { } ) ;
180
+ oldPlots = oldFullLayout . _plots ;
181
+ ids = Object . keys ( oldPlots || { } ) ;
167
182
168
183
for ( i = 0 ; i < ids . length ; i ++ ) {
169
- var subplotInfo = oldPlots [ ids [ i ] ] ;
184
+ subplotInfo = oldPlots [ ids [ i ] ] ;
170
185
171
186
if ( subplotInfo . plot ) {
172
187
subplotInfo . plot . select ( 'g.scatterlayer' )
@@ -181,6 +196,19 @@ exports.clean = function(newFullData, newFullLayout, oldFullData, oldFullLayout)
181
196
. remove ( ) ;
182
197
}
183
198
199
+ if ( hadGl && ! hasGl ) {
200
+ oldPlots = oldFullLayout . _plots ;
201
+ ids = Object . keys ( oldPlots || { } ) ;
202
+
203
+ for ( i = 0 ; i < ids . length ; i ++ ) {
204
+ subplotInfo = oldPlots [ ids [ i ] ] ;
205
+
206
+ if ( subplotInfo . _scene ) {
207
+ subplotInfo . _scene . destroy ( ) ;
208
+ }
209
+ }
210
+ }
211
+
184
212
var hadCartesian = ( oldFullLayout . _has && oldFullLayout . _has ( 'cartesian' ) ) ;
185
213
var hasCartesian = ( newFullLayout . _has && newFullLayout . _has ( 'cartesian' ) ) ;
186
214
@@ -222,7 +250,6 @@ exports.drawFramework = function(gd) {
222
250
plotinfo . overlays = [ ] ;
223
251
224
252
makeSubplotLayer ( plotinfo ) ;
225
-
226
253
// fill in list of overlay subplots
227
254
if ( plotinfo . mainplot ) {
228
255
var mainplot = fullLayout . _plots [ plotinfo . mainplot ] ;
0 commit comments