@inweb/viewer-visualize 25.3.18 → 25.3.20
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/viewer-visualize.js +150 -147
- package/dist/viewer-visualize.js.map +1 -1
- package/dist/viewer-visualize.min.js +1 -1
- package/dist/viewer-visualize.module.js +167 -166
- package/dist/viewer-visualize.module.js.map +1 -1
- package/lib/ConvetMath.d.ts +28 -0
- package/lib/Viewer/Loaders/BaseLoader.d.ts +3 -3
- package/lib/Viewer/Loaders/LoaderFactory.d.ts +3 -3
- package/lib/Viewer/Viewer.d.ts +4 -4
- package/lib/Viewer/utils.d.ts +2 -3
- package/lib/index.d.ts +1 -1
- package/package.json +4 -4
- package/src/ConvetMath.ts +373 -0
- package/src/Viewer/Loaders/BaseLoader.ts +3 -3
- package/src/Viewer/Loaders/LoaderFactory.ts +4 -3
- package/src/Viewer/Loaders/TCSLoader.ts +12 -12
- package/src/Viewer/Loaders/UpdaterController.ts +1 -0
- package/src/Viewer/Loaders/VsfXLoader.ts +1 -1
- package/src/Viewer/Loaders/VsfXPartialLoader.ts +5 -28
- package/src/Viewer/Loaders/VsfXStreamingLoader.ts +1 -1
- package/src/Viewer/Viewer.ts +16 -16
- package/src/Viewer/utils.ts +3 -12
- package/src/index.ts +1 -1
|
@@ -61,54 +61,62 @@ commands("VisualizeJS").registerCommand("noop", (() => {}));
|
|
|
61
61
|
|
|
62
62
|
commands("ThreeJS").registerCommand("noop", (() => {}));
|
|
63
63
|
|
|
64
|
+
function defaultOptions() {
|
|
65
|
+
return {
|
|
66
|
+
showWCS: true,
|
|
67
|
+
cameraAnimation: true,
|
|
68
|
+
antialiasing: true,
|
|
69
|
+
groundShadow: false,
|
|
70
|
+
shadows: false,
|
|
71
|
+
cameraAxisXSpeed: 4,
|
|
72
|
+
cameraAxisYSpeed: 1,
|
|
73
|
+
ambientOcclusion: false,
|
|
74
|
+
enableStreamingMode: true,
|
|
75
|
+
enablePartialMode: false,
|
|
76
|
+
memoryLimit: 3294967296,
|
|
77
|
+
cuttingPlaneFillColor: {
|
|
78
|
+
red: 255,
|
|
79
|
+
green: 152,
|
|
80
|
+
blue: 0
|
|
81
|
+
},
|
|
82
|
+
edgesColor: {
|
|
83
|
+
r: 255,
|
|
84
|
+
g: 152,
|
|
85
|
+
b: 0
|
|
86
|
+
},
|
|
87
|
+
facesColor: {
|
|
88
|
+
r: 255,
|
|
89
|
+
g: 152,
|
|
90
|
+
b: 0
|
|
91
|
+
},
|
|
92
|
+
edgesVisibility: true,
|
|
93
|
+
edgesOverlap: true,
|
|
94
|
+
facesOverlap: false,
|
|
95
|
+
facesTransparancy: 200,
|
|
96
|
+
enableCustomHighlight: true,
|
|
97
|
+
sceneGraph: false,
|
|
98
|
+
edgeModel: true,
|
|
99
|
+
reverseZoomWheel: false,
|
|
100
|
+
enableZoomWheel: true,
|
|
101
|
+
enableGestures: true,
|
|
102
|
+
geometryType: "vsfx"
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
|
|
64
106
|
class Options {
|
|
65
107
|
constructor(emitter) {
|
|
66
108
|
this._emitter = emitter;
|
|
67
|
-
this._data =
|
|
109
|
+
this._data = defaultOptions();
|
|
68
110
|
this.loadFromStorage();
|
|
69
111
|
}
|
|
70
112
|
static defaults() {
|
|
71
|
-
return
|
|
72
|
-
showWCS: true,
|
|
73
|
-
cameraAnimation: true,
|
|
74
|
-
antialiasing: true,
|
|
75
|
-
groundShadow: false,
|
|
76
|
-
shadows: false,
|
|
77
|
-
cameraAxisXSpeed: 4,
|
|
78
|
-
cameraAxisYSpeed: 1,
|
|
79
|
-
ambientOcclusion: false,
|
|
80
|
-
enableStreamingMode: true,
|
|
81
|
-
enablePartialMode: false,
|
|
82
|
-
memoryLimit: 3294967296,
|
|
83
|
-
cuttingPlaneFillColor: {
|
|
84
|
-
red: 255,
|
|
85
|
-
green: 152,
|
|
86
|
-
blue: 0
|
|
87
|
-
},
|
|
88
|
-
edgesColor: {
|
|
89
|
-
r: 255,
|
|
90
|
-
g: 152,
|
|
91
|
-
b: 0
|
|
92
|
-
},
|
|
93
|
-
facesColor: {
|
|
94
|
-
r: 255,
|
|
95
|
-
g: 152,
|
|
96
|
-
b: 0
|
|
97
|
-
},
|
|
98
|
-
edgesVisibility: true,
|
|
99
|
-
edgesOverlap: true,
|
|
100
|
-
facesOverlap: false,
|
|
101
|
-
facesTransparancy: 200,
|
|
102
|
-
enableCustomHighlight: true,
|
|
103
|
-
sceneGraph: false,
|
|
104
|
-
edgeModel: true,
|
|
105
|
-
reverseZoomWheel: false,
|
|
106
|
-
enableZoomWheel: true,
|
|
107
|
-
enableGestures: true,
|
|
108
|
-
geometryType: "vsfx"
|
|
109
|
-
};
|
|
113
|
+
return defaultOptions();
|
|
110
114
|
}
|
|
111
115
|
notifierChangeEvent() {
|
|
116
|
+
console.warn("Options.notifierChangeEvent() has been deprecated since 25.3 and will be removed in a future release, use Options.change() instead.");
|
|
117
|
+
this.change();
|
|
118
|
+
}
|
|
119
|
+
change() {
|
|
112
120
|
if (this._emitter !== undefined) {
|
|
113
121
|
this.saveToStorage();
|
|
114
122
|
this._emitter.emit({
|
|
@@ -159,151 +167,154 @@ class Options {
|
|
|
159
167
|
return this._data;
|
|
160
168
|
}
|
|
161
169
|
set data(value) {
|
|
162
|
-
const
|
|
170
|
+
const enablePartialMode = value.enableStreamingMode ? value.enablePartialMode : false;
|
|
171
|
+
const sceneGraph = enablePartialMode ? false : value.sceneGraph;
|
|
163
172
|
this._data = {
|
|
164
173
|
...Options.defaults(),
|
|
165
174
|
...this._data,
|
|
166
175
|
...value,
|
|
176
|
+
enablePartialMode: enablePartialMode,
|
|
167
177
|
sceneGraph: sceneGraph
|
|
168
178
|
};
|
|
169
|
-
this.
|
|
179
|
+
this.change();
|
|
170
180
|
}
|
|
171
181
|
get showWCS() {
|
|
172
182
|
return this._data.showWCS;
|
|
173
183
|
}
|
|
174
184
|
set showWCS(value) {
|
|
175
185
|
this._data.showWCS = value;
|
|
176
|
-
this.
|
|
186
|
+
this.change();
|
|
177
187
|
}
|
|
178
188
|
get cameraAnimation() {
|
|
179
189
|
return this._data.cameraAnimation;
|
|
180
190
|
}
|
|
181
191
|
set cameraAnimation(value) {
|
|
182
192
|
this._data.cameraAnimation = value;
|
|
183
|
-
this.
|
|
193
|
+
this.change();
|
|
184
194
|
}
|
|
185
195
|
get antialiasing() {
|
|
186
196
|
return this._data.antialiasing;
|
|
187
197
|
}
|
|
188
198
|
set antialiasing(value) {
|
|
189
199
|
this._data.antialiasing = value;
|
|
190
|
-
this.
|
|
200
|
+
this.change();
|
|
191
201
|
}
|
|
192
202
|
get groundShadow() {
|
|
193
203
|
return this._data.groundShadow;
|
|
194
204
|
}
|
|
195
205
|
set groundShadow(value) {
|
|
196
206
|
this._data.groundShadow = value;
|
|
197
|
-
this.
|
|
207
|
+
this.change();
|
|
198
208
|
}
|
|
199
209
|
get shadows() {
|
|
200
210
|
return this._data.shadows;
|
|
201
211
|
}
|
|
202
212
|
set shadows(value) {
|
|
203
213
|
this._data.shadows = value;
|
|
204
|
-
this.
|
|
214
|
+
this.change();
|
|
205
215
|
}
|
|
206
216
|
get cameraAxisXSpeed() {
|
|
207
217
|
return this._data.cameraAxisXSpeed;
|
|
208
218
|
}
|
|
209
219
|
set cameraAxisXSpeed(value) {
|
|
210
220
|
this._data.cameraAxisXSpeed = value;
|
|
211
|
-
this.
|
|
221
|
+
this.change();
|
|
212
222
|
}
|
|
213
223
|
get cameraAxisYSpeed() {
|
|
214
224
|
return this._data.cameraAxisYSpeed;
|
|
215
225
|
}
|
|
216
226
|
set cameraAxisYSpeed(value) {
|
|
217
227
|
this.cameraAxisYSpeed = value;
|
|
218
|
-
this.
|
|
228
|
+
this.change();
|
|
219
229
|
}
|
|
220
230
|
get ambientOcclusion() {
|
|
221
231
|
return this._data.ambientOcclusion;
|
|
222
232
|
}
|
|
223
233
|
set ambientOcclusion(value) {
|
|
224
234
|
this._data.ambientOcclusion = value;
|
|
225
|
-
this.
|
|
235
|
+
this.change();
|
|
226
236
|
}
|
|
227
237
|
get enableStreamingMode() {
|
|
228
238
|
return this._data.enableStreamingMode;
|
|
229
239
|
}
|
|
230
240
|
set enableStreamingMode(value) {
|
|
231
241
|
this._data.enableStreamingMode = value;
|
|
232
|
-
if (this._data.
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
this.notifierChangeEvent();
|
|
242
|
+
if (!value) this._data.enablePartialMode = false;
|
|
243
|
+
this.change();
|
|
236
244
|
}
|
|
237
245
|
get enablePartialMode() {
|
|
238
246
|
return this._data.enablePartialMode;
|
|
239
247
|
}
|
|
240
248
|
set enablePartialMode(value) {
|
|
241
249
|
this._data.enablePartialMode = value;
|
|
242
|
-
if (value)
|
|
243
|
-
|
|
250
|
+
if (value) {
|
|
251
|
+
this._data.enableStreamingMode = true;
|
|
252
|
+
this._data.sceneGraph = false;
|
|
253
|
+
}
|
|
254
|
+
this.change();
|
|
244
255
|
}
|
|
245
256
|
get memoryLimit() {
|
|
246
257
|
return this._data.memoryLimit;
|
|
247
258
|
}
|
|
248
259
|
set memoryLimit(value) {
|
|
249
260
|
this._data.memoryLimit = value;
|
|
250
|
-
this.
|
|
261
|
+
this.change();
|
|
251
262
|
}
|
|
252
263
|
get cuttingPlaneFillColor() {
|
|
253
264
|
return this._data.cuttingPlaneFillColor;
|
|
254
265
|
}
|
|
255
266
|
set cuttingPlaneFillColor(value) {
|
|
256
267
|
this._data.cuttingPlaneFillColor = value;
|
|
257
|
-
this.
|
|
268
|
+
this.change();
|
|
258
269
|
}
|
|
259
270
|
get edgesColor() {
|
|
260
271
|
return this._data.edgesColor;
|
|
261
272
|
}
|
|
262
273
|
set edgesColor(value) {
|
|
263
274
|
this._data.edgesColor = value;
|
|
264
|
-
this.
|
|
275
|
+
this.change();
|
|
265
276
|
}
|
|
266
277
|
get facesColor() {
|
|
267
278
|
return this._data.facesColor;
|
|
268
279
|
}
|
|
269
280
|
set facesColor(value) {
|
|
270
281
|
this._data.facesColor = value;
|
|
271
|
-
this.
|
|
282
|
+
this.change();
|
|
272
283
|
}
|
|
273
284
|
get edgesVisibility() {
|
|
274
285
|
return this._data.edgesVisibility;
|
|
275
286
|
}
|
|
276
287
|
set edgesVisibility(value) {
|
|
277
288
|
this._data.edgesVisibility = value;
|
|
278
|
-
this.
|
|
289
|
+
this.change();
|
|
279
290
|
}
|
|
280
291
|
get edgesOverlap() {
|
|
281
292
|
return this._data.edgesOverlap;
|
|
282
293
|
}
|
|
283
294
|
set edgesOverlap(value) {
|
|
284
295
|
this._data.edgesOverlap = value;
|
|
285
|
-
this.
|
|
296
|
+
this.change();
|
|
286
297
|
}
|
|
287
298
|
get facesOverlap() {
|
|
288
299
|
return this._data.facesOverlap;
|
|
289
300
|
}
|
|
290
301
|
set facesOverlap(value) {
|
|
291
302
|
this._data.facesOverlap = value;
|
|
292
|
-
this.
|
|
303
|
+
this.change();
|
|
293
304
|
}
|
|
294
305
|
get facesTransparancy() {
|
|
295
306
|
return this._data.facesTransparancy;
|
|
296
307
|
}
|
|
297
308
|
set facesTransparancy(value) {
|
|
298
309
|
this._data.facesTransparancy = value;
|
|
299
|
-
this.
|
|
310
|
+
this.change();
|
|
300
311
|
}
|
|
301
312
|
get enableCustomHighlight() {
|
|
302
313
|
return this._data.enableCustomHighlight;
|
|
303
314
|
}
|
|
304
315
|
set enableCustomHighlight(value) {
|
|
305
316
|
this._data.enableCustomHighlight = value;
|
|
306
|
-
this.
|
|
317
|
+
this.change();
|
|
307
318
|
}
|
|
308
319
|
get sceneGraph() {
|
|
309
320
|
return this._data.sceneGraph;
|
|
@@ -311,42 +322,42 @@ class Options {
|
|
|
311
322
|
set sceneGraph(value) {
|
|
312
323
|
this._data.sceneGraph = value;
|
|
313
324
|
if (value) this._data.enablePartialMode = false;
|
|
314
|
-
this.
|
|
325
|
+
this.change();
|
|
315
326
|
}
|
|
316
327
|
get edgeModel() {
|
|
317
328
|
return Boolean(this._data.edgeModel);
|
|
318
329
|
}
|
|
319
330
|
set edgeModel(value) {
|
|
320
331
|
this._data.edgeModel = Boolean(value);
|
|
321
|
-
this.
|
|
332
|
+
this.change();
|
|
322
333
|
}
|
|
323
334
|
get reverseZoomWheel() {
|
|
324
335
|
return this._data.reverseZoomWheel;
|
|
325
336
|
}
|
|
326
337
|
set reverseZoomWheel(value) {
|
|
327
338
|
this._data.reverseZoomWheel = !!value;
|
|
328
|
-
this.
|
|
339
|
+
this.change();
|
|
329
340
|
}
|
|
330
341
|
get enableZoomWheel() {
|
|
331
342
|
return this._data.enableZoomWheel;
|
|
332
343
|
}
|
|
333
344
|
set enableZoomWheel(value) {
|
|
334
345
|
this._data.enableZoomWheel = !!value;
|
|
335
|
-
this.
|
|
346
|
+
this.change();
|
|
336
347
|
}
|
|
337
348
|
get enableGestures() {
|
|
338
349
|
return this._data.enableGestures;
|
|
339
350
|
}
|
|
340
351
|
set enableGestures(value) {
|
|
341
352
|
this._data.enableGestures = !!value;
|
|
342
|
-
this.
|
|
353
|
+
this.change();
|
|
343
354
|
}
|
|
344
355
|
get geometryType() {
|
|
345
356
|
return this._data.geometryType;
|
|
346
357
|
}
|
|
347
358
|
set geometryType(value) {
|
|
348
359
|
this._data.geometryType = value;
|
|
349
|
-
this.
|
|
360
|
+
this.change();
|
|
350
361
|
}
|
|
351
362
|
}
|
|
352
363
|
|
|
@@ -682,27 +693,24 @@ commands("VisualizeJS").registerCommand("zoomToSelected", zoomToSelected);
|
|
|
682
693
|
|
|
683
694
|
class EventEmitter2 {
|
|
684
695
|
constructor() {
|
|
685
|
-
this._listeners =
|
|
696
|
+
this._listeners = {};
|
|
686
697
|
}
|
|
687
698
|
addEventListener(type, listener) {
|
|
688
|
-
if (this._listeners === undefined) this._listeners = {};
|
|
689
699
|
if (this._listeners[type] === undefined) this._listeners[type] = [];
|
|
690
700
|
this._listeners[type].push(listener);
|
|
691
701
|
return this;
|
|
692
702
|
}
|
|
693
703
|
removeEventListener(type, listener) {
|
|
694
|
-
if (this._listeners === undefined) return this;
|
|
695
704
|
if (this._listeners[type] === undefined) return this;
|
|
696
705
|
const listeners = this._listeners[type].filter((x => x !== listener));
|
|
697
|
-
this._listeners[type] = listeners
|
|
706
|
+
if (listeners.length !== 0) this._listeners[type] = listeners; else delete this._listeners[type];
|
|
698
707
|
return this;
|
|
699
708
|
}
|
|
700
709
|
removeAllListeners(type) {
|
|
701
|
-
if (type) this._listeners[type]
|
|
710
|
+
if (type) delete this._listeners[type]; else this._listeners = {};
|
|
702
711
|
return this;
|
|
703
712
|
}
|
|
704
713
|
emitEvent(event) {
|
|
705
|
-
if (this._listeners === undefined) return false;
|
|
706
714
|
if (this._listeners[event.type] === undefined) return false;
|
|
707
715
|
const invoke = this._listeners[event.type].slice();
|
|
708
716
|
invoke.forEach((listener => listener.call(this, event)));
|
|
@@ -2572,27 +2580,25 @@ class TCSLoader extends BaseLoader {
|
|
|
2572
2580
|
const visLib = this.viewer.visLib();
|
|
2573
2581
|
const visViewer = visLib.getViewer();
|
|
2574
2582
|
const abortController = new AbortController;
|
|
2575
|
-
const
|
|
2576
|
-
const chunksProgress = listFileForDownload.map((() => 0));
|
|
2577
|
-
const calcProgress = (index, progress) => {
|
|
2578
|
-
chunksProgress[index] = progress;
|
|
2579
|
-
const fileProgress = chunksProgress.reduce(((acc, progress) => acc += progress)) / (chunksProgress.length || 1);
|
|
2580
|
-
this.viewer.emitEvent({
|
|
2581
|
-
type: "geometryprogress",
|
|
2582
|
-
data: fileProgress,
|
|
2583
|
-
model: this.model
|
|
2584
|
-
});
|
|
2585
|
-
};
|
|
2583
|
+
const filesToDownload = [ this.model.database, ...this.model.geometry ];
|
|
2586
2584
|
this.viewer._abortController = abortController;
|
|
2585
|
+
console.time("File load time");
|
|
2587
2586
|
try {
|
|
2588
2587
|
this.viewer.emitEvent({
|
|
2589
2588
|
type: "geometrystart",
|
|
2590
2589
|
model: this.model
|
|
2591
2590
|
});
|
|
2592
|
-
for (let i = 0; i <
|
|
2593
|
-
const
|
|
2594
|
-
const
|
|
2595
|
-
|
|
2591
|
+
for (let i = 0; i < filesToDownload.length; i++) {
|
|
2592
|
+
const dataId = filesToDownload[i];
|
|
2593
|
+
const chunkLoadHandler = progress => {
|
|
2594
|
+
const data = (i + progress) / filesToDownload.length;
|
|
2595
|
+
this.viewer.emitEvent({
|
|
2596
|
+
type: "geometryprogress",
|
|
2597
|
+
data: data,
|
|
2598
|
+
model: this.model
|
|
2599
|
+
});
|
|
2600
|
+
};
|
|
2601
|
+
const arrayBuffer = await this.model.downloadResource(dataId, chunkLoadHandler, abortController.signal);
|
|
2596
2602
|
if (abortController.signal.aborted) {
|
|
2597
2603
|
await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
|
|
2598
2604
|
}
|
|
@@ -2617,6 +2623,59 @@ class TCSLoader extends BaseLoader {
|
|
|
2617
2623
|
});
|
|
2618
2624
|
}
|
|
2619
2625
|
}
|
|
2626
|
+
console.timeEnd("File load time");
|
|
2627
|
+
this.viewer.emitEvent({
|
|
2628
|
+
type: "geometryend",
|
|
2629
|
+
model: this.model
|
|
2630
|
+
});
|
|
2631
|
+
} catch (error) {
|
|
2632
|
+
this.viewer.emitEvent({
|
|
2633
|
+
type: "geometryerror",
|
|
2634
|
+
data: error,
|
|
2635
|
+
model: this.model
|
|
2636
|
+
});
|
|
2637
|
+
throw error;
|
|
2638
|
+
}
|
|
2639
|
+
}
|
|
2640
|
+
}
|
|
2641
|
+
|
|
2642
|
+
class VsfXLoader extends BaseLoader {
|
|
2643
|
+
async load() {
|
|
2644
|
+
if (!this.viewer.visualizeJs) return;
|
|
2645
|
+
const visLib = this.viewer.visLib();
|
|
2646
|
+
const visViewer = visLib.getViewer();
|
|
2647
|
+
const abortController = new AbortController;
|
|
2648
|
+
this.viewer._abortController = abortController;
|
|
2649
|
+
const chunkLoadHandler = progress => {
|
|
2650
|
+
this.viewer.emitEvent({
|
|
2651
|
+
type: "geometryprogress",
|
|
2652
|
+
data: progress,
|
|
2653
|
+
model: this.model
|
|
2654
|
+
});
|
|
2655
|
+
};
|
|
2656
|
+
console.time("File load time");
|
|
2657
|
+
try {
|
|
2658
|
+
this.viewer.emitEvent({
|
|
2659
|
+
type: "geometrystart",
|
|
2660
|
+
model: this.model
|
|
2661
|
+
});
|
|
2662
|
+
const arrayBuffer = await this.model.downloadResource(this.model.database, chunkLoadHandler, abortController.signal);
|
|
2663
|
+
if (abortController.signal.aborted) {
|
|
2664
|
+
await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
|
|
2665
|
+
}
|
|
2666
|
+
const data = new Uint8Array(arrayBuffer);
|
|
2667
|
+
if (this.viewer.visualizeJs) {
|
|
2668
|
+
visViewer.parseVsfx(data);
|
|
2669
|
+
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2670
|
+
this.viewer.syncOptions();
|
|
2671
|
+
this.viewer.resize();
|
|
2672
|
+
}
|
|
2673
|
+
console.timeEnd("File load time");
|
|
2674
|
+
this.viewer.emitEvent({
|
|
2675
|
+
type: "databasechunk",
|
|
2676
|
+
data: data,
|
|
2677
|
+
model: this.model
|
|
2678
|
+
});
|
|
2620
2679
|
this.viewer.emitEvent({
|
|
2621
2680
|
type: "geometryend",
|
|
2622
2681
|
model: this.model
|
|
@@ -2646,6 +2705,7 @@ var UpdateType;
|
|
|
2646
2705
|
|
|
2647
2706
|
class UpdaterController {
|
|
2648
2707
|
constructor() {
|
|
2708
|
+
this.lastUpdate = 0;
|
|
2649
2709
|
this.delayUpdateTime = START_UPDATE_TIME;
|
|
2650
2710
|
}
|
|
2651
2711
|
initialize(viewer) {
|
|
@@ -2779,13 +2839,11 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2779
2839
|
}
|
|
2780
2840
|
};
|
|
2781
2841
|
const downloadResourceRange = async (dataId, requestId, ranges) => {
|
|
2782
|
-
console.log("--- VsfXPartialLoader.downloadResourceRange", dataId, requestId, ranges);
|
|
2783
2842
|
const abortCtrl = new AbortController;
|
|
2784
2843
|
abortControllerForRequestMap.set(requestId, abortCtrl);
|
|
2785
2844
|
try {
|
|
2786
|
-
await this.model.downloadResourceRange(dataId,
|
|
2845
|
+
await this.model.downloadResourceRange(dataId, requestId, ranges, chunkLoadHandler, abortCtrl.signal);
|
|
2787
2846
|
} catch (error) {
|
|
2788
|
-
console.log("--- VsfXPartialLoader.downloadResourceRange error", dataId, requestId, error);
|
|
2789
2847
|
this.viewer.emitEvent({
|
|
2790
2848
|
type: "geometryerror",
|
|
2791
2849
|
data: error,
|
|
@@ -2812,7 +2870,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2812
2870
|
};
|
|
2813
2871
|
const objectHandler = {
|
|
2814
2872
|
onServicePartReceived: bHasIndex => {
|
|
2815
|
-
console.log("--- VsfXPartialLoader.onServicePartReceived", bHasIndex);
|
|
2816
2873
|
if (bHasIndex) {
|
|
2817
2874
|
servicePartAborted = true;
|
|
2818
2875
|
abortController.abort();
|
|
@@ -2820,26 +2877,22 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2820
2877
|
},
|
|
2821
2878
|
onRequest: (requestId, records) => {
|
|
2822
2879
|
const ranges = requestRecordsToRanges(requestId, records);
|
|
2823
|
-
console.log("--- VsfXPartialLoader.onRequest", this.model.database, requestId, ranges);
|
|
2824
2880
|
downloadResourceRange(this.model.database, requestId, ranges);
|
|
2825
2881
|
},
|
|
2826
2882
|
onFullLoaded: () => {
|
|
2827
|
-
console.log("--- VsfXPartialLoader.onFullLoaded");
|
|
2828
2883
|
updaterController.update(UpdateType.kNormal);
|
|
2829
2884
|
},
|
|
2830
2885
|
onRequestResponseParsed: requestId => {
|
|
2831
|
-
console.log("--- VsfXPartialLoader.onRequestResponseParsed", requestId);
|
|
2832
2886
|
abortControllerForRequestMap.delete(requestId);
|
|
2833
2887
|
updaterController.update(UpdateType.kNormal);
|
|
2834
2888
|
},
|
|
2835
2889
|
onRequestAborted: requestId => {
|
|
2836
|
-
console.log("--- VsfXPartialLoader.onRequestAborted", requestId);
|
|
2837
2890
|
const abortCtrl = abortControllerForRequestMap.get(requestId);
|
|
2838
2891
|
if (abortCtrl) abortCtrl.abort();
|
|
2839
2892
|
},
|
|
2840
|
-
onRequestResourceFile: (requestId,
|
|
2893
|
+
onRequestResourceFile: (requestId, _, records) => {
|
|
2894
|
+
const dataId = `${this.model.fileId}${this.model.file.type}`;
|
|
2841
2895
|
const ranges = requestRecordsToRanges(requestId, records);
|
|
2842
|
-
console.log("--- VsfXPartialLoader.onRequestResourceFile", dataId, requestId, ranges);
|
|
2843
2896
|
let pendingRanges = [];
|
|
2844
2897
|
let requestNumber = 0;
|
|
2845
2898
|
const pendingRequest = pendingRequestsMap.get(dataId);
|
|
@@ -2848,7 +2901,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2848
2901
|
requestNumber = pendingRequest.number;
|
|
2849
2902
|
}
|
|
2850
2903
|
if (requestNumber <= 5) {
|
|
2851
|
-
console.log("--- VsfXPartialLoader.onRequestResourceFile: requestNumber <= 5");
|
|
2852
2904
|
pendingRequestsMap.set(dataId, {
|
|
2853
2905
|
ranges: [],
|
|
2854
2906
|
number: requestNumber + 1
|
|
@@ -2858,7 +2910,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2858
2910
|
}
|
|
2859
2911
|
pendingRanges = pendingRanges.concat(ranges);
|
|
2860
2912
|
if (pendingRanges.length >= PENDING_REQUESTS_SIZE) {
|
|
2861
|
-
console.log("--- VsfXPartialLoader.onRequestResourceFile: pendingRanges.length >", PENDING_REQUESTS_SIZE);
|
|
2862
2913
|
if (pendingRequestsTimerId) {
|
|
2863
2914
|
window.clearTimeout(pendingRequestsTimerId);
|
|
2864
2915
|
pendingRequestsTimerId = 0;
|
|
@@ -2876,7 +2927,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2876
2927
|
});
|
|
2877
2928
|
if (pendingRequestsTimerId === 0) {
|
|
2878
2929
|
pendingRequestsTimerId = window.setTimeout((() => {
|
|
2879
|
-
console.log("--- VsfXPartialLoader.onRequestResourceFile: timer", PENDING_REQUESTS_SIZE);
|
|
2880
2930
|
pendingRequestsAbortController.signal.removeEventListener("abort", pendingRequestsAbortHandler);
|
|
2881
2931
|
pendingRequestsTimerId = 0;
|
|
2882
2932
|
pendingRequestsMap.forEach(((request, dataId) => {
|
|
@@ -2923,58 +2973,6 @@ class VsfXPartialLoader extends BaseLoader {
|
|
|
2923
2973
|
}
|
|
2924
2974
|
}
|
|
2925
2975
|
|
|
2926
|
-
class VsfXLoader extends BaseLoader {
|
|
2927
|
-
async load() {
|
|
2928
|
-
if (!this.viewer.visualizeJs) return;
|
|
2929
|
-
const visLib = this.viewer.visLib();
|
|
2930
|
-
const visViewer = visLib.getViewer();
|
|
2931
|
-
const abortController = new AbortController;
|
|
2932
|
-
this.viewer._abortController = abortController;
|
|
2933
|
-
const chunkLoadHandler = progress => {
|
|
2934
|
-
this.viewer.emitEvent({
|
|
2935
|
-
type: "geometryprogress",
|
|
2936
|
-
data: progress,
|
|
2937
|
-
model: this.model
|
|
2938
|
-
});
|
|
2939
|
-
};
|
|
2940
|
-
console.time("File load time");
|
|
2941
|
-
try {
|
|
2942
|
-
this.viewer.emitEvent({
|
|
2943
|
-
type: "geometrystart",
|
|
2944
|
-
model: this.model
|
|
2945
|
-
});
|
|
2946
|
-
const arrayBuffer = await this.model.downloadResource(this.model.database, chunkLoadHandler, abortController.signal);
|
|
2947
|
-
if (abortController.signal.aborted) {
|
|
2948
|
-
await Promise.reject(new Error(`Open model aborted ${this.model.name}`));
|
|
2949
|
-
}
|
|
2950
|
-
const data = new Uint8Array(arrayBuffer);
|
|
2951
|
-
if (this.viewer.visualizeJs) {
|
|
2952
|
-
visViewer.parseVsfx(data);
|
|
2953
|
-
this.viewer.syncOpenCloudVisualStyle(false);
|
|
2954
|
-
this.viewer.syncOptions();
|
|
2955
|
-
this.viewer.resize();
|
|
2956
|
-
}
|
|
2957
|
-
console.timeEnd("File load time");
|
|
2958
|
-
this.viewer.emitEvent({
|
|
2959
|
-
type: "databasechunk",
|
|
2960
|
-
data: data,
|
|
2961
|
-
model: this.model
|
|
2962
|
-
});
|
|
2963
|
-
this.viewer.emitEvent({
|
|
2964
|
-
type: "geometryend",
|
|
2965
|
-
model: this.model
|
|
2966
|
-
});
|
|
2967
|
-
} catch (error) {
|
|
2968
|
-
this.viewer.emitEvent({
|
|
2969
|
-
type: "geometryerror",
|
|
2970
|
-
data: error,
|
|
2971
|
-
model: this.model
|
|
2972
|
-
});
|
|
2973
|
-
throw error;
|
|
2974
|
-
}
|
|
2975
|
-
}
|
|
2976
|
-
}
|
|
2977
|
-
|
|
2978
2976
|
class LoaderFactory {
|
|
2979
2977
|
create(viewer, model, options) {
|
|
2980
2978
|
const geometryType = model.database.split(".").pop();
|
|
@@ -4917,15 +4915,17 @@ const OVERLAY_VIEW_NAME = "$OVERLAY_VIEW_NAME";
|
|
|
4917
4915
|
const isExist = value => value !== undefined && value !== null;
|
|
4918
4916
|
|
|
4919
4917
|
class Viewer extends EventEmitter2 {
|
|
4920
|
-
constructor(client, params = {
|
|
4921
|
-
markupType: MarkupType.Konva
|
|
4922
|
-
}) {
|
|
4918
|
+
constructor(client, params = {}) {
|
|
4923
4919
|
var _a, _b;
|
|
4924
4920
|
super();
|
|
4921
|
+
this._visualizeJsUrl = "";
|
|
4922
|
+
this.frameId = 0;
|
|
4925
4923
|
this.configure(params);
|
|
4926
4924
|
this._options = new Options(this);
|
|
4927
4925
|
this.client = client;
|
|
4928
4926
|
this._activeDragger = null;
|
|
4927
|
+
this._zoomWheelDragger = null;
|
|
4928
|
+
this._gestureManager = null;
|
|
4929
4929
|
this._renderTime = 0;
|
|
4930
4930
|
this.markup = MarkupFactory.createMarkup((_a = params.markupType) !== null && _a !== void 0 ? _a : MarkupType.Konva);
|
|
4931
4931
|
this.draggerFactory = new Map;
|
|
@@ -5063,7 +5063,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5063
5063
|
});
|
|
5064
5064
|
return this;
|
|
5065
5065
|
}
|
|
5066
|
-
update(force) {
|
|
5066
|
+
update(force = false) {
|
|
5067
5067
|
var _a, _b;
|
|
5068
5068
|
if (this._enableAutoUpdate) {
|
|
5069
5069
|
if (force) {
|
|
@@ -5145,7 +5145,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5145
5145
|
device.delete();
|
|
5146
5146
|
return this;
|
|
5147
5147
|
}
|
|
5148
|
-
syncOptions(options = this.options
|
|
5148
|
+
syncOptions(options = this.options) {
|
|
5149
5149
|
if (!this.visualizeJs) return this;
|
|
5150
5150
|
const visLib = this.visLib();
|
|
5151
5151
|
const visViewer = visLib.getViewer();
|
|
@@ -5195,7 +5195,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5195
5195
|
this.update();
|
|
5196
5196
|
return this;
|
|
5197
5197
|
}
|
|
5198
|
-
syncHighlightingOptions(options = this.options
|
|
5198
|
+
syncHighlightingOptions(options = this.options) {
|
|
5199
5199
|
if (!this.visualizeJs) return this;
|
|
5200
5200
|
const params = options.enableCustomHighlight ? options : Options.defaults();
|
|
5201
5201
|
const visLib = this.visLib();
|
|
@@ -5327,6 +5327,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5327
5327
|
async loadReferences(model) {
|
|
5328
5328
|
var _a;
|
|
5329
5329
|
if (!this.visualizeJs) return this;
|
|
5330
|
+
if (!this.client) return this;
|
|
5330
5331
|
const abortController = new AbortController;
|
|
5331
5332
|
(_a = this._abortControllerForReferences) === null || _a === void 0 ? void 0 : _a.abort();
|
|
5332
5333
|
this._abortControllerForReferences = abortController;
|
|
@@ -5363,7 +5364,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5363
5364
|
file: file,
|
|
5364
5365
|
model: file
|
|
5365
5366
|
});
|
|
5366
|
-
let model;
|
|
5367
|
+
let model = undefined;
|
|
5367
5368
|
if (file) {
|
|
5368
5369
|
const models = await file.getModels() || [];
|
|
5369
5370
|
model = models.find((model => model.default)) || models[0];
|
|
@@ -5376,7 +5377,7 @@ class Viewer extends EventEmitter2 {
|
|
|
5376
5377
|
overrideOptions.enablePartialMode = true;
|
|
5377
5378
|
}
|
|
5378
5379
|
const loaderFactory = new LoaderFactory;
|
|
5379
|
-
const loader = loaderFactory.create(this, model, overrideOptions
|
|
5380
|
+
const loader = loaderFactory.create(this, model, overrideOptions);
|
|
5380
5381
|
await this.loadReferences(model);
|
|
5381
5382
|
await loader.load();
|
|
5382
5383
|
if (this.visualizeJs) {
|
|
@@ -5607,5 +5608,5 @@ class Viewer extends EventEmitter2 {
|
|
|
5607
5608
|
}
|
|
5608
5609
|
}
|
|
5609
5610
|
|
|
5610
|
-
export { OdBaseDragger, Options, Viewer, commands };
|
|
5611
|
+
export { CANVAS_EVENTS, OdBaseDragger, Options, Viewer, commands, defaultOptions };
|
|
5611
5612
|
//# sourceMappingURL=viewer-visualize.module.js.map
|