@shapediver/viewer.session-engine.session-engine 2.7.10 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/implementation/OutputLoader.d.ts.map +1 -1
- package/dist/implementation/OutputLoader.js +2 -3
- package/dist/implementation/OutputLoader.js.map +1 -1
- package/dist/implementation/SessionEngine.d.ts +2 -0
- package/dist/implementation/SessionEngine.d.ts.map +1 -1
- package/dist/implementation/SessionEngine.js +263 -321
- package/dist/implementation/SessionEngine.js.map +1 -1
- package/dist/implementation/dto/Export.d.ts.map +1 -1
- package/dist/implementation/dto/Export.js +7 -10
- package/dist/implementation/dto/Export.js.map +1 -1
- package/dist/implementation/dto/FileParameter.d.ts.map +1 -1
- package/dist/implementation/dto/FileParameter.js +5 -8
- package/dist/implementation/dto/FileParameter.js.map +1 -1
- package/dist/implementation/dto/Output.d.ts.map +1 -1
- package/dist/implementation/dto/Output.js +4 -5
- package/dist/implementation/dto/Output.js.map +1 -1
- package/dist/implementation/dto/Parameter.d.ts.map +1 -1
- package/dist/implementation/dto/Parameter.js +32 -53
- package/dist/implementation/dto/Parameter.js.map +1 -1
- package/package.json +9 -10
- package/src/implementation/OutputLoader.ts +2 -3
- package/src/implementation/SessionEngine.ts +101 -143
- package/src/implementation/dto/Export.ts +8 -10
- package/src/implementation/dto/FileParameter.ts +6 -9
- package/src/implementation/dto/Output.ts +5 -6
- package/src/implementation/dto/Parameter.ts +33 -54
|
@@ -22,7 +22,6 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
22
22
|
var _SessionEngine_customizationProcess, _SessionEngine_parameterHistory, _SessionEngine_parameterHistoryCall, _SessionEngine_parameterHistoryForward;
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
24
|
exports.SessionEngine = void 0;
|
|
25
|
-
const tsyringe_1 = require("tsyringe");
|
|
26
25
|
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
27
26
|
const OutputDelayException_1 = require("./OutputDelayException");
|
|
28
27
|
const OutputLoader_1 = require("./OutputLoader");
|
|
@@ -46,21 +45,21 @@ class SessionEngine {
|
|
|
46
45
|
*/
|
|
47
46
|
constructor(properties) {
|
|
48
47
|
// #region Properties (40)
|
|
49
|
-
this._converter =
|
|
50
|
-
this._eventEngine =
|
|
48
|
+
this._converter = viewer_shared_services_1.Converter.instance;
|
|
49
|
+
this._eventEngine = viewer_shared_services_1.EventEngine.instance;
|
|
51
50
|
this._exports = {};
|
|
52
|
-
this._httpClient =
|
|
53
|
-
this._logger =
|
|
51
|
+
this._httpClient = viewer_shared_services_1.HttpClient.instance;
|
|
52
|
+
this._logger = viewer_shared_services_1.Logger.instance;
|
|
54
53
|
this._outputs = {};
|
|
55
54
|
this._outputsFreeze = {};
|
|
56
55
|
this._parameterValues = {};
|
|
57
56
|
this._parameters = {};
|
|
58
|
-
this._performanceEvaluator =
|
|
59
|
-
this._sceneTree =
|
|
60
|
-
this._sessionEngineId =
|
|
57
|
+
this._performanceEvaluator = viewer_shared_services_1.PerformanceEvaluator.instance;
|
|
58
|
+
this._sceneTree = viewer_shared_node_tree_1.Tree.instance;
|
|
59
|
+
this._sessionEngineId = (viewer_shared_services_1.UuidGenerator.instance).create();
|
|
61
60
|
this._settingsEngine = new viewer_shared_services_1.SettingsEngine();
|
|
62
|
-
this._stateEngine =
|
|
63
|
-
this._uuidGenerator =
|
|
61
|
+
this._stateEngine = viewer_shared_services_1.StateEngine.instance;
|
|
62
|
+
this._uuidGenerator = viewer_shared_services_1.UuidGenerator.instance;
|
|
64
63
|
this._automaticSceneUpdate = true;
|
|
65
64
|
this._closeOnFailure = () => __awaiter(this, void 0, void 0, function* () { });
|
|
66
65
|
this._closed = false;
|
|
@@ -68,7 +67,7 @@ class SessionEngine {
|
|
|
68
67
|
this._dataCache = {};
|
|
69
68
|
this._excludeViewports = [];
|
|
70
69
|
this._headers = {
|
|
71
|
-
"X-ShapeDiver-Origin":
|
|
70
|
+
"X-ShapeDiver-Origin": (viewer_shared_services_1.SystemInfo.instance).origin,
|
|
72
71
|
"X-ShapeDiver-SessionEngineId": this._sessionEngineId,
|
|
73
72
|
"X-ShapeDiver-BuildVersion": '',
|
|
74
73
|
"X-ShapeDiver-BuildDate": ''
|
|
@@ -100,7 +99,7 @@ class SessionEngine {
|
|
|
100
99
|
}
|
|
101
100
|
set automaticSceneUpdate(value) {
|
|
102
101
|
this._automaticSceneUpdate = value;
|
|
103
|
-
value ? this.
|
|
102
|
+
value ? this.addToSceneTree(this._node) : this.removeFromSceneTree(this._node);
|
|
104
103
|
}
|
|
105
104
|
get bearerToken() {
|
|
106
105
|
return this._bearerToken;
|
|
@@ -182,129 +181,120 @@ class SessionEngine {
|
|
|
182
181
|
// #endregion Public Accessors (23)
|
|
183
182
|
// #region Public Methods (22)
|
|
184
183
|
applySettings(response, sections) {
|
|
184
|
+
sections = sections || {};
|
|
185
|
+
if (sections.session === undefined) {
|
|
186
|
+
sections.session = {
|
|
187
|
+
parameter: { displayname: false, order: false, hidden: false },
|
|
188
|
+
export: { displayname: false, order: false, hidden: false }
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
if (sections.session.parameter === undefined)
|
|
192
|
+
sections.session.parameter = { displayname: false, order: false, hidden: false, value: false };
|
|
193
|
+
if (sections.session.export === undefined)
|
|
194
|
+
sections.session.export = { displayname: false, order: false, hidden: false };
|
|
195
|
+
if (sections.viewport === undefined)
|
|
196
|
+
sections.viewport = { ar: false, scene: false, camera: false, light: false, environment: false, general: false };
|
|
197
|
+
let config;
|
|
198
|
+
if (response.viewer !== undefined) {
|
|
199
|
+
config = response.viewer.config;
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSettingsError('Session.applySettings: No config object available.');
|
|
203
|
+
}
|
|
185
204
|
try {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
catch (e) {
|
|
211
|
-
const error = new viewer_shared_services_1.ShapeDiverViewerSettingsError('Session.applySettings: Was not able to validate config object.');
|
|
212
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SETTINGS, 'Session.applySettings', error);
|
|
213
|
-
}
|
|
214
|
-
const settings = (0, viewer_settings_1.convert)(config, viewer_settings_1.latestVersion);
|
|
215
|
-
const exportMappingUid = {};
|
|
216
|
-
if (sections.session.export.displayname || sections.session.export.order || sections.session.export.hidden)
|
|
217
|
-
if (response.exports)
|
|
218
|
-
for (let exportId in response.exports)
|
|
219
|
-
if (response.exports[exportId].uid !== undefined)
|
|
220
|
-
exportMappingUid[response.exports[exportId].uid] = exportId;
|
|
221
|
-
const currentSettings = this._settingsEngine.settings;
|
|
222
|
-
// apply parameter settings
|
|
223
|
-
if (sections.session.parameter.displayname || sections.session.parameter.order || sections.session.parameter.hidden || sections.session.parameter.value) {
|
|
224
|
-
for (let p in this.parameters) {
|
|
225
|
-
if (settings.session[p]) {
|
|
226
|
-
if (sections.session.parameter.displayname)
|
|
227
|
-
this.parameters[p].displayname = settings.session[p].displayname;
|
|
228
|
-
if (sections.session.parameter.order)
|
|
229
|
-
this.parameters[p].order = settings.session[p].order;
|
|
230
|
-
if (sections.session.parameter.hidden)
|
|
231
|
-
this.parameters[p].hidden = settings.session[p].hidden || false;
|
|
232
|
-
}
|
|
233
|
-
if (response.parameters && response.parameters[p]) {
|
|
234
|
-
if (sections.session.parameter.value)
|
|
235
|
-
this.parameters[p].value = response.parameters[p].defval !== undefined ? response.parameters[p].defval : this.parameters[p].value;
|
|
236
|
-
}
|
|
205
|
+
(0, viewer_settings_1.validate)(config);
|
|
206
|
+
}
|
|
207
|
+
catch (e) {
|
|
208
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSettingsError('Session.applySettings: Was not able to validate config object.');
|
|
209
|
+
}
|
|
210
|
+
const settings = (0, viewer_settings_1.convert)(config, viewer_settings_1.latestVersion);
|
|
211
|
+
const exportMappingUid = {};
|
|
212
|
+
if (sections.session.export.displayname || sections.session.export.order || sections.session.export.hidden)
|
|
213
|
+
if (response.exports)
|
|
214
|
+
for (let exportId in response.exports)
|
|
215
|
+
if (response.exports[exportId].uid !== undefined)
|
|
216
|
+
exportMappingUid[response.exports[exportId].uid] = exportId;
|
|
217
|
+
const currentSettings = this._settingsEngine.settings;
|
|
218
|
+
// apply parameter settings
|
|
219
|
+
if (sections.session.parameter.displayname || sections.session.parameter.order || sections.session.parameter.hidden || sections.session.parameter.value) {
|
|
220
|
+
for (let p in this.parameters) {
|
|
221
|
+
if (settings.session[p]) {
|
|
222
|
+
if (sections.session.parameter.displayname)
|
|
223
|
+
this.parameters[p].displayname = settings.session[p].displayname;
|
|
224
|
+
if (sections.session.parameter.order)
|
|
225
|
+
this.parameters[p].order = settings.session[p].order;
|
|
226
|
+
if (sections.session.parameter.hidden)
|
|
227
|
+
this.parameters[p].hidden = settings.session[p].hidden || false;
|
|
237
228
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
for (let p in this.exports) {
|
|
242
|
-
let idForSettings = '';
|
|
243
|
-
if (settings.session[p]) {
|
|
244
|
-
idForSettings = p;
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
const uid = this.exports[p].uid;
|
|
248
|
-
if (!uid)
|
|
249
|
-
continue;
|
|
250
|
-
if (!exportMappingUid[uid])
|
|
251
|
-
continue;
|
|
252
|
-
idForSettings = exportMappingUid[uid];
|
|
253
|
-
}
|
|
254
|
-
if (settings.session[idForSettings]) {
|
|
255
|
-
if (sections.session.export.displayname)
|
|
256
|
-
this.exports[p].displayname = settings.session[idForSettings].displayname;
|
|
257
|
-
if (sections.session.export.order)
|
|
258
|
-
this.exports[p].order = settings.session[idForSettings].order;
|
|
259
|
-
if (sections.session.export.hidden)
|
|
260
|
-
this.exports[p].hidden = settings.session[idForSettings].hidden || false;
|
|
261
|
-
}
|
|
229
|
+
if (response.parameters && response.parameters[p]) {
|
|
230
|
+
if (sections.session.parameter.value)
|
|
231
|
+
this.parameters[p].value = response.parameters[p].defval !== undefined ? response.parameters[p].defval : this.parameters[p].value;
|
|
262
232
|
}
|
|
263
233
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
currentSettings.rendering.physicallyCorrectLights = settings.rendering.physicallyCorrectLights;
|
|
289
|
-
currentSettings.rendering.toneMapping = settings.rendering.toneMapping;
|
|
290
|
-
currentSettings.rendering.toneMappingExposure = settings.rendering.toneMappingExposure;
|
|
291
|
-
}
|
|
292
|
-
if (sections.viewport.general) {
|
|
293
|
-
currentSettings.general.commitParameters = settings.general.commitParameters;
|
|
294
|
-
currentSettings.general.pointSize = settings.general.pointSize;
|
|
295
|
-
}
|
|
296
|
-
// apply environment settings
|
|
297
|
-
if (sections.viewport.environment) {
|
|
298
|
-
currentSettings.environment.clearAlpha = settings.environment.clearAlpha;
|
|
299
|
-
currentSettings.environment.clearColor = settings.environment.clearColor;
|
|
300
|
-
currentSettings.environment.map = settings.environment.map;
|
|
301
|
-
currentSettings.environment.mapAsBackground = settings.environment.mapAsBackground;
|
|
234
|
+
}
|
|
235
|
+
// apply export settings
|
|
236
|
+
if (sections.session.export.displayname || sections.session.export.order || sections.session.export.hidden) {
|
|
237
|
+
for (let p in this.exports) {
|
|
238
|
+
let idForSettings = '';
|
|
239
|
+
if (settings.session[p]) {
|
|
240
|
+
idForSettings = p;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
const uid = this.exports[p].uid;
|
|
244
|
+
if (!uid)
|
|
245
|
+
continue;
|
|
246
|
+
if (!exportMappingUid[uid])
|
|
247
|
+
continue;
|
|
248
|
+
idForSettings = exportMappingUid[uid];
|
|
249
|
+
}
|
|
250
|
+
if (settings.session[idForSettings]) {
|
|
251
|
+
if (sections.session.export.displayname)
|
|
252
|
+
this.exports[p].displayname = settings.session[idForSettings].displayname;
|
|
253
|
+
if (sections.session.export.order)
|
|
254
|
+
this.exports[p].order = settings.session[idForSettings].order;
|
|
255
|
+
if (sections.session.export.hidden)
|
|
256
|
+
this.exports[p].hidden = settings.session[idForSettings].hidden || false;
|
|
257
|
+
}
|
|
302
258
|
}
|
|
303
259
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
260
|
+
// apply ar settings
|
|
261
|
+
if (sections.viewport.ar) {
|
|
262
|
+
currentSettings.ar = settings.ar;
|
|
263
|
+
currentSettings.general.transformation = settings.general.transformation;
|
|
264
|
+
}
|
|
265
|
+
// apply camera settings
|
|
266
|
+
if (sections.viewport.camera)
|
|
267
|
+
currentSettings.camera = settings.camera;
|
|
268
|
+
// apply light settings
|
|
269
|
+
if (sections.viewport.light)
|
|
270
|
+
currentSettings.light = settings.light;
|
|
271
|
+
// apply scene settings
|
|
272
|
+
if (sections.viewport.scene) {
|
|
273
|
+
currentSettings.environmentGeometry.gridColor = settings.environmentGeometry.gridColor;
|
|
274
|
+
currentSettings.environmentGeometry.gridVisibility = settings.environmentGeometry.gridVisibility;
|
|
275
|
+
currentSettings.environmentGeometry.groundPlaneColor = settings.environmentGeometry.groundPlaneColor;
|
|
276
|
+
currentSettings.environmentGeometry.groundPlaneVisibility = settings.environmentGeometry.groundPlaneVisibility;
|
|
277
|
+
currentSettings.environmentGeometry.groundPlaneColor = settings.environmentGeometry.groundPlaneColor;
|
|
278
|
+
currentSettings.environmentGeometry.groundPlaneShadowColor = settings.environmentGeometry.groundPlaneShadowColor;
|
|
279
|
+
currentSettings.rendering.shadows = settings.rendering.shadows;
|
|
280
|
+
currentSettings.rendering.ambientOcclusion = settings.rendering.ambientOcclusion;
|
|
281
|
+
currentSettings.rendering.automaticColorAdjustment = settings.rendering.automaticColorAdjustment;
|
|
282
|
+
currentSettings.rendering.textureEncoding = settings.rendering.textureEncoding;
|
|
283
|
+
currentSettings.rendering.outputEncoding = settings.rendering.outputEncoding;
|
|
284
|
+
currentSettings.rendering.physicallyCorrectLights = settings.rendering.physicallyCorrectLights;
|
|
285
|
+
currentSettings.rendering.toneMapping = settings.rendering.toneMapping;
|
|
286
|
+
currentSettings.rendering.toneMappingExposure = settings.rendering.toneMappingExposure;
|
|
287
|
+
}
|
|
288
|
+
if (sections.viewport.general) {
|
|
289
|
+
currentSettings.general.commitParameters = settings.general.commitParameters;
|
|
290
|
+
currentSettings.general.pointSize = settings.general.pointSize;
|
|
291
|
+
}
|
|
292
|
+
// apply environment settings
|
|
293
|
+
if (sections.viewport.environment) {
|
|
294
|
+
currentSettings.environment.clearAlpha = settings.environment.clearAlpha;
|
|
295
|
+
currentSettings.environment.clearColor = settings.environment.clearColor;
|
|
296
|
+
currentSettings.environment.map = settings.environment.map;
|
|
297
|
+
currentSettings.environment.mapAsBackground = settings.environment.mapAsBackground;
|
|
308
298
|
}
|
|
309
299
|
}
|
|
310
300
|
canGoBack() {
|
|
@@ -322,11 +312,11 @@ class SessionEngine {
|
|
|
322
312
|
this._httpClient.removeDataLoading(this._sessionId);
|
|
323
313
|
yield this._sdk.session.close(this._sessionId);
|
|
324
314
|
if (this._automaticSceneUpdate)
|
|
325
|
-
this.
|
|
315
|
+
this.removeFromSceneTree(this._node);
|
|
326
316
|
this._closed = true;
|
|
327
317
|
}
|
|
328
318
|
catch (e) {
|
|
329
|
-
yield this.handleError(
|
|
319
|
+
yield this.handleError(e, retry);
|
|
330
320
|
return yield this.close(true);
|
|
331
321
|
}
|
|
332
322
|
});
|
|
@@ -355,7 +345,7 @@ class SessionEngine {
|
|
|
355
345
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, eventStart);
|
|
356
346
|
const oldNode = this.node.cloneInstance();
|
|
357
347
|
__classPrivateFieldSet(this, _SessionEngine_customizationProcess, customizationId, "f");
|
|
358
|
-
this._logger.debugLow(
|
|
348
|
+
this._logger.debugLow(`Session(${this.id}).customize: Customizing session.`);
|
|
359
349
|
for (let r in this._stateEngine.renderingEngines)
|
|
360
350
|
this._stateEngine.renderingEngines[r].busy.push(customizationId);
|
|
361
351
|
const eventFileUpload = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 0.1, data: { sessionId: this.id }, status: 'Uploading file parameters' };
|
|
@@ -370,7 +360,7 @@ class SessionEngine {
|
|
|
370
360
|
for (let r in this._stateEngine.renderingEngines)
|
|
371
361
|
if (this._stateEngine.renderingEngines[r].busy.includes(customizationId))
|
|
372
362
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
373
|
-
this._logger.debug(
|
|
363
|
+
this._logger.debug(`Session(${this.id}).customize: Session customization was exceeded by other customization request.`);
|
|
374
364
|
const eventCancel1a = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Session customization was exceeded by other customization request' };
|
|
375
365
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, eventCancel1a);
|
|
376
366
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
@@ -384,7 +374,7 @@ class SessionEngine {
|
|
|
384
374
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
385
375
|
const eventCancel1b = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Session customization was exceeded by other customization request' };
|
|
386
376
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, eventCancel1b);
|
|
387
|
-
this._logger.debug(
|
|
377
|
+
this._logger.debug(`Session(${this.id}).customize: Session customization was exceeded by other customization request.`);
|
|
388
378
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
389
379
|
}
|
|
390
380
|
// assign the uploaded parameters
|
|
@@ -401,7 +391,7 @@ class SessionEngine {
|
|
|
401
391
|
// update the session engine parameter values if everything succeeded
|
|
402
392
|
for (const parameterId in this.parameters)
|
|
403
393
|
this.parameterValues[parameterId] = parameterSet[parameterId].valueString;
|
|
404
|
-
this._logger.info(
|
|
394
|
+
this._logger.info(`Session(${this.id}).customize: Customizing session with parameters ${JSON.stringify(this.parameterValues)}.`);
|
|
405
395
|
const eventRequest = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 0.25, data: { sessionId: this.id }, status: 'Sending customization request' };
|
|
406
396
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_PROCESS, eventRequest);
|
|
407
397
|
const newNode = yield this.customizeInternal(() => __classPrivateFieldGet(this, _SessionEngine_customizationProcess, "f") !== customizationId);
|
|
@@ -414,7 +404,7 @@ class SessionEngine {
|
|
|
414
404
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
415
405
|
const eventCancel2 = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Session customization was exceeded by other customization request' };
|
|
416
406
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, eventCancel2);
|
|
417
|
-
this._logger.debug(
|
|
407
|
+
this._logger.debug(`Session(${this.id}).customize: Session customization was exceeded by other customization request.`);
|
|
418
408
|
return newNode;
|
|
419
409
|
}
|
|
420
410
|
// if this is not a call by the goBack or goForward functions, add the parameter values to the history and delete the forward history
|
|
@@ -423,11 +413,11 @@ class SessionEngine {
|
|
|
423
413
|
__classPrivateFieldSet(this, _SessionEngine_parameterHistoryForward, [], "f");
|
|
424
414
|
}
|
|
425
415
|
if (this.automaticSceneUpdate)
|
|
426
|
-
this.
|
|
416
|
+
this.removeFromSceneTree(this.node);
|
|
427
417
|
this._node = newNode;
|
|
428
418
|
if (this.automaticSceneUpdate)
|
|
429
|
-
this.
|
|
430
|
-
this._logger.debug(
|
|
419
|
+
this.addToSceneTree(this.node);
|
|
420
|
+
this._logger.debug(`Session(${this.id}).customize: Customization request finished, updating geometry.`);
|
|
431
421
|
// set the session values to the current ones in all parameters
|
|
432
422
|
for (const parameterId in this.parameters)
|
|
433
423
|
this.parameters[parameterId].sessionValue = parameterSet[parameterId].value;
|
|
@@ -444,7 +434,7 @@ class SessionEngine {
|
|
|
444
434
|
for (let r in this._stateEngine.renderingEngines)
|
|
445
435
|
if (this._stateEngine.renderingEngines[r].busy.includes(customizationId))
|
|
446
436
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
447
|
-
this._logger.debug(
|
|
437
|
+
this._logger.debug(`Session(${this.id}).customize: Session customized.`);
|
|
448
438
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.SESSION.SESSION_CUSTOMIZED, { sessionId: this.id });
|
|
449
439
|
const eventEnd = { type: viewer_shared_types_1.TASK_TYPE.SESSION_CUSTOMIZATION, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Session customized' };
|
|
450
440
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, eventEnd);
|
|
@@ -456,34 +446,25 @@ class SessionEngine {
|
|
|
456
446
|
for (let r in this._stateEngine.renderingEngines)
|
|
457
447
|
if (this._stateEngine.renderingEngines[r].busy.includes(customizationId))
|
|
458
448
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
459
|
-
|
|
460
|
-
throw e;
|
|
461
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).customize`, e);
|
|
449
|
+
throw e;
|
|
462
450
|
}
|
|
463
451
|
});
|
|
464
452
|
}
|
|
465
453
|
customizeParallel(parameterValues) {
|
|
466
454
|
return __awaiter(this, void 0, void 0, function* () {
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
return newNode;
|
|
475
|
-
}
|
|
476
|
-
catch (e) {
|
|
477
|
-
if (e instanceof viewer_shared_services_1.ShapeDiverViewerError || e instanceof sdk_geometry_api_sdk_v2_1.ShapeDiverError)
|
|
478
|
-
throw e;
|
|
479
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).customize`, e);
|
|
480
|
-
}
|
|
455
|
+
const parameterSet = {};
|
|
456
|
+
// create a set of the current validated parameter values
|
|
457
|
+
for (const parameterId in this.parameters)
|
|
458
|
+
parameterSet[parameterId] = parameterValues[parameterId] !== undefined ? (' ' + parameterValues[parameterId]).slice(1) : this.parameters[parameterId].stringify();
|
|
459
|
+
const newNode = yield this.customizeSession(parameterSet, () => false, true);
|
|
460
|
+
newNode.excludeViewports = JSON.parse(JSON.stringify(this._excludeViewports));
|
|
461
|
+
return newNode;
|
|
481
462
|
});
|
|
482
463
|
}
|
|
483
464
|
goBack() {
|
|
484
465
|
return __awaiter(this, void 0, void 0, function* () {
|
|
485
466
|
if (!this.canGoBack()) {
|
|
486
|
-
this._logger.debug(
|
|
467
|
+
this._logger.debug(`Session(${this.id}).goBack: Cannot go further back.`);
|
|
487
468
|
return new viewer_shared_node_tree_1.TreeNode();
|
|
488
469
|
}
|
|
489
470
|
// get the current parameter set and store it in the forward history later on
|
|
@@ -504,7 +485,7 @@ class SessionEngine {
|
|
|
504
485
|
goForward() {
|
|
505
486
|
return __awaiter(this, void 0, void 0, function* () {
|
|
506
487
|
if (!this.canGoForward()) {
|
|
507
|
-
this._logger.debug(
|
|
488
|
+
this._logger.debug(`Session(${this.id}).goForward: Cannot go further forward.`);
|
|
508
489
|
return new viewer_shared_node_tree_1.TreeNode();
|
|
509
490
|
}
|
|
510
491
|
// get the last undone parameter set and apply the values to the parameters
|
|
@@ -528,10 +509,8 @@ class SessionEngine {
|
|
|
528
509
|
init(parameterValues, retry = false) {
|
|
529
510
|
var _a, _b;
|
|
530
511
|
return __awaiter(this, void 0, void 0, function* () {
|
|
531
|
-
if (this._initialized === true)
|
|
532
|
-
|
|
533
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.init', error);
|
|
534
|
-
}
|
|
512
|
+
if (this._initialized === true)
|
|
513
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError('Session.init: Session already initialized.');
|
|
535
514
|
try {
|
|
536
515
|
this._performanceEvaluator.startSection('sessionResponse');
|
|
537
516
|
const parameterSet = {};
|
|
@@ -556,7 +535,7 @@ class SessionEngine {
|
|
|
556
535
|
this._initialized = true;
|
|
557
536
|
}
|
|
558
537
|
catch (e) {
|
|
559
|
-
yield this.handleError(
|
|
538
|
+
yield this.handleError(e, retry);
|
|
560
539
|
return yield this.init(parameterValues, true);
|
|
561
540
|
}
|
|
562
541
|
});
|
|
@@ -591,7 +570,7 @@ class SessionEngine {
|
|
|
591
570
|
yield this.timeout(e.delay);
|
|
592
571
|
}
|
|
593
572
|
else {
|
|
594
|
-
yield this.handleError(
|
|
573
|
+
yield this.handleError(e, retry);
|
|
595
574
|
if (cancelRequest())
|
|
596
575
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
597
576
|
return yield this.loadOutputsParallel(responseDto, cancelRequest, true);
|
|
@@ -609,7 +588,7 @@ class SessionEngine {
|
|
|
609
588
|
return yield this.loadOutputsParallel(responseDto, cancelRequest);
|
|
610
589
|
}
|
|
611
590
|
catch (e) {
|
|
612
|
-
yield this.handleError(
|
|
591
|
+
yield this.handleError(e, retry);
|
|
613
592
|
if (cancelRequest())
|
|
614
593
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
615
594
|
return yield this.loadOutputsParallel(responseDto, cancelRequest, true);
|
|
@@ -637,10 +616,10 @@ class SessionEngine {
|
|
|
637
616
|
if (cancelRequest())
|
|
638
617
|
return node;
|
|
639
618
|
if (this._automaticSceneUpdate)
|
|
640
|
-
this.
|
|
619
|
+
this.removeFromSceneTree(this._node);
|
|
641
620
|
this._node = node;
|
|
642
621
|
if (this._automaticSceneUpdate)
|
|
643
|
-
this.
|
|
622
|
+
this.addToSceneTree(this._node);
|
|
644
623
|
this.node.excludeViewports = JSON.parse(JSON.stringify(this._excludeViewports));
|
|
645
624
|
return node;
|
|
646
625
|
}
|
|
@@ -649,7 +628,7 @@ class SessionEngine {
|
|
|
649
628
|
yield this.timeout(e.delay);
|
|
650
629
|
}
|
|
651
630
|
else {
|
|
652
|
-
yield this.handleError(
|
|
631
|
+
yield this.handleError(e, retry);
|
|
653
632
|
if (cancelRequest())
|
|
654
633
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
655
634
|
return yield this.loadOutputs(cancelRequest, true);
|
|
@@ -667,7 +646,7 @@ class SessionEngine {
|
|
|
667
646
|
return yield this.loadOutputs(cancelRequest);
|
|
668
647
|
}
|
|
669
648
|
catch (e) {
|
|
670
|
-
yield this.handleError(
|
|
649
|
+
yield this.handleError(e, retry);
|
|
671
650
|
if (cancelRequest())
|
|
672
651
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
673
652
|
return yield this.loadOutputs(cancelRequest, true);
|
|
@@ -687,57 +666,40 @@ class SessionEngine {
|
|
|
687
666
|
return this.exports[exportId];
|
|
688
667
|
}
|
|
689
668
|
catch (e) {
|
|
690
|
-
yield this.handleError(
|
|
669
|
+
yield this.handleError(e, retry);
|
|
691
670
|
return yield this.requestExport(exportId, parameters, maxWaitTime, true);
|
|
692
671
|
}
|
|
693
672
|
});
|
|
694
673
|
}
|
|
695
674
|
resetSettings(sections) {
|
|
696
|
-
if (!this._responseDto)
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
parameter: { displayname: true, order: true, hidden: true },
|
|
705
|
-
export: { displayname: true, order: true, hidden: true }
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
if (sections.session.parameter === undefined)
|
|
709
|
-
sections.session.parameter = { displayname: true, order: true, hidden: true, value: true };
|
|
710
|
-
if (sections.session.export === undefined)
|
|
711
|
-
sections.session.export = { displayname: true, order: true, hidden: true };
|
|
712
|
-
if (sections.viewport === undefined)
|
|
713
|
-
sections.viewport = { ar: true, scene: true, camera: true, light: true, environment: true, general: true };
|
|
714
|
-
return this.applySettings(this._responseDto, sections);
|
|
715
|
-
}
|
|
716
|
-
catch (e) {
|
|
717
|
-
if (e instanceof viewer_shared_services_1.ShapeDiverViewerError || e instanceof sdk_geometry_api_sdk_v2_1.ShapeDiverError)
|
|
718
|
-
throw e;
|
|
719
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.GENERAL, 'Session.resetSettings', e);
|
|
675
|
+
if (!this._responseDto)
|
|
676
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.resetSettings: responseDto not available.`);
|
|
677
|
+
sections = sections || {};
|
|
678
|
+
if (sections.session === undefined) {
|
|
679
|
+
sections.session = {
|
|
680
|
+
parameter: { displayname: true, order: true, hidden: true },
|
|
681
|
+
export: { displayname: true, order: true, hidden: true }
|
|
682
|
+
};
|
|
720
683
|
}
|
|
684
|
+
if (sections.session.parameter === undefined)
|
|
685
|
+
sections.session.parameter = { displayname: true, order: true, hidden: true, value: true };
|
|
686
|
+
if (sections.session.export === undefined)
|
|
687
|
+
sections.session.export = { displayname: true, order: true, hidden: true };
|
|
688
|
+
if (sections.viewport === undefined)
|
|
689
|
+
sections.viewport = { ar: true, scene: true, camera: true, light: true, environment: true, general: true };
|
|
690
|
+
return this.applySettings(this._responseDto, sections);
|
|
721
691
|
}
|
|
722
692
|
saveDefaultParameterValues() {
|
|
723
693
|
return __awaiter(this, void 0, void 0, function* () {
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
this._logger.debug(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).saveDefaultParameters: Saved default parameters.`);
|
|
729
|
-
}
|
|
730
|
-
else {
|
|
731
|
-
const error = new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session(${this.id}).saveDefaultParameters: Could not save default parameters.`);
|
|
732
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).saveDefaultParameters`, error);
|
|
733
|
-
}
|
|
734
|
-
return response;
|
|
694
|
+
this._logger.debugLow(`Session(${this.id}).saveDefaultParameters: Saving default parameters.`);
|
|
695
|
+
const response = yield this.saveDefaultParameters();
|
|
696
|
+
if (response) {
|
|
697
|
+
this._logger.debug(`Session(${this.id}).saveDefaultParameters: Saved default parameters.`);
|
|
735
698
|
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
throw e;
|
|
739
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).saveDefaultParameters`, e);
|
|
699
|
+
else {
|
|
700
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session(${this.id}).saveDefaultParameters: Could not save default parameters.`);
|
|
740
701
|
}
|
|
702
|
+
return response;
|
|
741
703
|
});
|
|
742
704
|
}
|
|
743
705
|
saveDefaultParameters(retry = false) {
|
|
@@ -748,7 +710,7 @@ class SessionEngine {
|
|
|
748
710
|
return true;
|
|
749
711
|
}
|
|
750
712
|
catch (e) {
|
|
751
|
-
yield this.handleError(
|
|
713
|
+
yield this.handleError(e, retry);
|
|
752
714
|
return yield this.saveDefaultParameters(true);
|
|
753
715
|
}
|
|
754
716
|
});
|
|
@@ -767,7 +729,7 @@ class SessionEngine {
|
|
|
767
729
|
return true;
|
|
768
730
|
}
|
|
769
731
|
catch (e) {
|
|
770
|
-
yield this.handleError(
|
|
732
|
+
yield this.handleError(e, retry);
|
|
771
733
|
return yield this.saveExportProperties(exports, true);
|
|
772
734
|
}
|
|
773
735
|
});
|
|
@@ -786,7 +748,7 @@ class SessionEngine {
|
|
|
786
748
|
return true;
|
|
787
749
|
}
|
|
788
750
|
catch (e) {
|
|
789
|
-
yield this.handleError(
|
|
751
|
+
yield this.handleError(e, retry);
|
|
790
752
|
return yield this.saveOutputProperties(outputs, true);
|
|
791
753
|
}
|
|
792
754
|
});
|
|
@@ -805,7 +767,7 @@ class SessionEngine {
|
|
|
805
767
|
return true;
|
|
806
768
|
}
|
|
807
769
|
catch (e) {
|
|
808
|
-
yield this.handleError(
|
|
770
|
+
yield this.handleError(e, retry);
|
|
809
771
|
return yield this.saveParameterProperties(parameters, true);
|
|
810
772
|
}
|
|
811
773
|
});
|
|
@@ -817,70 +779,62 @@ class SessionEngine {
|
|
|
817
779
|
(0, viewer_settings_1.validate)(json, this._viewerSettingsVersion);
|
|
818
780
|
}
|
|
819
781
|
catch (e) {
|
|
820
|
-
|
|
821
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SETTINGS, 'Session.applySettings', error);
|
|
782
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSettingsError('Session.saveSettings: Settings could not be validated. ' + e.message, e);
|
|
822
783
|
}
|
|
823
784
|
try {
|
|
824
785
|
yield this._sdk.model.updateConfig(this._modelId, json);
|
|
825
786
|
return true;
|
|
826
787
|
}
|
|
827
788
|
catch (e) {
|
|
828
|
-
yield this.handleError(
|
|
789
|
+
yield this.handleError(e, retry);
|
|
829
790
|
return yield this.saveSettings(json, true);
|
|
830
791
|
}
|
|
831
792
|
});
|
|
832
793
|
}
|
|
833
794
|
saveUiProperties(saveInSettings = true) {
|
|
834
795
|
return __awaiter(this, void 0, void 0, function* () {
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
};
|
|
847
|
-
}
|
|
848
|
-
const responseP = Object.values(properties).length !== 0 ? yield this.saveParameterProperties(properties) : true;
|
|
849
|
-
properties = {};
|
|
850
|
-
for (let e in this.exports) {
|
|
851
|
-
properties[e] = {
|
|
852
|
-
displayname: this.exports[e].displayname !== undefined ? this.exports[e].displayname : '',
|
|
853
|
-
hidden: this.exports[e].hidden !== undefined ? this.exports[e].hidden : false,
|
|
854
|
-
order: this.exports[e].order !== undefined ? this.exports[e].order : 0,
|
|
855
|
-
tooltip: this.exports[e].tooltip !== undefined ? this.exports[e].tooltip : '',
|
|
856
|
-
};
|
|
857
|
-
}
|
|
858
|
-
const responseE = Object.values(properties).length !== 0 ? yield this.saveExportProperties(properties) : true;
|
|
859
|
-
properties = {};
|
|
860
|
-
for (let o in this.outputs) {
|
|
861
|
-
properties[o] = {
|
|
862
|
-
displayname: this.outputs[o].displayname !== undefined ? this.outputs[o].displayname : '',
|
|
863
|
-
hidden: this.outputs[o].hidden !== undefined ? this.outputs[o].hidden : false,
|
|
864
|
-
order: this.outputs[o].order !== undefined ? this.outputs[o].order : 0,
|
|
865
|
-
tooltip: this.outputs[o].tooltip !== undefined ? this.outputs[o].tooltip : '',
|
|
866
|
-
};
|
|
867
|
-
}
|
|
868
|
-
const responseO = Object.values(properties).length !== 0 ? yield this.saveOutputProperties(properties) : true;
|
|
869
|
-
// save partial settings
|
|
870
|
-
const response = saveInSettings ? yield this.saveSettings(this._settingsEngine.convertToTargetVersion()) : true;
|
|
871
|
-
if (response && responseP && responseO && responseE) {
|
|
872
|
-
this._logger.debug(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).saveSessionProperties: Saved session properties.`);
|
|
873
|
-
}
|
|
874
|
-
else {
|
|
875
|
-
this._logger.warn(viewer_shared_services_1.LOGGING_TOPIC.SESSION, `Session(${this.id}).saveSessionProperties: Could not save session properties.`);
|
|
876
|
-
}
|
|
877
|
-
return response && responseP && responseO && responseE;
|
|
796
|
+
this._logger.debugLow(`Session(${this.id}).saveSessionProperties: Saving session properties.`);
|
|
797
|
+
// settings saving
|
|
798
|
+
this._saveSessionSettings();
|
|
799
|
+
let properties = {};
|
|
800
|
+
for (let p in this.parameters) {
|
|
801
|
+
properties[p] = {
|
|
802
|
+
displayname: this.parameters[p].displayname !== undefined ? this.parameters[p].displayname : '',
|
|
803
|
+
hidden: this.parameters[p].hidden !== undefined ? this.parameters[p].hidden : false,
|
|
804
|
+
order: this.parameters[p].order !== undefined ? this.parameters[p].order : 0,
|
|
805
|
+
tooltip: this.parameters[p].tooltip !== undefined ? this.parameters[p].tooltip : '',
|
|
806
|
+
};
|
|
878
807
|
}
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
808
|
+
const responseP = Object.values(properties).length !== 0 ? yield this.saveParameterProperties(properties) : true;
|
|
809
|
+
properties = {};
|
|
810
|
+
for (let e in this.exports) {
|
|
811
|
+
properties[e] = {
|
|
812
|
+
displayname: this.exports[e].displayname !== undefined ? this.exports[e].displayname : '',
|
|
813
|
+
hidden: this.exports[e].hidden !== undefined ? this.exports[e].hidden : false,
|
|
814
|
+
order: this.exports[e].order !== undefined ? this.exports[e].order : 0,
|
|
815
|
+
tooltip: this.exports[e].tooltip !== undefined ? this.exports[e].tooltip : '',
|
|
816
|
+
};
|
|
817
|
+
}
|
|
818
|
+
const responseE = Object.values(properties).length !== 0 ? yield this.saveExportProperties(properties) : true;
|
|
819
|
+
properties = {};
|
|
820
|
+
for (let o in this.outputs) {
|
|
821
|
+
properties[o] = {
|
|
822
|
+
displayname: this.outputs[o].displayname !== undefined ? this.outputs[o].displayname : '',
|
|
823
|
+
hidden: this.outputs[o].hidden !== undefined ? this.outputs[o].hidden : false,
|
|
824
|
+
order: this.outputs[o].order !== undefined ? this.outputs[o].order : 0,
|
|
825
|
+
tooltip: this.outputs[o].tooltip !== undefined ? this.outputs[o].tooltip : '',
|
|
826
|
+
};
|
|
827
|
+
}
|
|
828
|
+
const responseO = Object.values(properties).length !== 0 ? yield this.saveOutputProperties(properties) : true;
|
|
829
|
+
// save partial settings
|
|
830
|
+
const response = saveInSettings ? yield this.saveSettings(this._settingsEngine.convertToTargetVersion()) : true;
|
|
831
|
+
if (response && responseP && responseO && responseE) {
|
|
832
|
+
this._logger.debug(`Session(${this.id}).saveSessionProperties: Saved session properties.`);
|
|
833
|
+
}
|
|
834
|
+
else {
|
|
835
|
+
this._logger.warn(`Session(${this.id}).saveSessionProperties: Could not save session properties.`);
|
|
883
836
|
}
|
|
837
|
+
return response && responseP && responseO && responseE;
|
|
884
838
|
});
|
|
885
839
|
}
|
|
886
840
|
updateOutputs() {
|
|
@@ -891,7 +845,7 @@ class SessionEngine {
|
|
|
891
845
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, eventStart);
|
|
892
846
|
const oldNode = this.node.cloneInstance();
|
|
893
847
|
__classPrivateFieldSet(this, _SessionEngine_customizationProcess, customizationId, "f");
|
|
894
|
-
this._logger.debugLow(
|
|
848
|
+
this._logger.debugLow(`Session(${this.id}).updateOutputs: Updating Outputs.`);
|
|
895
849
|
for (let r in this._stateEngine.renderingEngines)
|
|
896
850
|
this._stateEngine.renderingEngines[r].busy.push(customizationId);
|
|
897
851
|
const eventRequest = { type: viewer_shared_types_1.TASK_TYPE.SESSION_OUTPUTS_UPDATE, id: eventId, progress: 0.25, data: { sessionId: this.id }, status: 'Loading outputs' };
|
|
@@ -906,15 +860,15 @@ class SessionEngine {
|
|
|
906
860
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
907
861
|
const eventCancel1 = { type: viewer_shared_types_1.TASK_TYPE.SESSION_OUTPUTS_UPDATE, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Output updating was exceeded by other customization request' };
|
|
908
862
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, eventCancel1);
|
|
909
|
-
this._logger.debug(
|
|
863
|
+
this._logger.debug(`Session(${this.id}).updateOutputs: Output updating was exceeded by other request.`);
|
|
910
864
|
return newNode;
|
|
911
865
|
}
|
|
912
866
|
if (this.automaticSceneUpdate)
|
|
913
|
-
this.
|
|
867
|
+
this.removeFromSceneTree(this.node);
|
|
914
868
|
this._node = newNode;
|
|
915
869
|
if (this.automaticSceneUpdate)
|
|
916
|
-
this.
|
|
917
|
-
this._logger.debug(
|
|
870
|
+
this.addToSceneTree(this.node);
|
|
871
|
+
this._logger.debug(`Session(${this.id}).updateOutputs: Updating outputs finished, updating geometry.`);
|
|
918
872
|
if (this._updateCallback)
|
|
919
873
|
this._updateCallback(newNode, oldNode);
|
|
920
874
|
// set the output content to what has been updated
|
|
@@ -929,7 +883,7 @@ class SessionEngine {
|
|
|
929
883
|
for (let r in this._stateEngine.renderingEngines)
|
|
930
884
|
if (this._stateEngine.renderingEngines[r].busy.includes(customizationId))
|
|
931
885
|
this._stateEngine.renderingEngines[r].busy.splice(this._stateEngine.renderingEngines[r].busy.indexOf(customizationId), 1);
|
|
932
|
-
this._logger.debug(
|
|
886
|
+
this._logger.debug(`Session(${this.id}).updateOutputs: Updated outputs.`);
|
|
933
887
|
const eventEnd = { type: viewer_shared_types_1.TASK_TYPE.SESSION_OUTPUTS_UPDATE, id: eventId, progress: 1, data: { sessionId: this.id }, status: 'Outputs updated' };
|
|
934
888
|
this._eventEngine.emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, eventEnd);
|
|
935
889
|
return this.node;
|
|
@@ -948,12 +902,11 @@ class SessionEngine {
|
|
|
948
902
|
return fileAsset.id;
|
|
949
903
|
}
|
|
950
904
|
else {
|
|
951
|
-
|
|
952
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.uploadFile', error);
|
|
905
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.uploadFile: Upload reply has not the required format.`);
|
|
953
906
|
}
|
|
954
907
|
}
|
|
955
908
|
catch (e) {
|
|
956
|
-
yield this.handleError(
|
|
909
|
+
yield this.handleError(e, retry);
|
|
957
910
|
return yield this.uploadFile(parameterId, data, type, true);
|
|
958
911
|
}
|
|
959
912
|
});
|
|
@@ -963,14 +916,12 @@ class SessionEngine {
|
|
|
963
916
|
this.checkAvailability('gltf-upload');
|
|
964
917
|
try {
|
|
965
918
|
const responseDto = yield this._sdk.gltf.upload(this._sessionId, yield blob.arrayBuffer(), 'model/gltf-binary', conversion);
|
|
966
|
-
if (!responseDto || !responseDto.gltf || !responseDto.gltf.href)
|
|
967
|
-
|
|
968
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.uploadGLTF', error);
|
|
969
|
-
}
|
|
919
|
+
if (!responseDto || !responseDto.gltf || !responseDto.gltf.href)
|
|
920
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.uploadGLTF: Upload reply has not the required format.`);
|
|
970
921
|
return responseDto;
|
|
971
922
|
}
|
|
972
923
|
catch (e) {
|
|
973
|
-
yield this.handleError(
|
|
924
|
+
yield this.handleError(e, retry);
|
|
974
925
|
return yield this.uploadGLTF(blob, conversion, true);
|
|
975
926
|
}
|
|
976
927
|
});
|
|
@@ -1021,7 +972,7 @@ class SessionEngine {
|
|
|
1021
972
|
if (this.outputs[outputId].status_computation && this.outputs[outputId].status_computation !== sdk_geometry_api_sdk_v2_1.ShapeDiverResponseModelComputationStatus.SUCCESS)
|
|
1022
973
|
warning += `\n\t- status_computation is ${this.outputs[outputId].status_computation}`;
|
|
1023
974
|
if (warning)
|
|
1024
|
-
this._logger.warn(
|
|
975
|
+
this._logger.warn(`\nOutput(${outputId}):${warning}`);
|
|
1025
976
|
}
|
|
1026
977
|
// set the export definitions
|
|
1027
978
|
for (const exportId in this.exports) {
|
|
@@ -1033,32 +984,22 @@ class SessionEngine {
|
|
|
1033
984
|
if (this.exports[exportId].status_computation && this.exports[exportId].status_computation !== sdk_geometry_api_sdk_v2_1.ShapeDiverResponseModelComputationStatus.SUCCESS)
|
|
1034
985
|
warning += `\n\t- status_computation is ${this.exports[exportId].status_computation}`;
|
|
1035
986
|
if (warning)
|
|
1036
|
-
this._logger.warn(
|
|
987
|
+
this._logger.warn(`\nExport(${exportId}):${warning}`);
|
|
1037
988
|
}
|
|
1038
989
|
}
|
|
1039
990
|
checkAvailability(action, checkForModelId = false) {
|
|
1040
991
|
var _a;
|
|
1041
|
-
if (!this._responseDto)
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
if (!this.
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
if (checkForModelId && !this._modelId) {
|
|
1050
|
-
const error = new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: modelId not available.`);
|
|
1051
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.checkAvailability', error);
|
|
1052
|
-
}
|
|
1053
|
-
if (action && !this._responseDto.actions) {
|
|
1054
|
-
const error = new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: actions not available.`);
|
|
1055
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.checkAvailability', error);
|
|
1056
|
-
}
|
|
992
|
+
if (!this._responseDto)
|
|
993
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: responseDto not available.`);
|
|
994
|
+
if (!this._sessionId)
|
|
995
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: sessionId not available.`);
|
|
996
|
+
if (checkForModelId && !this._modelId)
|
|
997
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: modelId not available.`);
|
|
998
|
+
if (action && !this._responseDto.actions)
|
|
999
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: actions not available.`);
|
|
1057
1000
|
const responseDtoAction = (_a = this._responseDto.actions) === null || _a === void 0 ? void 0 : _a.find(a => a.name === action);
|
|
1058
|
-
if (action && !responseDtoAction)
|
|
1059
|
-
|
|
1060
|
-
throw this._logger.handleError(viewer_shared_services_1.LOGGING_TOPIC.SESSION, 'Session.checkAvailability', error);
|
|
1061
|
-
}
|
|
1001
|
+
if (action && !responseDtoAction)
|
|
1002
|
+
throw new viewer_shared_services_1.ShapeDiverViewerSessionError(`Session.checkAvailability: action ${action} not available.`);
|
|
1062
1003
|
}
|
|
1063
1004
|
customizeInternal(cancelRequest) {
|
|
1064
1005
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -1079,41 +1020,34 @@ class SessionEngine {
|
|
|
1079
1020
|
return parallel === false ? this.loadOutputs(cancelRequest) : this.loadOutputsParallel(responseDto, cancelRequest);
|
|
1080
1021
|
}
|
|
1081
1022
|
catch (e) {
|
|
1082
|
-
yield this.handleError(
|
|
1023
|
+
yield this.handleError(e, retry);
|
|
1083
1024
|
if (cancelRequest())
|
|
1084
1025
|
return new SessionTreeNode_1.SessionTreeNode();
|
|
1085
1026
|
return yield this.customizeSession(parameters, cancelRequest, parallel, true);
|
|
1086
1027
|
}
|
|
1087
1028
|
});
|
|
1088
1029
|
}
|
|
1089
|
-
handleError(
|
|
1030
|
+
handleError(e, retry = false) {
|
|
1090
1031
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1091
1032
|
if (e instanceof sdk_geometry_api_sdk_v2_1.ShapeDiverResponseError) {
|
|
1092
1033
|
if (e.error === sdk_geometry_api_sdk_v2_1.ShapeDiverResponseErrorType.SESSION_GONE_ERROR) {
|
|
1093
1034
|
// case 1: the session is no longer available
|
|
1094
1035
|
// we try to re-initialize the session 3 times, if that does not work, we close it
|
|
1095
|
-
this._logger.warn(
|
|
1036
|
+
this._logger.warn(`The session has been closed, trying to re-initialize.`);
|
|
1096
1037
|
if (this._retryCounter < 3) {
|
|
1097
1038
|
// we retry this 3 times, the `retry` option in the init function is set to true and passed on
|
|
1098
1039
|
this._retryCounter = retry ? this._retryCounter + 1 : 1;
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
yield this.init(this.parameterValues, true);
|
|
1102
|
-
}
|
|
1103
|
-
catch (e) {
|
|
1104
|
-
if (e instanceof viewer_shared_services_1.ShapeDiverViewerError || e instanceof sdk_geometry_api_sdk_v2_1.ShapeDiverError)
|
|
1105
|
-
throw e;
|
|
1106
|
-
throw this._logger.handleError(topic, scope, e);
|
|
1107
|
-
}
|
|
1040
|
+
this._initialized = false;
|
|
1041
|
+
yield this.init(this.parameterValues, true);
|
|
1108
1042
|
}
|
|
1109
1043
|
else {
|
|
1110
1044
|
// the retries were exceeded, we close the session
|
|
1111
|
-
this._logger.warn(
|
|
1045
|
+
this._logger.warn('Tried to retry the connect multiple times, bearer token still not valid. Closing Session.');
|
|
1112
1046
|
try {
|
|
1113
1047
|
yield this._closeOnFailure();
|
|
1114
1048
|
}
|
|
1115
1049
|
catch (e) { }
|
|
1116
|
-
throw
|
|
1050
|
+
throw e;
|
|
1117
1051
|
}
|
|
1118
1052
|
}
|
|
1119
1053
|
else if (e.error === sdk_geometry_api_sdk_v2_1.ShapeDiverResponseErrorType.JWT_VALIDATION_ERROR) {
|
|
@@ -1123,34 +1057,34 @@ class SessionEngine {
|
|
|
1123
1057
|
if (this._refreshBearerToken) {
|
|
1124
1058
|
this.bearerToken = yield this._refreshBearerToken();
|
|
1125
1059
|
this._retryCounter = retry ? this._retryCounter + 1 : 1;
|
|
1126
|
-
this._logger.warn(
|
|
1060
|
+
this._logger.warn('Re-trying with new bearer token.');
|
|
1127
1061
|
}
|
|
1128
1062
|
else {
|
|
1129
1063
|
// no bearer tokens are supplied, we close the session
|
|
1130
|
-
this._logger.warn(
|
|
1064
|
+
this._logger.warn('No retry possible, no new bearer token was supplied. Closing Session.');
|
|
1131
1065
|
try {
|
|
1132
1066
|
yield this._closeOnFailure();
|
|
1133
1067
|
}
|
|
1134
1068
|
catch (e) { }
|
|
1135
|
-
throw
|
|
1069
|
+
throw e;
|
|
1136
1070
|
}
|
|
1137
1071
|
}
|
|
1138
1072
|
else {
|
|
1139
1073
|
// the retries were exceeded, we close the session
|
|
1140
|
-
this._logger.warn(
|
|
1074
|
+
this._logger.warn('Tried to retry the connect multiple times, bearer token still not valid. Closing Session.');
|
|
1141
1075
|
try {
|
|
1142
1076
|
yield this._closeOnFailure();
|
|
1143
1077
|
}
|
|
1144
1078
|
catch (e) { }
|
|
1145
|
-
throw
|
|
1079
|
+
throw e;
|
|
1146
1080
|
}
|
|
1147
1081
|
}
|
|
1148
1082
|
else {
|
|
1149
|
-
throw
|
|
1083
|
+
throw e;
|
|
1150
1084
|
}
|
|
1151
1085
|
}
|
|
1152
1086
|
else {
|
|
1153
|
-
throw
|
|
1087
|
+
throw e;
|
|
1154
1088
|
}
|
|
1155
1089
|
});
|
|
1156
1090
|
}
|
|
@@ -1250,6 +1184,14 @@ class SessionEngine {
|
|
|
1250
1184
|
}
|
|
1251
1185
|
}
|
|
1252
1186
|
}
|
|
1187
|
+
addToSceneTree(node) {
|
|
1188
|
+
this._sceneTree.addNode(node);
|
|
1189
|
+
this._sceneTree.root.updateVersion();
|
|
1190
|
+
}
|
|
1191
|
+
removeFromSceneTree(node) {
|
|
1192
|
+
this._sceneTree.removeNode(node);
|
|
1193
|
+
this._sceneTree.root.updateVersion();
|
|
1194
|
+
}
|
|
1253
1195
|
}
|
|
1254
1196
|
exports.SessionEngine = SessionEngine;
|
|
1255
1197
|
_SessionEngine_customizationProcess = new WeakMap(), _SessionEngine_parameterHistory = new WeakMap(), _SessionEngine_parameterHistoryCall = new WeakMap(), _SessionEngine_parameterHistoryForward = new WeakMap();
|