@@ -31,6 +31,7 @@ export class EmbeddedViewer
3131 * @param {EnvironmentSettings } [parameters.environmentSettings] Environment settings.
3232 * @param {function } [parameters.onModelLoaded] Callback that is called when the model with all
3333 * of the textures is fully loaded.
34+ * @param {function } [parameters.onModelLoadFailed] Callback that is called when the model load failed.
3435 */
3536 constructor ( parentElement , parameters )
3637 {
@@ -69,6 +70,7 @@ export class EmbeddedViewer
6970 this . model = null ;
7071 this . modelLoader = new ThreeModelLoader ( ) ;
7172
73+ this . progressDiv = null ;
7274 window . addEventListener ( 'resize' , ( ) => {
7375 this . Resize ( ) ;
7476 } ) ;
@@ -120,26 +122,30 @@ export class EmbeddedViewer
120122 }
121123
122124 this . model = null ;
123- let progressDiv = null ;
125+ if ( this . progressDiv !== null ) {
126+ this . parentElement . removeChild ( this . progressDiv ) ;
127+ this . progressDiv = null ;
128+ }
124129 this . modelLoader . LoadModel ( inputFiles , settings , {
125130 onLoadStart : ( ) => {
126131 this . canvas . style . display = 'none' ;
127- progressDiv = document . createElement ( 'div' ) ;
128- progressDiv . innerHTML = Loc ( 'Loading model...' ) ;
129- this . parentElement . appendChild ( progressDiv ) ;
132+ this . progressDiv = document . createElement ( 'div' ) ;
133+ this . progressDiv . innerHTML = Loc ( 'Loading model...' ) ;
134+ this . parentElement . appendChild ( this . progressDiv ) ;
130135 } ,
131136 onFileListProgress : ( current , total ) => {
132137 } ,
133138 onFileLoadProgress : ( current , total ) => {
134139 } ,
135140 onImportStart : ( ) => {
136- progressDiv . innerHTML = Loc ( 'Importing model...' ) ;
141+ this . progressDiv . innerHTML = Loc ( 'Importing model...' ) ;
137142 } ,
138143 onVisualizationStart : ( ) => {
139- progressDiv . innerHTML = Loc ( 'Visualizing model...' ) ;
144+ this . progressDiv . innerHTML = Loc ( 'Visualizing model...' ) ;
140145 } ,
141146 onModelFinished : ( importResult , threeObject ) => {
142- this . parentElement . removeChild ( progressDiv ) ;
147+ this . parentElement . removeChild ( this . progressDiv ) ;
148+ this . progressDiv = null ;
143149 this . canvas . style . display = 'inherit' ;
144150 this . viewer . SetMainObject ( threeObject ) ;
145151 let boundingSphere = this . viewer . GetBoundingSphere ( ( meshUserData ) => {
@@ -173,7 +179,10 @@ export class EmbeddedViewer
173179 if ( importError . message !== null ) {
174180 message += ' (' + importError . message + ')' ;
175181 }
176- progressDiv . innerHTML = message ;
182+ this . progressDiv . innerHTML = message ;
183+ if ( this . parameters . onModelLoadFailed ) {
184+ this . parameters . onModelLoadFailed ( ) ;
185+ }
177186 }
178187 } ) ;
179188 }
0 commit comments