@abi-software/scaffoldvuer 0.1.50 → 0.1.52-beta.2
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/scaffoldvuer.common.js +1461 -1537
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +1461 -1537
- package/dist/scaffoldvuer.umd.js.map +1 -1
- package/dist/scaffoldvuer.umd.min.js +1 -1
- package/dist/scaffoldvuer.umd.min.js.map +1 -1
- package/package-lock.json +2884 -1647
- package/package.json +4 -5
- package/src/App.vue +130 -5
- package/src/components/ScaffoldVuer.vue +68 -29
- package/src/components/TraditionalControls.vue +17 -24
- package/src/scripts/BaseModule.js +80 -0
- package/src/scripts/RendererModule.js +263 -0
- package/src/scripts/WebGL.js +94 -0
- package/src/scripts/annotation.js +5 -0
- package/src/scripts/eventNotifier.js +65 -0
- package/src/scripts/graphicsHighlight.js +132 -0
- package/src/scripts/organsRenderer.js +570 -0
- package/vue.config.js +1 -1
|
@@ -101,6 +101,17 @@ module.exports = require("element-ui/lib/checkbox-group");
|
|
|
101
101
|
|
|
102
102
|
/***/ }),
|
|
103
103
|
|
|
104
|
+
/***/ "0676":
|
|
105
|
+
/***/ (function(module, exports) {
|
|
106
|
+
|
|
107
|
+
function _nonIterableSpread() {
|
|
108
|
+
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
module.exports = _nonIterableSpread;
|
|
112
|
+
|
|
113
|
+
/***/ }),
|
|
114
|
+
|
|
104
115
|
/***/ "0cf4":
|
|
105
116
|
/***/ (function(module, exports) {
|
|
106
117
|
|
|
@@ -122,104 +133,30 @@ module.exports = require("element-ui/lib/theme-chalk/select.css");
|
|
|
122
133
|
|
|
123
134
|
/***/ }),
|
|
124
135
|
|
|
125
|
-
/***/ "
|
|
126
|
-
/***/ (function(module, exports) {
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* @author alteredq / http://alteredqualia.com/
|
|
130
|
-
* @author mr.doob / http://mrdoob.com/
|
|
131
|
-
*/
|
|
132
|
-
|
|
133
|
-
exports.WEBGL = {
|
|
134
|
-
|
|
135
|
-
isWebGLAvailable: function () {
|
|
136
|
-
|
|
137
|
-
try {
|
|
138
|
-
|
|
139
|
-
var canvas = document.createElement( 'canvas' );
|
|
140
|
-
return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
|
|
141
|
-
|
|
142
|
-
} catch ( e ) {
|
|
143
|
-
|
|
144
|
-
return false;
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
isWebGL2Available: function () {
|
|
151
|
-
|
|
152
|
-
try {
|
|
153
|
-
|
|
154
|
-
var canvas = document.createElement( 'canvas' );
|
|
155
|
-
return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
|
|
156
|
-
|
|
157
|
-
} catch ( e ) {
|
|
158
|
-
|
|
159
|
-
return false;
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
getWebGLErrorMessage: function () {
|
|
166
|
-
|
|
167
|
-
return this.getErrorMessage( 1 );
|
|
168
|
-
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
getWebGL2ErrorMessage: function () {
|
|
172
|
-
|
|
173
|
-
return this.getErrorMessage( 2 );
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
getErrorMessage: function ( version ) {
|
|
178
|
-
|
|
179
|
-
var names = {
|
|
180
|
-
1: 'WebGL',
|
|
181
|
-
2: 'WebGL 2'
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
var contexts = {
|
|
185
|
-
1: window.WebGLRenderingContext,
|
|
186
|
-
2: window.WebGL2RenderingContext
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
var message = 'This module requires <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#008">$1</a> support but your $0 does not seem to support it.';
|
|
190
|
-
|
|
191
|
-
var element = document.createElement( 'div' );
|
|
192
|
-
element.id = 'webglmessage';
|
|
193
|
-
element.style.fontFamily = 'monospace';
|
|
194
|
-
element.style.fontSize = '20px';
|
|
195
|
-
element.style.fontWeight = 'normal';
|
|
196
|
-
element.style.textAlign = 'center';
|
|
197
|
-
element.style.background = '#fff';
|
|
198
|
-
element.style.color = '#000';
|
|
199
|
-
element.style.padding = '1.5em';
|
|
200
|
-
element.style.width = '400px';
|
|
201
|
-
element.style.margin = '5em auto 0';
|
|
202
|
-
|
|
203
|
-
if ( contexts[ version ] ) {
|
|
136
|
+
/***/ "11b0":
|
|
137
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
204
138
|
|
|
205
|
-
|
|
139
|
+
__webpack_require__("6049");
|
|
206
140
|
|
|
207
|
-
|
|
141
|
+
__webpack_require__("51e9");
|
|
208
142
|
|
|
209
|
-
|
|
143
|
+
__webpack_require__("02ac");
|
|
210
144
|
|
|
211
|
-
|
|
145
|
+
__webpack_require__("e42b");
|
|
212
146
|
|
|
213
|
-
|
|
147
|
+
__webpack_require__("8c84");
|
|
214
148
|
|
|
215
|
-
|
|
149
|
+
__webpack_require__("850c");
|
|
216
150
|
|
|
217
|
-
|
|
151
|
+
__webpack_require__("907b");
|
|
218
152
|
|
|
219
|
-
|
|
153
|
+
__webpack_require__("1ce0");
|
|
220
154
|
|
|
221
|
-
|
|
155
|
+
function _iterableToArray(iter) {
|
|
156
|
+
if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
|
|
157
|
+
}
|
|
222
158
|
|
|
159
|
+
module.exports = _iterableToArray;
|
|
223
160
|
|
|
224
161
|
/***/ }),
|
|
225
162
|
|
|
@@ -230,13 +167,6 @@ module.exports = require("core-js/modules/es.array.for-each");
|
|
|
230
167
|
|
|
231
168
|
/***/ }),
|
|
232
169
|
|
|
233
|
-
/***/ "1823":
|
|
234
|
-
/***/ (function(module, exports) {
|
|
235
|
-
|
|
236
|
-
module.exports = "precision highp float;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec3 position_1;\nattribute vec3 position_2;\nattribute vec2 uv_1;\nattribute vec2 uv_2;\n\nuniform float time;\nuniform float slide_pos;\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec3 transformed_xi1 = position * vec3(1.0 - time) + position_1 * vec3(time);\n\t\n\tvec3 xi0_time_1 = vec3(position_1.x, position_1.y, 0.0);\n\tvec3 transformed_xi0 = position_2 * vec3(1.0 - time) + xi0_time_1 * vec3(time);\n\n\tvec3 transformed = vec3(transformed_xi0) * vec3(1.0 - slide_pos) + vec3(transformed_xi1) * vec3(slide_pos);\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\n}\n"
|
|
237
|
-
|
|
238
|
-
/***/ }),
|
|
239
|
-
|
|
240
170
|
/***/ "18d2":
|
|
241
171
|
/***/ (function(module, exports) {
|
|
242
172
|
|
|
@@ -283,10 +213,16 @@ module.exports = require("core-js/modules/es.object.keys");
|
|
|
283
213
|
|
|
284
214
|
/***/ }),
|
|
285
215
|
|
|
286
|
-
/***/ "
|
|
216
|
+
/***/ "2236":
|
|
287
217
|
/***/ (function(module, exports, __webpack_require__) {
|
|
288
218
|
|
|
289
|
-
|
|
219
|
+
var arrayLikeToArray = __webpack_require__("5a43");
|
|
220
|
+
|
|
221
|
+
function _arrayWithoutHoles(arr) {
|
|
222
|
+
if (Array.isArray(arr)) return arrayLikeToArray(arr);
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
module.exports = _arrayWithoutHoles;
|
|
290
226
|
|
|
291
227
|
/***/ }),
|
|
292
228
|
|
|
@@ -346,144 +282,54 @@ module.exports = require("element-ui/lib/drawer");
|
|
|
346
282
|
|
|
347
283
|
/***/ }),
|
|
348
284
|
|
|
349
|
-
/***/ "
|
|
285
|
+
/***/ "3a59":
|
|
350
286
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
351
287
|
|
|
352
288
|
"use strict";
|
|
353
|
-
/* harmony import */ var
|
|
354
|
-
/* harmony import */ var
|
|
289
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("4646");
|
|
290
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_335c5764_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
355
291
|
/* unused harmony reexport * */
|
|
356
292
|
|
|
357
293
|
|
|
358
294
|
/***/ }),
|
|
359
295
|
|
|
360
|
-
/***/ "
|
|
361
|
-
/***/ (function(module, exports
|
|
362
|
-
|
|
363
|
-
var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
|
|
364
|
-
|
|
365
|
-
var BaseModule = function() {
|
|
366
|
-
this.typeName = "Base Module";
|
|
367
|
-
this.instanceName = "default";
|
|
368
|
-
this.onChangedCallbacks = [];
|
|
369
|
-
this.messageFunction = undefined;
|
|
370
|
-
/** Notifier handle for informing other modules of any changes **/
|
|
371
|
-
this.eventNotifiers = [];
|
|
372
|
-
this.broadcastChannels = {};
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
BaseModule.prototype.setName = function(name) {
|
|
376
|
-
if (name && this.instanceName !== name) {
|
|
377
|
-
this.instanceName = name;
|
|
378
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
379
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
380
|
-
callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
|
|
386
|
-
if (ChannelName in this.broadcastChannels)
|
|
387
|
-
return false;
|
|
388
|
-
var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
|
|
389
|
-
this.broadcastChannels[ChannelName] = newChannel;
|
|
390
|
-
return true;
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
|
|
394
|
-
if (ChannelName in this.broadcastChannels) {
|
|
395
|
-
this.broadcastChannels[ChannelName].close();
|
|
396
|
-
delete broadcastChannels[ChannelName];
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
BaseModule.prototype.settingsChanged = function() {
|
|
402
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
403
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
404
|
-
callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
BaseModule.prototype.exportSettings = function() {
|
|
409
|
-
var settings = {};
|
|
410
|
-
settings.dialog = this.typeName;
|
|
411
|
-
settings.name = this.instanceName;
|
|
412
|
-
return settings;
|
|
413
|
-
}
|
|
296
|
+
/***/ "429c":
|
|
297
|
+
/***/ (function(module, exports) {
|
|
414
298
|
|
|
415
|
-
|
|
416
|
-
if (settings.dialog == this.typeName) {
|
|
417
|
-
this.setName(settings.name);
|
|
418
|
-
return true;
|
|
419
|
-
}
|
|
420
|
-
return false;
|
|
421
|
-
}
|
|
299
|
+
module.exports = require("@abi-software/svg-sprite");
|
|
422
300
|
|
|
423
|
-
|
|
424
|
-
for (var i = 0; i < this.eventNotifiers.length; i++) {
|
|
425
|
-
this.eventNotifiers[i].publish(this, eventType, annotations);
|
|
426
|
-
}
|
|
427
|
-
if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
|
|
428
|
-
if (annotations && annotations[0]) {
|
|
429
|
-
var annotation = annotations[0];
|
|
430
|
-
var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
|
|
431
|
-
for (var key in this.broadcastChannels) {
|
|
432
|
-
this.broadcastChannels[key].postMessage(data);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
}
|
|
301
|
+
/***/ }),
|
|
437
302
|
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
}
|
|
303
|
+
/***/ "448a":
|
|
304
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
441
305
|
|
|
442
|
-
|
|
443
|
-
if (this.messageFunction)
|
|
444
|
-
this.messageFunction(message);
|
|
445
|
-
}
|
|
306
|
+
var arrayWithoutHoles = __webpack_require__("2236");
|
|
446
307
|
|
|
447
|
-
|
|
448
|
-
return this.instanceName;
|
|
449
|
-
}
|
|
308
|
+
var iterableToArray = __webpack_require__("11b0");
|
|
450
309
|
|
|
451
|
-
|
|
452
|
-
//Make a temorary copy as the array may be altered during the loop
|
|
453
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
454
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
455
|
-
callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
|
|
456
|
-
}
|
|
310
|
+
var unsupportedIterableToArray = __webpack_require__("6613");
|
|
457
311
|
|
|
458
|
-
|
|
459
|
-
}
|
|
312
|
+
var nonIterableSpread = __webpack_require__("0676");
|
|
460
313
|
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
this.onChangedCallbacks.push(callback);
|
|
314
|
+
function _toConsumableArray(arr) {
|
|
315
|
+
return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
|
|
464
316
|
}
|
|
465
317
|
|
|
466
|
-
|
|
467
|
-
var index = this.onChangedCallbacks.indexOf(callback);
|
|
468
|
-
if (index > -1) {
|
|
469
|
-
this.onChangedCallbacks.splice(index, 1);
|
|
470
|
-
}
|
|
471
|
-
}
|
|
318
|
+
module.exports = _toConsumableArray;
|
|
472
319
|
|
|
473
|
-
|
|
474
|
-
this.eventNotifiers.push(eventNotifier);
|
|
475
|
-
}
|
|
320
|
+
/***/ }),
|
|
476
321
|
|
|
477
|
-
|
|
478
|
-
exports
|
|
322
|
+
/***/ "44bd":
|
|
323
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
479
324
|
|
|
325
|
+
// extracted by mini-css-extract-plugin
|
|
480
326
|
|
|
481
327
|
/***/ }),
|
|
482
328
|
|
|
483
|
-
/***/ "
|
|
484
|
-
/***/ (function(module, exports) {
|
|
329
|
+
/***/ "4646":
|
|
330
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
485
331
|
|
|
486
|
-
|
|
332
|
+
// extracted by mini-css-extract-plugin
|
|
487
333
|
|
|
488
334
|
/***/ }),
|
|
489
335
|
|
|
@@ -508,13 +354,6 @@ module.exports = require("lodash/uniq");
|
|
|
508
354
|
|
|
509
355
|
/***/ }),
|
|
510
356
|
|
|
511
|
-
/***/ "4e8a":
|
|
512
|
-
/***/ (function(module, exports) {
|
|
513
|
-
|
|
514
|
-
module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
|
|
515
|
-
|
|
516
|
-
/***/ }),
|
|
517
|
-
|
|
518
357
|
/***/ "51c7":
|
|
519
358
|
/***/ (function(module, exports) {
|
|
520
359
|
|
|
@@ -536,146 +375,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
|
|
|
536
375
|
|
|
537
376
|
/***/ }),
|
|
538
377
|
|
|
539
|
-
/***/ "
|
|
540
|
-
/***/ (function(module, exports) {
|
|
541
|
-
|
|
542
|
-
var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
|
|
543
|
-
|
|
544
|
-
var SelectionEvent = function(eventTypeIn, identifiersIn) {
|
|
545
|
-
this.eventType = eventTypeIn;
|
|
546
|
-
this.identifiers = identifiersIn;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
var returnFullID = function(sourceId) {
|
|
550
|
-
//return full annotations with all different name
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
var Subscription = function(subscriberIn, callbackIn, eventType) {
|
|
554
|
-
this.targetedID = [];
|
|
555
|
-
var subscriber = subscriberIn;
|
|
556
|
-
if (eventType === undefined)
|
|
557
|
-
this.targetEventType = EVENT_TYPE.ALL;
|
|
558
|
-
else
|
|
559
|
-
this.targetEventType = eventType;
|
|
560
|
-
var callback = callbackIn;
|
|
561
|
-
|
|
562
|
-
var _this = this;
|
|
563
|
-
|
|
564
|
-
this.getEventType = function() {
|
|
565
|
-
return eventType;
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
this.notify = function(source, eventType, ids) {
|
|
569
|
-
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
|
|
570
|
-
_this.targetEventType === eventType)) {
|
|
571
|
-
//should support different type of id e.g lyph, name, fmas...
|
|
572
|
-
//need a function that finds all relavant ids
|
|
573
|
-
var event = new SelectionEvent(eventType, ids);
|
|
574
|
-
callback(event);
|
|
575
|
-
}
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
exports.EventNotifier = function() {
|
|
580
|
-
var events = [];
|
|
581
|
-
var subscriptions = [];
|
|
582
|
-
var _this = this;
|
|
583
|
-
|
|
584
|
-
this.publish = function(source, eventType, id) {
|
|
585
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
586
|
-
subscriptions[i].notify(source, eventType, id);
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
this.subscribe = function(subscriber, callbackFunction, eventType) {
|
|
591
|
-
if (typeof callbackFunction === "function") {
|
|
592
|
-
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
593
|
-
subscriptions.push(subscription);
|
|
594
|
-
return subscription;
|
|
595
|
-
}
|
|
596
|
-
return undefined;
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
this.unsubscribe = function(subscription) {
|
|
600
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
601
|
-
if (subscription === subscriptions[i]) {
|
|
602
|
-
subscriptions.splice(i, 1);
|
|
603
|
-
return;
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
exports.EVENT_TYPE = EVENT_TYPE;
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
/***/ }),
|
|
613
|
-
|
|
614
|
-
/***/ "55ee":
|
|
615
|
-
/***/ (function(module, exports) {
|
|
616
|
-
|
|
617
|
-
module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
|
|
618
|
-
|
|
619
|
-
/***/ }),
|
|
620
|
-
|
|
621
|
-
/***/ "5810":
|
|
622
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
623
|
-
|
|
624
|
-
// extracted by mini-css-extract-plugin
|
|
625
|
-
|
|
626
|
-
/***/ }),
|
|
627
|
-
|
|
628
|
-
/***/ "5cd8":
|
|
378
|
+
/***/ "53d7":
|
|
629
379
|
/***/ (function(module, exports, __webpack_require__) {
|
|
630
380
|
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
/***/ }),
|
|
634
|
-
|
|
635
|
-
/***/ "5fef":
|
|
636
|
-
/***/ (function(module, exports) {
|
|
637
|
-
|
|
638
|
-
module.exports = require("core-js/modules/es.regexp.to-string");
|
|
639
|
-
|
|
640
|
-
/***/ }),
|
|
641
|
-
|
|
642
|
-
/***/ "6049":
|
|
643
|
-
/***/ (function(module, exports) {
|
|
644
|
-
|
|
645
|
-
module.exports = require("core-js/modules/es.symbol");
|
|
646
|
-
|
|
647
|
-
/***/ }),
|
|
648
|
-
|
|
649
|
-
/***/ "642d":
|
|
650
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
651
|
-
|
|
652
|
-
"use strict";
|
|
653
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7d9b");
|
|
654
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
655
|
-
/* unused harmony reexport * */
|
|
656
|
-
|
|
381
|
+
__webpack_require__("ab7e");
|
|
657
382
|
|
|
658
|
-
|
|
383
|
+
__webpack_require__("7c81");
|
|
659
384
|
|
|
660
|
-
|
|
661
|
-
/***/ (function(module, exports) {
|
|
385
|
+
__webpack_require__("bcd8");
|
|
662
386
|
|
|
663
|
-
|
|
387
|
+
__webpack_require__("2175");
|
|
664
388
|
|
|
665
|
-
|
|
389
|
+
__webpack_require__("fd48");
|
|
666
390
|
|
|
667
|
-
|
|
668
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
391
|
+
var _typeof = __webpack_require__("7037");
|
|
669
392
|
|
|
670
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
671
|
-
// Current model's associate data, data fields, external link, nerve map
|
|
393
|
+
var THREE = __webpack_require__("9206").THREE; // Current model's associate data, data fields, external link, nerve map
|
|
672
394
|
// informations,
|
|
673
395
|
// these are proived in the organsFileMap array.
|
|
674
|
-
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
var OrgansSceneData = function OrgansSceneData() {
|
|
675
399
|
this.currentName = "";
|
|
676
400
|
this.currentSystem = "";
|
|
677
401
|
this.currentPart = "";
|
|
678
|
-
this.currentSpecies
|
|
402
|
+
this.currentSpecies = "";
|
|
679
403
|
this.metaURL = "";
|
|
680
404
|
this.viewURL = "";
|
|
681
405
|
this.geometries = [];
|
|
@@ -684,12 +408,7 @@ var OrgansSceneData = function() {
|
|
|
684
408
|
this.pointsets = [];
|
|
685
409
|
this.currentTime = 0.0;
|
|
686
410
|
this.timeVarying = false;
|
|
687
|
-
|
|
688
|
-
// informations,
|
|
689
|
-
this.nerveMap = undefined;
|
|
690
|
-
this.nerveMapIsActive = false;
|
|
691
|
-
}
|
|
692
|
-
|
|
411
|
+
};
|
|
693
412
|
/**
|
|
694
413
|
* Viewer of 3D-organs models. Users can toggle on/off different views. Data is
|
|
695
414
|
* displayed instead if models are not available.
|
|
@@ -704,619 +423,964 @@ var OrgansSceneData = function() {
|
|
|
704
423
|
* @author Alan Wu
|
|
705
424
|
* @returns {PJP.OrgansViewer}
|
|
706
425
|
*/
|
|
707
|
-
var OrgansViewer = function(ModelsLoaderIn) {
|
|
708
|
-
(__webpack_require__("7a89").RendererModule).call(this);
|
|
709
|
-
var pickerScene = undefined;
|
|
710
|
-
var nerveMapScene = undefined;
|
|
711
|
-
this.sceneData = new OrgansSceneData();
|
|
712
|
-
var timeChangedCallbacks = new Array();
|
|
713
|
-
var sceneChangedCallbacks = new Array();
|
|
714
|
-
var organPartAddedCallbacks = new Array();
|
|
715
|
-
var finishDownloadCallback = undefined;
|
|
716
|
-
var layoutUpdateRequiredCallbacks = new Array();
|
|
717
|
-
var modelsLoader = ModelsLoaderIn;
|
|
718
|
-
var _this = this;
|
|
719
|
-
_this.typeName = "Organ Viewer";
|
|
720
|
-
|
|
721
|
-
this.getSceneData = function() {
|
|
722
|
-
return _this.sceneData;
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
/**
|
|
726
|
-
* Used to update internal timer in scene when time slider has changed.
|
|
727
|
-
*/
|
|
728
|
-
this.updateTime = function(value) {
|
|
729
|
-
let duration = 6000;
|
|
730
|
-
if (_this.scene)
|
|
731
|
-
duration = _this.scene.getDuration();
|
|
732
|
-
var actualTime = value / 100.0 * duration;
|
|
733
|
-
if (!_this.sceneData.nerveMapIsActive) {
|
|
734
|
-
if (pickerScene)
|
|
735
|
-
pickerScene.setMorphsTime(actualTime);
|
|
736
|
-
if (_this.scene)
|
|
737
|
-
_this.scene.setMorphsTime(actualTime);
|
|
738
|
-
} else if (nerveMapScene) {
|
|
739
|
-
nerveMapScene.setMorphsTime(actualTime);
|
|
740
|
-
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
|
|
741
|
-
_this.sceneData.nerveMap.additionalReader.setTime(value / 100.0);
|
|
742
|
-
}
|
|
743
|
-
_this.sceneData.currentTime = value;
|
|
744
|
-
}
|
|
745
|
-
|
|
746
|
-
/**
|
|
747
|
-
* Update the time slider and other renderers/scenes when time has changed.
|
|
748
|
-
*/
|
|
749
|
-
var preRenderTimeUpdate = function() {
|
|
750
|
-
let duration = 3000;
|
|
751
|
-
if (_this.scene)
|
|
752
|
-
duration = _this.scene.getDuration();
|
|
753
|
-
var currentTime = _this.zincRenderer.getCurrentTime();
|
|
754
|
-
for (var i = 0; i < timeChangedCallbacks.length;i++) {
|
|
755
|
-
timeChangedCallbacks[i](currentTime);
|
|
756
|
-
}
|
|
757
|
-
if (!_this.sceneData.nerveMapIsActive && pickerScene)
|
|
758
|
-
pickerScene.setMorphsTime(currentTime);
|
|
759
|
-
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
|
|
760
|
-
_this.sceneData.nerveMap.additionalReader.setTime(currentTime /
|
|
761
|
-
duration);
|
|
762
|
-
_this.sceneData.currentTime = currentTime / duration * 100.0;
|
|
763
|
-
}
|
|
764
|
-
|
|
765
|
-
var postRenderSelectedCoordinatesUpdate = function() {
|
|
766
|
-
if (_this.selectedCenter) {
|
|
767
|
-
const vector = new THREE.Vector3();
|
|
768
|
-
vector.copy(_this.selectedCenter);
|
|
769
|
-
var coord = _this.scene.vectorToScreenXY(vector);
|
|
770
|
-
_this.selectedScreenCoordinates.x = coord.x;
|
|
771
|
-
_this.selectedScreenCoordinates.y = coord.y;
|
|
772
|
-
}
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
var preRenderUpdateCallback = function() {
|
|
776
|
-
return function() {
|
|
777
|
-
preRenderTimeUpdate();
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
var postRenderUpdateCallback = function() {
|
|
782
|
-
return function() {
|
|
783
|
-
postRenderSelectedCoordinatesUpdate();
|
|
784
|
-
}
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
/**
|
|
788
|
-
* Add a callback which will be called when time has changed
|
|
789
|
-
*/
|
|
790
|
-
this.addTimeChangedCallback = function(callback) {
|
|
791
|
-
if (typeof(callback === "function"))
|
|
792
|
-
timeChangedCallbacks.push(callback);
|
|
793
|
-
}
|
|
794
|
-
|
|
795
|
-
this.setTexturePos = function(value) {
|
|
796
|
-
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
|
|
797
|
-
_this.sceneData.nerveMap.additionalReader.setSliderPos(value);
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
this.addLayoutUpdateRequiredCallback = function(callback) {
|
|
801
|
-
if (typeof(callback === "function")) {
|
|
802
|
-
layoutUpdateRequiredCallbacks.push(callback);
|
|
803
|
-
}
|
|
804
|
-
}
|
|
805
|
-
|
|
806
|
-
this.addSceneChangedCallback = function(callback) {
|
|
807
|
-
if (typeof(callback === "function")) {
|
|
808
|
-
sceneChangedCallbacks.push(callback);
|
|
809
|
-
}
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
this.addOrganPartAddedCallback = function(callback) {
|
|
813
|
-
if (typeof(callback === "function"))
|
|
814
|
-
organPartAddedCallbacks.push(callback);
|
|
815
|
-
}
|
|
816
426
|
|
|
817
|
-
this.setFinishDownloadCallback = function(callback) {
|
|
818
|
-
if (typeof(callback === "function"))
|
|
819
|
-
finishDownloadCallback = callback;
|
|
820
|
-
}
|
|
821
427
|
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
}
|
|
428
|
+
var OrgansViewer = function OrgansViewer(ModelsLoaderIn) {
|
|
429
|
+
var _this2 = this;
|
|
825
430
|
|
|
826
|
-
|
|
827
|
-
var vector = new THREE.Vector3();
|
|
828
|
-
vector.setFromMatrixPosition( obj.matrixWorld );
|
|
829
|
-
var widthHalf = (width/2);
|
|
830
|
-
var heightHalf = (height/2);
|
|
831
|
-
vector.project(camera);
|
|
832
|
-
vector.x = ( vector.x * widthHalf ) + widthHalf;
|
|
833
|
-
vector.y = - ( vector.y * heightHalf ) + heightHalf;
|
|
834
|
-
return vector;
|
|
835
|
-
}
|
|
431
|
+
__webpack_require__("8278").RendererModule.call(this);
|
|
836
432
|
|
|
837
|
-
var
|
|
433
|
+
var _this = this;
|
|
434
|
+
|
|
435
|
+
var pickerScene = undefined;
|
|
436
|
+
this.sceneData = new OrgansSceneData();
|
|
437
|
+
var timeChangedCallbacks = new Array();
|
|
438
|
+
var sceneChangedCallbacks = new Array();
|
|
439
|
+
var organPartAddedCallbacks = new Array();
|
|
440
|
+
var finishDownloadCallback = undefined;
|
|
441
|
+
var modelsLoader = ModelsLoaderIn;
|
|
442
|
+
this.NDCCameraControl = undefined;
|
|
443
|
+
_this.typeName = "Organ Viewer";
|
|
444
|
+
|
|
445
|
+
this.getSceneData = function () {
|
|
446
|
+
return _this.sceneData;
|
|
447
|
+
};
|
|
448
|
+
/**
|
|
449
|
+
* Used to update internal timer in scene when time slider has changed.
|
|
450
|
+
*/
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
this.updateTime = function (value) {
|
|
454
|
+
var duration = 6000;
|
|
455
|
+
if (_this.scene) duration = _this.scene.getDuration();
|
|
456
|
+
var actualTime = value / 100.0 * duration;
|
|
457
|
+
|
|
458
|
+
if (!_this.sceneData.nerveMapIsActive) {
|
|
459
|
+
if (pickerScene) pickerScene.setMorphsTime(actualTime);
|
|
460
|
+
if (_this.scene) _this.scene.setMorphsTime(actualTime);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
_this.sceneData.currentTime = value;
|
|
464
|
+
};
|
|
465
|
+
/**
|
|
466
|
+
* Update the time slider and other renderers/scenes when time has changed.
|
|
467
|
+
*/
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
var preRenderTimeUpdate = function preRenderTimeUpdate() {
|
|
471
|
+
var duration = 3000;
|
|
472
|
+
if (_this.scene) duration = _this.scene.getDuration();
|
|
473
|
+
|
|
474
|
+
var currentTime = _this.zincRenderer.getCurrentTime();
|
|
475
|
+
|
|
476
|
+
for (var i = 0; i < timeChangedCallbacks.length; i++) {
|
|
477
|
+
timeChangedCallbacks[i](currentTime);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
if (!_this.sceneData.nerveMapIsActive && pickerScene) pickerScene.setMorphsTime(currentTime);
|
|
481
|
+
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setTime(currentTime / duration);
|
|
482
|
+
_this.sceneData.currentTime = currentTime / duration * 100.0;
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
this.toggleSyncControl = function (flag) {
|
|
486
|
+
var cameraControl = _this2.scene.getZincCameraControls();
|
|
487
|
+
|
|
488
|
+
if (flag) {
|
|
489
|
+
cameraControl.resetView();
|
|
490
|
+
_this2.NDCCameraControl = cameraControl.enableSyncControl();
|
|
491
|
+
} else {
|
|
492
|
+
cameraControl.disableSyncControl();
|
|
493
|
+
_this2.NDCCameraControl = undefined;
|
|
494
|
+
}
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
this.isSyncControl = function () {
|
|
498
|
+
return _this2.NDCCameraControl !== undefined;
|
|
499
|
+
};
|
|
500
|
+
|
|
501
|
+
this.setSyncControlZoomToBox = function (box) {
|
|
502
|
+
if (_this2.NDCCameraControl) {
|
|
503
|
+
_this2.NDCCameraControl.zoomToBox(box, 2);
|
|
504
|
+
}
|
|
505
|
+
};
|
|
506
|
+
|
|
507
|
+
this.setSyncControlCallback = function (callback) {
|
|
508
|
+
if (_this2.NDCCameraControl) {
|
|
509
|
+
_this2.NDCCameraControl.setEventCallback(callback);
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
|
|
513
|
+
this.setSyncControlCenterZoom = function (center, zoom) {
|
|
514
|
+
if (_this2.NDCCameraControl) {
|
|
515
|
+
_this2.NDCCameraControl.setCenterZoom(center, zoom);
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
|
|
519
|
+
var postRenderSelectedCoordinatesUpdate = function postRenderSelectedCoordinatesUpdate() {
|
|
520
|
+
if (_this.selectedCenter) {
|
|
521
|
+
var vector = new THREE.Vector3();
|
|
522
|
+
vector.copy(_this.selectedCenter);
|
|
523
|
+
|
|
524
|
+
var coord = _this.scene.vectorToScreenXY(vector);
|
|
525
|
+
|
|
526
|
+
_this.selectedScreenCoordinates.x = coord.x;
|
|
527
|
+
_this.selectedScreenCoordinates.y = coord.y;
|
|
528
|
+
}
|
|
529
|
+
};
|
|
530
|
+
|
|
531
|
+
var preRenderUpdateCallback = function preRenderUpdateCallback() {
|
|
532
|
+
return function () {
|
|
533
|
+
preRenderTimeUpdate();
|
|
534
|
+
};
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
var postRenderUpdateCallback = function postRenderUpdateCallback() {
|
|
538
|
+
return function () {
|
|
539
|
+
postRenderSelectedCoordinatesUpdate();
|
|
540
|
+
};
|
|
541
|
+
};
|
|
542
|
+
/**
|
|
543
|
+
* Add a callback which will be called when time has changed
|
|
544
|
+
*/
|
|
545
|
+
|
|
546
|
+
|
|
547
|
+
this.addTimeChangedCallback = function (callback) {
|
|
548
|
+
if (_typeof(callback === "function")) timeChangedCallbacks.push(callback);
|
|
549
|
+
};
|
|
550
|
+
|
|
551
|
+
this.setTexturePos = function (value) {
|
|
552
|
+
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
|
|
553
|
+
};
|
|
554
|
+
|
|
555
|
+
this.addSceneChangedCallback = function (callback) {
|
|
556
|
+
if (_typeof(callback === "function")) {
|
|
557
|
+
sceneChangedCallbacks.push(callback);
|
|
558
|
+
}
|
|
559
|
+
};
|
|
560
|
+
|
|
561
|
+
this.addOrganPartAddedCallback = function (callback) {
|
|
562
|
+
if (_typeof(callback === "function")) organPartAddedCallbacks.push(callback);
|
|
563
|
+
};
|
|
564
|
+
|
|
565
|
+
this.setFinishDownloadCallback = function (callback) {
|
|
566
|
+
if (_typeof(callback === "function")) finishDownloadCallback = callback;
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
this.unsetFinishDownloadCallback = function () {
|
|
570
|
+
finishDownloadCallback = undefined;
|
|
571
|
+
};
|
|
572
|
+
|
|
573
|
+
this.getNamedObjectsToScreenCoordinates = function (name, camera) {
|
|
574
|
+
var vector = new THREE.Vector3();
|
|
575
|
+
vector.setFromMatrixPosition(obj.matrixWorld);
|
|
576
|
+
var widthHalf = width / 2;
|
|
577
|
+
var heightHalf = height / 2;
|
|
578
|
+
vector.project(camera);
|
|
579
|
+
vector.x = vector.x * widthHalf + widthHalf;
|
|
580
|
+
vector.y = -(vector.y * heightHalf) + heightHalf;
|
|
581
|
+
return vector;
|
|
582
|
+
};
|
|
583
|
+
|
|
584
|
+
var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
|
|
838
585
|
var id = undefined;
|
|
839
586
|
var intersectedObject = undefined;
|
|
587
|
+
|
|
840
588
|
if (intersected !== undefined) {
|
|
841
|
-
if (intersected.object.userData &&
|
|
842
|
-
intersected.object.userData.isMarker) {
|
|
589
|
+
if (intersected.object.userData && intersected.object.userData.isMarker) {
|
|
843
590
|
intersectedObject = intersected.object.userData.parent.morph;
|
|
844
591
|
} else {
|
|
845
592
|
intersectedObject = intersected.object;
|
|
846
593
|
}
|
|
594
|
+
|
|
847
595
|
if (intersectedObject) {
|
|
848
596
|
if (intersectedObject.name) {
|
|
849
597
|
id = intersectedObject.name;
|
|
850
598
|
} else {
|
|
851
|
-
var annotations = _this.getAnnotationsFromObjects(
|
|
852
|
-
|
|
599
|
+
var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
|
|
600
|
+
|
|
853
601
|
if (annotations && annotations[0]) {
|
|
854
602
|
id = annotations[0].data.group;
|
|
855
603
|
}
|
|
856
604
|
}
|
|
857
605
|
}
|
|
858
606
|
}
|
|
859
|
-
|
|
607
|
+
|
|
608
|
+
return {
|
|
609
|
+
"id": id,
|
|
610
|
+
"object": intersectedObject
|
|
611
|
+
};
|
|
612
|
+
};
|
|
613
|
+
/**
|
|
614
|
+
* Callback function when a pickable object has been picked. It will then
|
|
615
|
+
* call functions in tissueViewer and cellPanel to show corresponding
|
|
616
|
+
* informations.
|
|
617
|
+
*
|
|
618
|
+
* @callback
|
|
619
|
+
*/
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
var _pickingCallback = function _pickingCallback() {
|
|
623
|
+
return function (intersects, window_x, window_y) {
|
|
624
|
+
var intersected = _this.getIntersectedObject(intersects);
|
|
625
|
+
|
|
626
|
+
var idObject = getIdObjectFromIntersect(intersected);
|
|
627
|
+
|
|
628
|
+
if (idObject.id) {
|
|
629
|
+
if (idObject.object.userData.isGlyph) {
|
|
630
|
+
if (idObject.object.name) _this.setSelectedByObjects([idObject.object], true);else _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
|
|
631
|
+
} else {
|
|
632
|
+
_this.setSelectedByObjects([idObject.object], true);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
return;
|
|
636
|
+
} else {
|
|
637
|
+
_this.setSelectedByObjects([], true);
|
|
638
|
+
}
|
|
639
|
+
};
|
|
640
|
+
};
|
|
641
|
+
/**
|
|
642
|
+
* Callback function when a pickable object has been hovered over.
|
|
643
|
+
*
|
|
644
|
+
* @callback
|
|
645
|
+
*/
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
var _hoverCallback = function _hoverCallback() {
|
|
649
|
+
return function (intersects, window_x, window_y) {
|
|
650
|
+
var intersected = _this.getIntersectedObject(intersects);
|
|
651
|
+
|
|
652
|
+
var idObject = getIdObjectFromIntersect(intersected);
|
|
653
|
+
|
|
654
|
+
if (idObject.id) {
|
|
655
|
+
_this.displayArea.style.cursor = "pointer";
|
|
656
|
+
|
|
657
|
+
_this.setHighlightedByObjects([idObject.object], true);
|
|
658
|
+
|
|
659
|
+
return;
|
|
660
|
+
} else {
|
|
661
|
+
_this.displayArea.style.cursor = "auto";
|
|
662
|
+
|
|
663
|
+
_this.setHighlightedByObjects([], true);
|
|
664
|
+
}
|
|
665
|
+
};
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
var changeOrganPartsVisibilityForScene = function changeOrganPartsVisibilityForScene(scene, name, value, type) {
|
|
669
|
+
if (type == "all" || type == "geometries") {
|
|
670
|
+
var geometries = scene.findGeometriesWithGroupName(name);
|
|
671
|
+
|
|
672
|
+
for (var i = 0; i < geometries.length; i++) {
|
|
673
|
+
geometries[i].setVisibility(value);
|
|
674
|
+
}
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
if (type == "all" || type == "glyphsets") {
|
|
678
|
+
var glyphsets = scene.findGlyphsetsWithGroupName(name);
|
|
679
|
+
|
|
680
|
+
for (var _i = 0; _i < glyphsets.length; _i++) {
|
|
681
|
+
glyphsets[_i].setVisibility(value);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
if (type == "all" || type == "pointsets") {
|
|
686
|
+
var pointsets = scene.findPointsetsWithGroupName(name);
|
|
687
|
+
|
|
688
|
+
for (var _i2 = 0; _i2 < pointsets.length; _i2++) {
|
|
689
|
+
pointsets[_i2].setVisibility(value);
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
if (type == "all" || type == "lines") {
|
|
694
|
+
var lines = scene.findLinesWithGroupName(name);
|
|
695
|
+
|
|
696
|
+
for (var _i3 = 0; _i3 < lines.length; _i3++) {
|
|
697
|
+
lines[_i3].setVisibility(value);
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
};
|
|
701
|
+
/**
|
|
702
|
+
* Change visibility for parts of the current scene.
|
|
703
|
+
*/
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
this.changeGeometriesVisibility = function (name, value) {
|
|
707
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
|
|
708
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
|
|
709
|
+
};
|
|
710
|
+
/**
|
|
711
|
+
* Change visibility for parts of the current scene.
|
|
712
|
+
*/
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
this.changeGlyphsetsVisibility = function (name, value) {
|
|
716
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
|
|
717
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
|
|
718
|
+
};
|
|
719
|
+
/**
|
|
720
|
+
* Change visibility for parts of the current scene.
|
|
721
|
+
*/
|
|
722
|
+
|
|
723
|
+
|
|
724
|
+
this.changeLinesVisibility = function (name, value) {
|
|
725
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
|
|
726
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
|
|
727
|
+
};
|
|
728
|
+
/**
|
|
729
|
+
* Change visibility for parts of the current scene.
|
|
730
|
+
*/
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
this.changePointsetsVisibility = function (name, value) {
|
|
734
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
|
|
735
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
|
|
736
|
+
};
|
|
737
|
+
/**
|
|
738
|
+
* Change visibility for parts of the current scene.
|
|
739
|
+
*/
|
|
740
|
+
|
|
741
|
+
|
|
742
|
+
this.changeOrganPartsVisibility = function (name, value, typeIn) {
|
|
743
|
+
var type = "all";
|
|
744
|
+
if (typeIn !== undefined) type = typeIn;
|
|
745
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
|
|
746
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
|
|
747
|
+
};
|
|
748
|
+
|
|
749
|
+
this.changeOrganPartsVisibilityCallback = function (name) {
|
|
750
|
+
return function (value) {
|
|
751
|
+
_this.changeOrganPartsVisibility(name, value);
|
|
752
|
+
};
|
|
753
|
+
};
|
|
754
|
+
|
|
755
|
+
this.changeBackgroundColour = function (backgroundColourString) {
|
|
756
|
+
var colour = new THREE.Color(backgroundColourString);
|
|
757
|
+
|
|
758
|
+
if (_this.zincRenderer) {
|
|
759
|
+
var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
|
|
760
|
+
|
|
761
|
+
internalRenderer.setClearColor(colour, 1);
|
|
762
|
+
}
|
|
763
|
+
};
|
|
764
|
+
|
|
765
|
+
var addOrganPartToSceneData = function addOrganPartToSceneData(zincObject) {
|
|
766
|
+
if (zincObject.groupName) {
|
|
767
|
+
if (zincObject.isGeometry) {
|
|
768
|
+
if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
|
|
769
|
+
_this.sceneData.geometries.push(zincObject.groupName);
|
|
770
|
+
}
|
|
771
|
+
} else if (zincObject.isGlyphset) {
|
|
772
|
+
if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
|
|
773
|
+
_this.sceneData.glyphsets.push(zincObject.groupName);
|
|
774
|
+
}
|
|
775
|
+
} else if (zincObject.isLines) {
|
|
776
|
+
if (!_this.sceneData.lines.includes(zincObject.groupName)) {
|
|
777
|
+
_this.sceneData.lines.push(zincObject.groupName);
|
|
778
|
+
}
|
|
779
|
+
} else if (zincObject.isPointset) {
|
|
780
|
+
if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
|
|
781
|
+
_this.sceneData.pointsets.push(zincObject.groupName);
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
};
|
|
786
|
+
|
|
787
|
+
var addOrganPart = function addOrganPart(systemName, partName, useDefautColour, zincObject) {
|
|
788
|
+
for (var i = 0; i < organPartAddedCallbacks.length; i++) {
|
|
789
|
+
organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
if (useDefautColour) modelsLoader.setGeometryColour(zincObject, systemName, partName);
|
|
793
|
+
addOrganPartToSceneData(zincObject);
|
|
794
|
+
var annotation = new (__webpack_require__("984d").annotation)();
|
|
795
|
+
annotation.data = {
|
|
796
|
+
species: _this.sceneData.currentSpecies,
|
|
797
|
+
system: systemName,
|
|
798
|
+
part: partName,
|
|
799
|
+
group: zincObject.groupName
|
|
800
|
+
};
|
|
801
|
+
zincObject.userData = [annotation];
|
|
802
|
+
};
|
|
803
|
+
/**
|
|
804
|
+
* New organs geometry has been added to the scene, add UIs and make
|
|
805
|
+
* sure the viewport is correct.
|
|
806
|
+
*/
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
var _addOrganPartCallback = function _addOrganPartCallback(systemName, partName, useDefautColour) {
|
|
810
|
+
return function (zincObject) {
|
|
811
|
+
addOrganPart(systemName, partName, useDefautColour, zincObject);
|
|
812
|
+
};
|
|
813
|
+
};
|
|
814
|
+
|
|
815
|
+
var downloadCompletedCallback = function downloadCompletedCallback() {
|
|
816
|
+
return function () {
|
|
817
|
+
_this.settingsChanged();
|
|
818
|
+
|
|
819
|
+
_this.sceneData.timeVarying = _this.scene.isTimeVarying();
|
|
820
|
+
if (finishDownloadCallback) finishDownloadCallback();
|
|
821
|
+
};
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
var singleItemDownloadCompletedCallback = function singleItemDownloadCompletedCallback(systemName, partName, useDefautColour) {
|
|
825
|
+
return function (geometry) {
|
|
826
|
+
addOrganPart(systemName, partName, useDefautColour, geometry);
|
|
827
|
+
|
|
828
|
+
_this.settingsChanged();
|
|
829
|
+
};
|
|
830
|
+
};
|
|
831
|
+
/**
|
|
832
|
+
* Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
|
|
833
|
+
* other activities of the organs.
|
|
834
|
+
*/
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
this.updateFieldvisibility = function (dataFields, value) {
|
|
838
|
+
for (var i = 0; i < dataFields.length; i++) {
|
|
839
|
+
if (value != i) {
|
|
840
|
+
var geometryName = dataFields[i].PartName;
|
|
841
|
+
|
|
842
|
+
_this.changeOrganPartsVisibility(geometryName, false);
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
if (value > -1) {
|
|
847
|
+
var partName = dataFields[value].PartName;
|
|
848
|
+
|
|
849
|
+
if (_this.scene.findGeometriesWithGroupName(partName).length > 0 || _this.scene.findGlyphsetsWithGroupName(partName).length > 0) {
|
|
850
|
+
_this.changeOrganPartsVisibility(partName, true);
|
|
851
|
+
} else {
|
|
852
|
+
var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
|
|
853
|
+
|
|
854
|
+
if (partDetails != undefined) {
|
|
855
|
+
_this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
};
|
|
860
|
+
/**
|
|
861
|
+
* Return an array containing name(s) of species that also contains the
|
|
862
|
+
* currently displayed organs.
|
|
863
|
+
*
|
|
864
|
+
* @returns {Array} containing species name
|
|
865
|
+
*/
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
this.getAvailableSpecies = function (currentSpecies, currentSystem, currentPart) {
|
|
869
|
+
var availableSpecies = new Array();
|
|
870
|
+
availableSpecies.push("none");
|
|
871
|
+
var keysArray = Object.keys(organsFileMap);
|
|
872
|
+
|
|
873
|
+
for (index in keysArray) {
|
|
874
|
+
var species = keysArray[index];
|
|
875
|
+
|
|
876
|
+
if (species != currentSpecies) {
|
|
877
|
+
if (organsFileMap[species].hasOwnProperty(currentSystem) && organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
|
|
878
|
+
availableSpecies.push(species);
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
|
|
883
|
+
return availableSpecies;
|
|
884
|
+
};
|
|
885
|
+
|
|
886
|
+
var setSceneData = function setSceneData(speciesName, systemName, partName, organsDetails) {
|
|
887
|
+
_this.sceneData.nerveMapIsActive = false;
|
|
888
|
+
_this.sceneData.nerveMap = undefined;
|
|
889
|
+
_this.sceneData.metaURL = "";
|
|
890
|
+
_this.sceneData.viewURL = "";
|
|
891
|
+
_this.sceneData.currentSpecies = speciesName;
|
|
892
|
+
_this.sceneData.currentSystem = systemName;
|
|
893
|
+
_this.sceneData.currentPart = partName;
|
|
894
|
+
_this.sceneData.currentTime = 0.0;
|
|
895
|
+
|
|
896
|
+
_this.sceneData.geometries.splice(0);
|
|
897
|
+
|
|
898
|
+
_this.sceneData.lines.splice(0);
|
|
899
|
+
|
|
900
|
+
_this.sceneData.glyphsets.splice(0);
|
|
901
|
+
|
|
902
|
+
_this.sceneData.pointsets.splice(0);
|
|
903
|
+
|
|
904
|
+
_this.sceneData.timeVarying = false; // This is used as title
|
|
905
|
+
|
|
906
|
+
var name = "";
|
|
907
|
+
if (speciesName) name = speciesName + "/";
|
|
908
|
+
if (systemName) name = systemName + "/";
|
|
909
|
+
if (partName) name = partName;
|
|
910
|
+
_this.sceneData.currentName = name;
|
|
911
|
+
};
|
|
912
|
+
|
|
913
|
+
this.loadOrgansFromURL = function (url, speciesName, systemName, partName, viewURL) {
|
|
914
|
+
if (_this.zincRenderer) {
|
|
915
|
+
if (partName && _this.sceneData.metaURL !== url) {
|
|
916
|
+
setSceneData(speciesName, systemName, partName, undefined);
|
|
917
|
+
var name = _this.sceneData.currentName;
|
|
918
|
+
|
|
919
|
+
var organScene = _this.zincRenderer.getSceneByName(name);
|
|
920
|
+
|
|
921
|
+
if (organScene) {
|
|
922
|
+
organScene.clearAll();
|
|
923
|
+
} else {
|
|
924
|
+
organScene = _this.zincRenderer.createScene(name);
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
for (var i = 0; i < sceneChangedCallbacks.length; i++) {
|
|
928
|
+
sceneChangedCallbacks[i](_this.sceneData);
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
if (viewURL && viewURL != "") {
|
|
932
|
+
_this.sceneData.viewURL = viewURL;
|
|
933
|
+
organScene.loadViewURL(_this.sceneData.viewURL);
|
|
934
|
+
} else {
|
|
935
|
+
_this.sceneData.viewURL = undefined;
|
|
936
|
+
}
|
|
937
|
+
|
|
938
|
+
_this.sceneData.metaURL = url;
|
|
939
|
+
organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false), downloadCompletedCallback());
|
|
940
|
+
_this.scene = organScene;
|
|
941
|
+
|
|
942
|
+
_this.zincRenderer.setCurrentScene(organScene);
|
|
943
|
+
|
|
944
|
+
_this.graphicsHighlight.reset();
|
|
945
|
+
|
|
946
|
+
var zincCameraControl = organScene.getZincCameraControls();
|
|
947
|
+
zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
|
|
948
|
+
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
949
|
+
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
};
|
|
953
|
+
|
|
954
|
+
this.alignCameraWithSelectedObject = function (transitionTime) {
|
|
955
|
+
var objects = _this.graphicsHighlight.getSelected();
|
|
956
|
+
|
|
957
|
+
if (objects && objects[0] && objects[0].userData) {
|
|
958
|
+
_this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
|
|
959
|
+
}
|
|
960
|
+
};
|
|
961
|
+
|
|
962
|
+
this.exportSettings = function () {
|
|
963
|
+
var settings = {};
|
|
964
|
+
settings.name = _this.instanceName;
|
|
965
|
+
if (_this.sceneData.currentSystem) settings.system = _this.sceneData.currentSystem;
|
|
966
|
+
if (_this.sceneData.currentSpecies) settings.species = _this.sceneData.currentSpecies;
|
|
967
|
+
if (_this.sceneData.currentPart) settings.part = _this.sceneData.currentPart;
|
|
968
|
+
settings.metaURL = _this.sceneData.metaURL;
|
|
969
|
+
if (_this.sceneData.viewURL) settings.viewURL = _this.sceneData.viewURL;
|
|
970
|
+
settings.dialog = "Organ Viewer";
|
|
971
|
+
return settings;
|
|
972
|
+
};
|
|
973
|
+
|
|
974
|
+
this.importSettings = function (settings) {
|
|
975
|
+
if (settings && settings.dialog == this.typeName) {
|
|
976
|
+
_this.setName(settings.name);
|
|
977
|
+
|
|
978
|
+
if (settings.metaURL !== undefined && settings.metaURL != "") {
|
|
979
|
+
_this.loadOrgansFromURL(settings.metaURL, settings.species, settings.system, settings.part, settings.viewURL);
|
|
980
|
+
} else {
|
|
981
|
+
_this.loadOrgans(settings.species, settings.system, settings.part);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
return true;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
return false;
|
|
988
|
+
};
|
|
989
|
+
/**
|
|
990
|
+
* initialise loading of the html layout for the organs panel, this is
|
|
991
|
+
* called when the {@link PJP.OrgansViewer} is created.
|
|
992
|
+
*
|
|
993
|
+
* @async
|
|
994
|
+
*/
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
var initialise = function initialise() {
|
|
998
|
+
_this.initialiseRenderer(undefined);
|
|
999
|
+
|
|
1000
|
+
if (_this.zincRenderer) {
|
|
1001
|
+
_this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
|
|
1002
|
+
|
|
1003
|
+
_this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
|
|
1004
|
+
}
|
|
1005
|
+
};
|
|
1006
|
+
|
|
1007
|
+
initialise();
|
|
1008
|
+
};
|
|
1009
|
+
|
|
1010
|
+
OrgansViewer.prototype = Object.create(__webpack_require__("8278").RendererModule.prototype);
|
|
1011
|
+
exports.OrgansViewer = OrgansViewer;
|
|
1012
|
+
|
|
1013
|
+
/***/ }),
|
|
1014
|
+
|
|
1015
|
+
/***/ "55ee":
|
|
1016
|
+
/***/ (function(module, exports) {
|
|
1017
|
+
|
|
1018
|
+
module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
|
|
1019
|
+
|
|
1020
|
+
/***/ }),
|
|
1021
|
+
|
|
1022
|
+
/***/ "5810":
|
|
1023
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1024
|
+
|
|
1025
|
+
// extracted by mini-css-extract-plugin
|
|
1026
|
+
|
|
1027
|
+
/***/ }),
|
|
1028
|
+
|
|
1029
|
+
/***/ "5a43":
|
|
1030
|
+
/***/ (function(module, exports) {
|
|
1031
|
+
|
|
1032
|
+
function _arrayLikeToArray(arr, len) {
|
|
1033
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
1034
|
+
|
|
1035
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) {
|
|
1036
|
+
arr2[i] = arr[i];
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1039
|
+
return arr2;
|
|
1040
|
+
}
|
|
1041
|
+
|
|
1042
|
+
module.exports = _arrayLikeToArray;
|
|
1043
|
+
|
|
1044
|
+
/***/ }),
|
|
1045
|
+
|
|
1046
|
+
/***/ "5ec5":
|
|
1047
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1048
|
+
|
|
1049
|
+
var _toConsumableArray = __webpack_require__("448a");
|
|
1050
|
+
|
|
1051
|
+
var THREE = __webpack_require__("9206").THREE;
|
|
1052
|
+
/**
|
|
1053
|
+
* This module manages highlighted and selected objects in 3D modules.
|
|
1054
|
+
*
|
|
1055
|
+
* @class
|
|
1056
|
+
* @returns {exports.GraphicsHighlight}
|
|
1057
|
+
*/
|
|
1058
|
+
|
|
1059
|
+
|
|
1060
|
+
exports.GraphicsHighlight = function () {
|
|
1061
|
+
var currentHighlightedObjects = [];
|
|
1062
|
+
var currentSelectedObjects = [];
|
|
1063
|
+
this.highlightColour = [1, 0, 0];
|
|
1064
|
+
this.selectColour = [0, 1, 0];
|
|
1065
|
+
this.originalColour = [0, 0, 0];
|
|
1066
|
+
|
|
1067
|
+
var _this = this;
|
|
1068
|
+
|
|
1069
|
+
var isDifferent = function isDifferent(array1, array2) {
|
|
1070
|
+
if (array1.length == 0 && array2.length == 0) return false;
|
|
1071
|
+
|
|
1072
|
+
for (var i = 0; i < array1.length; i++) {
|
|
1073
|
+
var matched = false;
|
|
1074
|
+
|
|
1075
|
+
for (var j = 0; j < array2.length; j++) {
|
|
1076
|
+
if (array1[i] === array2[j]) {
|
|
1077
|
+
matched = true;
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
if (!matched) return true;
|
|
1082
|
+
}
|
|
1083
|
+
|
|
1084
|
+
for (var _i = 0; _i < array2.length; _i++) {
|
|
1085
|
+
var _matched = false;
|
|
1086
|
+
|
|
1087
|
+
for (var _j = 0; _j < array1.length; _j++) {
|
|
1088
|
+
if (array2[_i] === array1[_j]) {
|
|
1089
|
+
_matched = true;
|
|
1090
|
+
}
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
if (!_matched) return true;
|
|
1094
|
+
}
|
|
1095
|
+
|
|
1096
|
+
return false;
|
|
1097
|
+
};
|
|
1098
|
+
|
|
1099
|
+
var getUnmatchingObjects = function getUnmatchingObjects(objectsArray1, objectsArray2) {
|
|
1100
|
+
var unmatchingObjects = [];
|
|
1101
|
+
if (objectsArray2.length == 0) return objectsArray1;
|
|
1102
|
+
|
|
1103
|
+
for (var i = 0; i < objectsArray1.length; i++) {
|
|
1104
|
+
var matched = false;
|
|
1105
|
+
|
|
1106
|
+
for (var j = 0; j < objectsArray2.length; j++) {
|
|
1107
|
+
if (objectsArray1[i] === objectsArray2[j]) {
|
|
1108
|
+
matched = true;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
if (!matched) unmatchingObjects.push(objectsArray1[i]);
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
return unmatchingObjects;
|
|
1116
|
+
};
|
|
1117
|
+
|
|
1118
|
+
this.setHighlighted = function (objects) {
|
|
1119
|
+
var previousHighlightedObjects = currentHighlightedObjects;
|
|
1120
|
+
|
|
1121
|
+
_this.resetHighlighted(); // Selected object cannot be highlighted
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
var array = getUnmatchingObjects(objects, currentSelectedObjects);
|
|
1125
|
+
var fullList = getFullListOfObjects(array);
|
|
1126
|
+
|
|
1127
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1128
|
+
var _fullList$i$material$;
|
|
1129
|
+
|
|
1130
|
+
if (fullList[i] && fullList[i].material && fullList[i].material.emissive) (_fullList$i$material$ = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$, _toConsumableArray(_this.highlightColour));
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
currentHighlightedObjects = array;
|
|
1134
|
+
return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
|
|
1135
|
+
};
|
|
1136
|
+
|
|
1137
|
+
this.setSelected = function (objects) {
|
|
1138
|
+
// first find highlighted object that are not selected
|
|
1139
|
+
var previousHSelectedObjects = currentSelectedObjects;
|
|
1140
|
+
var array = getUnmatchingObjects(currentHighlightedObjects, objects);
|
|
1141
|
+
currentHighlightedObjects = array;
|
|
1142
|
+
|
|
1143
|
+
_this.resetSelected();
|
|
1144
|
+
|
|
1145
|
+
var fullList = getFullListOfObjects(objects);
|
|
1146
|
+
|
|
1147
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1148
|
+
var _fullList$i$material$2;
|
|
1149
|
+
|
|
1150
|
+
if (fullList[i] && fullList[i].material && fullList[i].material.emissive) (_fullList$i$material$2 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$2, _toConsumableArray(_this.selectColour));
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
currentSelectedObjects = objects;
|
|
1154
|
+
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
|
|
1155
|
+
};
|
|
1156
|
+
|
|
1157
|
+
var getFullListOfObjects = function getFullListOfObjects(objects) {
|
|
1158
|
+
var fullList = [];
|
|
1159
|
+
|
|
1160
|
+
for (var i = 0; i < objects.length; i++) {
|
|
1161
|
+
if (objects[i].material) fullList.push(objects[i]);
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
return fullList;
|
|
1165
|
+
};
|
|
1166
|
+
|
|
1167
|
+
this.resetHighlighted = function () {
|
|
1168
|
+
var fullList = getFullListOfObjects(currentHighlightedObjects);
|
|
1169
|
+
|
|
1170
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1171
|
+
if (fullList[i] && fullList[i].material) {
|
|
1172
|
+
var _fullList$i$material$3;
|
|
1173
|
+
|
|
1174
|
+
if (fullList[i].material.emissive) (_fullList$i$material$3 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$3, _toConsumableArray(_this.originalColour));
|
|
1175
|
+
if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
1176
|
+
}
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
currentHighlightedObjects = [];
|
|
1180
|
+
};
|
|
1181
|
+
|
|
1182
|
+
this.resetSelected = function () {
|
|
1183
|
+
var fullList = getFullListOfObjects(currentSelectedObjects);
|
|
1184
|
+
|
|
1185
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1186
|
+
if (fullList[i] && fullList[i].material) {
|
|
1187
|
+
var _fullList$i$material$4;
|
|
1188
|
+
|
|
1189
|
+
if (fullList[i].material.emissive) (_fullList$i$material$4 = fullList[i].material.emissive).setRGB.apply(_fullList$i$material$4, _toConsumableArray(_this.originalColour));
|
|
1190
|
+
if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
currentSelectedObjects = [];
|
|
1195
|
+
};
|
|
1196
|
+
|
|
1197
|
+
this.getSelected = function () {
|
|
1198
|
+
return currentSelectedObjects;
|
|
1199
|
+
};
|
|
1200
|
+
|
|
1201
|
+
this.reset = function () {
|
|
1202
|
+
_this.resetSelected();
|
|
1203
|
+
|
|
1204
|
+
_this.resetHighlighted();
|
|
1205
|
+
};
|
|
1206
|
+
};
|
|
1207
|
+
|
|
1208
|
+
/***/ }),
|
|
1209
|
+
|
|
1210
|
+
/***/ "5fef":
|
|
1211
|
+
/***/ (function(module, exports) {
|
|
1212
|
+
|
|
1213
|
+
module.exports = require("core-js/modules/es.regexp.to-string");
|
|
1214
|
+
|
|
1215
|
+
/***/ }),
|
|
1216
|
+
|
|
1217
|
+
/***/ "6049":
|
|
1218
|
+
/***/ (function(module, exports) {
|
|
1219
|
+
|
|
1220
|
+
module.exports = require("core-js/modules/es.symbol");
|
|
1221
|
+
|
|
1222
|
+
/***/ }),
|
|
1223
|
+
|
|
1224
|
+
/***/ "642d":
|
|
1225
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
1226
|
+
|
|
1227
|
+
"use strict";
|
|
1228
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("7d9b");
|
|
1229
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_1_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
1230
|
+
/* unused harmony reexport * */
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
/***/ }),
|
|
1234
|
+
|
|
1235
|
+
/***/ "6579":
|
|
1236
|
+
/***/ (function(module, exports) {
|
|
1237
|
+
|
|
1238
|
+
module.exports = require("core-js/modules/es.array.slice");
|
|
1239
|
+
|
|
1240
|
+
/***/ }),
|
|
1241
|
+
|
|
1242
|
+
/***/ "6613":
|
|
1243
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1244
|
+
|
|
1245
|
+
__webpack_require__("e42b");
|
|
1246
|
+
|
|
1247
|
+
__webpack_require__("6579");
|
|
1248
|
+
|
|
1249
|
+
__webpack_require__("bcd8");
|
|
1250
|
+
|
|
1251
|
+
__webpack_require__("850c");
|
|
1252
|
+
|
|
1253
|
+
__webpack_require__("5fef");
|
|
1254
|
+
|
|
1255
|
+
__webpack_require__("907b");
|
|
1256
|
+
|
|
1257
|
+
var arrayLikeToArray = __webpack_require__("5a43");
|
|
1258
|
+
|
|
1259
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
1260
|
+
if (!o) return;
|
|
1261
|
+
if (typeof o === "string") return arrayLikeToArray(o, minLen);
|
|
1262
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
1263
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
1264
|
+
if (n === "Map" || n === "Set") return Array.from(n);
|
|
1265
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
|
|
1266
|
+
}
|
|
1267
|
+
|
|
1268
|
+
module.exports = _unsupportedIterableToArray;
|
|
1269
|
+
|
|
1270
|
+
/***/ }),
|
|
1271
|
+
|
|
1272
|
+
/***/ "6814":
|
|
1273
|
+
/***/ (function(module, exports) {
|
|
1274
|
+
|
|
1275
|
+
module.exports = require("lodash/orderBy");
|
|
1276
|
+
|
|
1277
|
+
/***/ }),
|
|
1278
|
+
|
|
1279
|
+
/***/ "6aa6":
|
|
1280
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1281
|
+
|
|
1282
|
+
__webpack_require__("ab7e");
|
|
1283
|
+
|
|
1284
|
+
__webpack_require__("6bb1");
|
|
1285
|
+
|
|
1286
|
+
__webpack_require__("6579");
|
|
1287
|
+
|
|
1288
|
+
__webpack_require__("7c81");
|
|
1289
|
+
|
|
1290
|
+
__webpack_require__("bcd8");
|
|
1291
|
+
|
|
1292
|
+
__webpack_require__("fd48");
|
|
1293
|
+
|
|
1294
|
+
var MODULE_CHANGE = {
|
|
1295
|
+
ALL: 0,
|
|
1296
|
+
DESTROYED: 1,
|
|
1297
|
+
NAME_CHANGED: 2,
|
|
1298
|
+
SETTINGS_CHANGED: 3
|
|
1299
|
+
};
|
|
1300
|
+
|
|
1301
|
+
var BaseModule = function BaseModule() {
|
|
1302
|
+
this.typeName = "Base Module";
|
|
1303
|
+
this.instanceName = "default";
|
|
1304
|
+
this.onChangedCallbacks = [];
|
|
1305
|
+
/** Notifier handle for informing other modules of any changes **/
|
|
1306
|
+
|
|
1307
|
+
this.eventNotifiers = [];
|
|
1308
|
+
};
|
|
1309
|
+
|
|
1310
|
+
BaseModule.prototype.setName = function (name) {
|
|
1311
|
+
if (name && this.instanceName !== name) {
|
|
1312
|
+
this.instanceName = name;
|
|
1313
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1314
|
+
|
|
1315
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1316
|
+
callbackArray[i](this, MODULE_CHANGE.NAME_CHANGED);
|
|
1317
|
+
}
|
|
860
1318
|
}
|
|
861
|
-
|
|
862
|
-
/**
|
|
863
|
-
* Callback function when a pickable object has been picked. It will then
|
|
864
|
-
* call functions in tissueViewer and cellPanel to show corresponding
|
|
865
|
-
* informations.
|
|
866
|
-
*
|
|
867
|
-
* @callback
|
|
868
|
-
*/
|
|
869
|
-
var _pickingCallback = function() {
|
|
870
|
-
return function(intersects, window_x, window_y) {
|
|
871
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
872
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
873
|
-
if (idObject.id) {
|
|
874
|
-
if (_this.toolTip !== undefined) {
|
|
875
|
-
_this.toolTip.setText(idObject.id);
|
|
876
|
-
_this.toolTip.show(window_x, window_y);
|
|
877
|
-
}
|
|
878
|
-
_this.displayMessage(idObject.object.name + " selected.");
|
|
1319
|
+
};
|
|
879
1320
|
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
} else {
|
|
886
|
-
_this.setSelectedByObjects([idObject.object], true);
|
|
887
|
-
}
|
|
888
|
-
return;
|
|
889
|
-
} else {
|
|
890
|
-
if (_this.toolTip !== undefined) {
|
|
891
|
-
_this.toolTip.hide();
|
|
892
|
-
}
|
|
893
|
-
_this.setSelectedByObjects([], true);
|
|
894
|
-
}
|
|
895
|
-
}
|
|
896
|
-
};
|
|
897
|
-
|
|
898
|
-
/**
|
|
899
|
-
* Callback function when a pickable object has been hovered over. It will
|
|
900
|
-
* show objecty id/name as _this.toolTip text.
|
|
901
|
-
*
|
|
902
|
-
* @callback
|
|
903
|
-
*/
|
|
904
|
-
var _hoverCallback = function() {
|
|
905
|
-
return function(intersects, window_x, window_y) {
|
|
906
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
907
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
908
|
-
if (idObject.id) {
|
|
909
|
-
_this.displayArea.style.cursor = "pointer";
|
|
910
|
-
if (_this.toolTip !== undefined) {
|
|
911
|
-
_this.toolTip.setText(idObject.id);
|
|
912
|
-
_this.toolTip.show(window_x, window_y);
|
|
913
|
-
}
|
|
914
|
-
_this.setHighlightedByObjects([idObject.object], true);
|
|
915
|
-
return;
|
|
916
|
-
}
|
|
917
|
-
else {
|
|
918
|
-
if (_this.toolTip !== undefined) {
|
|
919
|
-
_this.toolTip.hide();
|
|
920
|
-
}
|
|
921
|
-
_this.displayArea.style.cursor = "auto";
|
|
922
|
-
_this.setHighlightedByObjects([], true);
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
};
|
|
926
|
-
|
|
927
|
-
var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
|
|
928
|
-
if (type == "all" || type == "geometries") {
|
|
929
|
-
var geometries = scene.findGeometriesWithGroupName(name);
|
|
930
|
-
for (var i = 0; i < geometries.length; i ++ ) {
|
|
931
|
-
geometries[i].setVisibility(value);
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
|
-
if (type == "all" || type == "glyphsets") {
|
|
935
|
-
var glyphsets = scene.findGlyphsetsWithGroupName(name);
|
|
936
|
-
for (var i = 0; i < glyphsets.length; i ++ ) {
|
|
937
|
-
glyphsets[i].setVisibility(value);
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
if (type == "all" || type == "pointsets") {
|
|
941
|
-
var pointsets = scene.findPointsetsWithGroupName(name);
|
|
942
|
-
for (var i = 0; i < pointsets.length; i ++ ) {
|
|
943
|
-
pointsets[i].setVisibility(value);
|
|
944
|
-
}
|
|
945
|
-
}
|
|
946
|
-
if (type == "all" || type == "lines") {
|
|
947
|
-
var lines = scene.findLinesWithGroupName(name);
|
|
948
|
-
for (var i = 0; i < lines.length; i ++ ) {
|
|
949
|
-
lines[i].setVisibility(value);
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
}
|
|
953
|
-
|
|
954
|
-
/**
|
|
955
|
-
* Change visibility for parts of the current scene.
|
|
956
|
-
*/
|
|
957
|
-
this.changeGeometriesVisibility = function(name, value) {
|
|
958
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
|
|
959
|
-
if (pickerScene)
|
|
960
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
|
|
961
|
-
}
|
|
962
|
-
|
|
963
|
-
/**
|
|
964
|
-
* Change visibility for parts of the current scene.
|
|
965
|
-
*/
|
|
966
|
-
this.changeGlyphsetsVisibility = function(name, value) {
|
|
967
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
|
|
968
|
-
if (pickerScene)
|
|
969
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
|
|
970
|
-
}
|
|
971
|
-
|
|
972
|
-
/**
|
|
973
|
-
* Change visibility for parts of the current scene.
|
|
974
|
-
*/
|
|
975
|
-
this.changeLinesVisibility = function(name, value) {
|
|
976
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
|
|
977
|
-
if (pickerScene)
|
|
978
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
|
|
979
|
-
}
|
|
980
|
-
|
|
981
|
-
/**
|
|
982
|
-
* Change visibility for parts of the current scene.
|
|
983
|
-
*/
|
|
984
|
-
this.changePointsetsVisibility = function(name, value) {
|
|
985
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
|
|
986
|
-
if (pickerScene)
|
|
987
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
|
|
1321
|
+
BaseModule.prototype.settingsChanged = function () {
|
|
1322
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1323
|
+
|
|
1324
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1325
|
+
callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
|
|
988
1326
|
}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
this.changeOrganPartsVisibilityCallback = function(name) {
|
|
1003
|
-
return function(value) {
|
|
1004
|
-
_this.changeOrganPartsVisibility(name, value);
|
|
1005
|
-
}
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
/**
|
|
1009
|
-
* Change some of the ZincGeometry property for never map geometry
|
|
1010
|
-
*
|
|
1011
|
-
* @callback
|
|
1012
|
-
*/
|
|
1013
|
-
var _addNerveMapGeometryCallback = function(GroupName) {
|
|
1014
|
-
return function(geometry) {
|
|
1015
|
-
geometry.groupName = GroupName;
|
|
1016
|
-
if (imageCombiner && geometry.morph && geometry.morph.material.map) {
|
|
1017
|
-
geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
|
|
1018
|
-
geometry.morph.material.map.needsUpdate = true;
|
|
1019
|
-
geometry.morph.material.needsUpdate = true;
|
|
1020
|
-
}
|
|
1021
|
-
}
|
|
1022
|
-
}
|
|
1023
|
-
|
|
1024
|
-
/**
|
|
1025
|
-
* Read in the nerve map models onto the primary renderer when nerve map has
|
|
1026
|
-
* been toggled on.
|
|
1027
|
-
*/
|
|
1028
|
-
var setupNerveMapPrimaryRenderer = function() {
|
|
1029
|
-
var sceneName = _this.sceneData.currentName + "_nervemap";
|
|
1030
|
-
nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
|
|
1031
|
-
if (nerveMapScene == undefined) {
|
|
1032
|
-
var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
|
|
1033
|
-
nerveMapScene = _this.zincRenderer.createScene(sceneName);
|
|
1034
|
-
nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
|
|
1035
|
-
if (_this.sceneData.nerveMap.threed.view !== undefined)
|
|
1036
|
-
nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
|
|
1037
|
-
else {
|
|
1038
|
-
nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
|
|
1039
|
-
}
|
|
1040
|
-
nerveMapScene.ambient.intensity = 8.0;
|
|
1041
|
-
nerveMapScene.directionalLight.intensity = 0;
|
|
1042
|
-
var zincCameraControl = nerveMapScene.getZincCameraControls();
|
|
1043
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1044
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1045
|
-
_this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
|
|
1046
|
-
var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
|
|
1047
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
|
|
1048
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
|
|
1049
|
-
_this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
|
|
1050
|
-
}
|
|
1051
|
-
_this.zincRenderer.setCurrentScene(nerveMapScene);
|
|
1052
|
-
_this.graphicsHighlight.reset();
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
var activateAdditionalNerveMapRenderer = function() {
|
|
1056
|
-
for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
|
|
1057
|
-
layoutUpdateRequiredCallbacks[i](false, true);
|
|
1058
|
-
}
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1061
|
-
/**
|
|
1062
|
-
* Nerve map has been toggled on/off, change organs renderer layput.
|
|
1063
|
-
*/
|
|
1064
|
-
this.changeNerveMapVisibility = function() {
|
|
1065
|
-
_this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
|
|
1066
|
-
if (_this.sceneData.nerveMapIsActive)
|
|
1067
|
-
setupNerveMapPrimaryRenderer();
|
|
1068
|
-
else {
|
|
1069
|
-
_this.zincRenderer.setCurrentScene(_this.scene);
|
|
1070
|
-
_this.graphicsHighlight.reset();
|
|
1071
|
-
}
|
|
1072
|
-
activateAdditionalNerveMapRenderer();
|
|
1073
|
-
}
|
|
1074
|
-
|
|
1075
|
-
this.changeBackgroundColour = function(backgroundColourString) {
|
|
1076
|
-
var colour = new THREE.Color(backgroundColourString);
|
|
1077
|
-
if (_this.zincRenderer) {
|
|
1078
|
-
var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
|
|
1079
|
-
internalRenderer.setClearColor( colour, 1 );
|
|
1080
|
-
}
|
|
1081
|
-
}
|
|
1082
|
-
|
|
1083
|
-
var addOrganPartToSceneData = function(zincObject) {
|
|
1084
|
-
if (zincObject.groupName) {
|
|
1085
|
-
if (zincObject.isGeometry) {
|
|
1086
|
-
if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
|
|
1087
|
-
_this.sceneData.geometries.push(zincObject.groupName);
|
|
1088
|
-
}
|
|
1089
|
-
} else if (zincObject.isGlyphset) {
|
|
1090
|
-
if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
|
|
1091
|
-
_this.sceneData.glyphsets.push(zincObject.groupName);
|
|
1092
|
-
}
|
|
1093
|
-
} else if (zincObject.isLines) {
|
|
1094
|
-
if (!_this.sceneData.lines.includes(zincObject.groupName)) {
|
|
1095
|
-
_this.sceneData.lines.push(zincObject.groupName);
|
|
1096
|
-
}
|
|
1097
|
-
} else if (zincObject.isPointset) {
|
|
1098
|
-
if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
|
|
1099
|
-
_this.sceneData.pointsets.push(zincObject.groupName);
|
|
1100
|
-
}
|
|
1101
|
-
}
|
|
1102
|
-
}
|
|
1103
|
-
}
|
|
1104
|
-
|
|
1105
|
-
var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
|
|
1106
|
-
for (var i = 0; i < organPartAddedCallbacks.length;i++) {
|
|
1107
|
-
organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
|
|
1108
|
-
}
|
|
1109
|
-
if (useDefautColour)
|
|
1110
|
-
modelsLoader.setGeometryColour(zincObject, systemName, partName);
|
|
1111
|
-
addOrganPartToSceneData(zincObject);
|
|
1112
|
-
if (zincObject.groupName) {
|
|
1113
|
-
_this.displayMessage(zincObject.groupName + " loaded.");
|
|
1114
|
-
} else {
|
|
1115
|
-
_this.displayMessage("Resource loaded.");
|
|
1116
|
-
}
|
|
1117
|
-
var annotation = new (__webpack_require__("a0d7").annotation)();
|
|
1118
|
-
annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
|
|
1119
|
-
zincObject.userData = [annotation];
|
|
1120
|
-
}
|
|
1121
|
-
|
|
1122
|
-
/**
|
|
1123
|
-
* New organs geometry has been added to the scene, add UIs and make
|
|
1124
|
-
* sure the viewport is correct.
|
|
1125
|
-
*/
|
|
1126
|
-
var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
|
|
1127
|
-
return function(zincObject) {
|
|
1128
|
-
addOrganPart(systemName, partName, useDefautColour, zincObject);
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
var downloadCompletedCallback = function() {
|
|
1133
|
-
return function() {
|
|
1134
|
-
_this.settingsChanged();
|
|
1135
|
-
_this.sceneData.timeVarying = _this.scene.isTimeVarying();
|
|
1136
|
-
_this.displayMessage("All resources loaded.");
|
|
1137
|
-
if (finishDownloadCallback)
|
|
1138
|
-
finishDownloadCallback();
|
|
1139
|
-
}
|
|
1140
|
-
}
|
|
1141
|
-
|
|
1142
|
-
var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
|
|
1143
|
-
return function(geometry) {
|
|
1144
|
-
addOrganPart(systemName, partName, useDefautColour, geometry);
|
|
1145
|
-
_this.settingsChanged();
|
|
1146
|
-
}
|
|
1147
|
-
}
|
|
1148
|
-
|
|
1149
|
-
/**
|
|
1150
|
-
* Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
|
|
1151
|
-
* other activities of the organs.
|
|
1152
|
-
*/
|
|
1153
|
-
this.updateFieldvisibility = function(dataFields, value) {
|
|
1154
|
-
for ( var i = 0; i < dataFields.length; i ++ ) {
|
|
1155
|
-
if (value != i) {
|
|
1156
|
-
var geometryName = dataFields[i].PartName;
|
|
1157
|
-
_this.changeOrganPartsVisibility(geometryName, false);
|
|
1158
|
-
}
|
|
1159
|
-
}
|
|
1160
|
-
if (value > -1) {
|
|
1161
|
-
var partName = dataFields[value].PartName;
|
|
1162
|
-
if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
|
|
1163
|
-
(_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
|
|
1164
|
-
_this.changeOrganPartsVisibility(partName, true);
|
|
1165
|
-
} else {
|
|
1166
|
-
var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
|
|
1167
|
-
if (partDetails != undefined) {
|
|
1168
|
-
_this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1171
|
-
}
|
|
1172
|
-
}
|
|
1173
|
-
|
|
1174
|
-
/**
|
|
1175
|
-
* Return an array containing name(s) of species that also contains the
|
|
1176
|
-
* currently displayed organs.
|
|
1177
|
-
*
|
|
1178
|
-
* @returns {Array} containing species name
|
|
1179
|
-
*/
|
|
1180
|
-
this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
|
|
1181
|
-
var availableSpecies = new Array();
|
|
1182
|
-
availableSpecies.push("none");
|
|
1183
|
-
var keysArray = Object.keys(organsFileMap);
|
|
1184
|
-
for (index in keysArray) {
|
|
1185
|
-
var species = keysArray[index];
|
|
1186
|
-
if (species != currentSpecies) {
|
|
1187
|
-
if (organsFileMap[species].hasOwnProperty(currentSystem) &&
|
|
1188
|
-
organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
|
|
1189
|
-
availableSpecies.push(species);
|
|
1190
|
-
}
|
|
1191
|
-
}
|
|
1192
|
-
}
|
|
1193
|
-
return availableSpecies;
|
|
1194
|
-
}
|
|
1195
|
-
|
|
1196
|
-
var setSceneData = function(speciesName, systemName, partName, organsDetails) {
|
|
1197
|
-
_this.sceneData.nerveMapIsActive = false;
|
|
1198
|
-
_this.sceneData.nerveMap = undefined;
|
|
1199
|
-
_this.sceneData.metaURL = "";
|
|
1200
|
-
_this.sceneData.viewURL = "";
|
|
1201
|
-
_this.sceneData.currentSpecies = speciesName;
|
|
1202
|
-
_this.sceneData.currentSystem = systemName;
|
|
1203
|
-
_this.sceneData.currentPart = partName;
|
|
1204
|
-
_this.sceneData.currentTime = 0.0;
|
|
1205
|
-
_this.sceneData.geometries.splice(0);
|
|
1206
|
-
_this.sceneData.lines.splice(0);
|
|
1207
|
-
_this.sceneData.glyphsets.splice(0);
|
|
1208
|
-
_this.sceneData.pointsets.splice(0);
|
|
1209
|
-
_this.sceneData.timeVarying = false;
|
|
1210
|
-
// This is used as title
|
|
1211
|
-
var name = "";
|
|
1212
|
-
if (speciesName)
|
|
1213
|
-
name = speciesName + "/";
|
|
1214
|
-
if (systemName)
|
|
1215
|
-
name = systemName + "/";
|
|
1216
|
-
if (partName)
|
|
1217
|
-
name = partName;
|
|
1218
|
-
_this.sceneData.currentName = name;
|
|
1219
|
-
}
|
|
1220
|
-
|
|
1221
|
-
this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
|
|
1222
|
-
if (_this.zincRenderer) {
|
|
1223
|
-
if (partName && (_this.sceneData.metaURL !== url)) {
|
|
1224
|
-
setSceneData(speciesName, systemName, partName, undefined);
|
|
1225
|
-
var name = _this.sceneData.currentName;
|
|
1226
|
-
var organScene = _this.zincRenderer.getSceneByName(name);
|
|
1227
|
-
if (organScene) {
|
|
1228
|
-
organScene.clearAll();
|
|
1229
|
-
} else {
|
|
1230
|
-
organScene = _this.zincRenderer.createScene(name);
|
|
1231
|
-
}
|
|
1232
|
-
for (var i = 0; i < sceneChangedCallbacks.length;i++) {
|
|
1233
|
-
sceneChangedCallbacks[i](_this.sceneData);
|
|
1234
|
-
}
|
|
1235
|
-
if (viewURL && viewURL != "") {
|
|
1236
|
-
_this.sceneData.viewURL = viewURL;
|
|
1237
|
-
organScene.loadViewURL(_this.sceneData.viewURL);
|
|
1238
|
-
} else
|
|
1239
|
-
_this.sceneData.viewURL = undefined;
|
|
1240
|
-
_this.sceneData.metaURL = url;
|
|
1241
|
-
_this.displayMessage("Downloading...");
|
|
1242
|
-
organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
|
|
1243
|
-
downloadCompletedCallback());
|
|
1244
|
-
_this.scene = organScene;
|
|
1245
|
-
_this.zincRenderer.setCurrentScene(organScene);
|
|
1246
|
-
_this.graphicsHighlight.reset();
|
|
1247
|
-
var zincCameraControl = organScene.getZincCameraControls();
|
|
1248
|
-
zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
|
|
1249
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1250
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1251
|
-
}
|
|
1252
|
-
}
|
|
1253
|
-
}
|
|
1254
|
-
|
|
1255
|
-
this.alignCameraWithSelectedObject = function(transitionTime) {
|
|
1256
|
-
var objects = _this.graphicsHighlight.getSelected();
|
|
1257
|
-
if (objects && objects[0] && objects[0].userData) {
|
|
1258
|
-
_this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
|
|
1259
|
-
}
|
|
1260
|
-
}
|
|
1261
|
-
|
|
1262
|
-
this.exportSettings = function() {
|
|
1263
|
-
var settings = {};
|
|
1264
|
-
settings.name = _this.instanceName;
|
|
1265
|
-
if (_this.sceneData.currentSystem)
|
|
1266
|
-
settings.system = _this.sceneData.currentSystem;
|
|
1267
|
-
if (_this.sceneData.currentSpecies)
|
|
1268
|
-
settings.species = _this.sceneData.currentSpecies;
|
|
1269
|
-
if (_this.sceneData.currentPart)
|
|
1270
|
-
settings.part = _this.sceneData.currentPart;
|
|
1271
|
-
settings.metaURL = _this.sceneData.metaURL;
|
|
1272
|
-
if (_this.sceneData.viewURL)
|
|
1273
|
-
settings.viewURL = _this.sceneData.viewURL;
|
|
1274
|
-
settings.dialog = "Organ Viewer";
|
|
1275
|
-
return settings;
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
this.importSettings = function(settings) {
|
|
1279
|
-
if (settings && (settings.dialog == this.typeName)) {
|
|
1280
|
-
_this.setName(settings.name);
|
|
1281
|
-
if (settings.metaURL !== undefined && settings.metaURL != "") {
|
|
1282
|
-
_this.loadOrgansFromURL(settings.metaURL, settings.species,
|
|
1283
|
-
settings.system, settings.part, settings.viewURL);
|
|
1284
|
-
} else {
|
|
1285
|
-
_this.loadOrgans(settings.species, settings.system, settings.part);
|
|
1286
|
-
}
|
|
1287
|
-
return true;
|
|
1288
|
-
}
|
|
1289
|
-
return false;
|
|
1290
|
-
}
|
|
1291
|
-
|
|
1292
|
-
/**
|
|
1293
|
-
* initialise loading of the html layout for the organs panel, this is
|
|
1294
|
-
* called when the {@link PJP.OrgansViewer} is created.
|
|
1295
|
-
*
|
|
1296
|
-
* @async
|
|
1297
|
-
*/
|
|
1298
|
-
var initialise = function() {
|
|
1299
|
-
_this.initialiseRenderer(undefined);
|
|
1300
|
-
if (_this.zincRenderer) {
|
|
1301
|
-
_this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
|
|
1302
|
-
_this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
|
|
1303
|
-
}
|
|
1327
|
+
};
|
|
1328
|
+
|
|
1329
|
+
BaseModule.prototype.exportSettings = function () {
|
|
1330
|
+
var settings = {};
|
|
1331
|
+
settings.dialog = this.typeName;
|
|
1332
|
+
settings.name = this.instanceName;
|
|
1333
|
+
return settings;
|
|
1334
|
+
};
|
|
1335
|
+
|
|
1336
|
+
BaseModule.prototype.importSettings = function (settings) {
|
|
1337
|
+
if (settings.dialog == this.typeName) {
|
|
1338
|
+
this.setName(settings.name);
|
|
1339
|
+
return true;
|
|
1304
1340
|
}
|
|
1305
|
-
|
|
1306
|
-
initialise();
|
|
1307
1341
|
|
|
1308
|
-
|
|
1342
|
+
return false;
|
|
1343
|
+
};
|
|
1309
1344
|
|
|
1310
|
-
|
|
1311
|
-
|
|
1345
|
+
BaseModule.prototype.publishChanges = function (annotations, eventType) {
|
|
1346
|
+
for (var i = 0; i < this.eventNotifiers.length; i++) {
|
|
1347
|
+
this.eventNotifiers[i].publish(this, eventType, annotations);
|
|
1348
|
+
}
|
|
1349
|
+
};
|
|
1312
1350
|
|
|
1351
|
+
BaseModule.prototype.getName = function () {
|
|
1352
|
+
return this.instanceName;
|
|
1353
|
+
};
|
|
1313
1354
|
|
|
1314
|
-
|
|
1355
|
+
BaseModule.prototype.destroy = function () {
|
|
1356
|
+
//Make a temorary copy as the array may be altered during the loop
|
|
1357
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1315
1358
|
|
|
1316
|
-
|
|
1317
|
-
|
|
1359
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1360
|
+
callbackArray[i](this, MODULE_CHANGE.DESTROYED);
|
|
1361
|
+
}
|
|
1318
1362
|
|
|
1319
|
-
|
|
1363
|
+
delete this;
|
|
1364
|
+
};
|
|
1365
|
+
|
|
1366
|
+
BaseModule.prototype.addChangedCallback = function (callback) {
|
|
1367
|
+
if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
|
|
1368
|
+
};
|
|
1369
|
+
|
|
1370
|
+
BaseModule.prototype.removeChangedCallback = function (callback) {
|
|
1371
|
+
var index = this.onChangedCallbacks.indexOf(callback);
|
|
1372
|
+
|
|
1373
|
+
if (index > -1) {
|
|
1374
|
+
this.onChangedCallbacks.splice(index, 1);
|
|
1375
|
+
}
|
|
1376
|
+
};
|
|
1377
|
+
|
|
1378
|
+
BaseModule.prototype.addNotifier = function (eventNotifier) {
|
|
1379
|
+
this.eventNotifiers.push(eventNotifier);
|
|
1380
|
+
};
|
|
1381
|
+
|
|
1382
|
+
exports.BaseModule = BaseModule;
|
|
1383
|
+
exports.MODULE_CHANGE = MODULE_CHANGE;
|
|
1320
1384
|
|
|
1321
1385
|
/***/ }),
|
|
1322
1386
|
|
|
@@ -1341,160 +1405,40 @@ module.exports = require("element-ui/lib/row");
|
|
|
1341
1405
|
|
|
1342
1406
|
/***/ }),
|
|
1343
1407
|
|
|
1344
|
-
/***/ "
|
|
1408
|
+
/***/ "7037":
|
|
1345
1409
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1346
1410
|
|
|
1347
|
-
|
|
1411
|
+
__webpack_require__("6049");
|
|
1348
1412
|
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
|
|
1376
|
-
offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
|
|
1377
|
-
time: { type: "f", value: 0.0 },
|
|
1378
|
-
slide_pos: { type: "f", value: 1.0 },
|
|
1379
|
-
myTex: {type: 't', value: null}
|
|
1380
|
-
} ] );
|
|
1381
|
-
|
|
1382
|
-
var addGeometryIntoBufferGeometry = function(order, geometry)
|
|
1383
|
-
{
|
|
1384
|
-
var arrayLength = geometry.faces.length * 3 * 3;
|
|
1385
|
-
var positions = new Float32Array( arrayLength );
|
|
1386
|
-
var colors = new Float32Array( arrayLength );
|
|
1387
|
-
var normals = new Float32Array( arrayLength );
|
|
1388
|
-
var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
|
|
1389
|
-
if (bufferGeometry === undefined)
|
|
1390
|
-
bufferGeometry = new THREE.BufferGeometry();
|
|
1391
|
-
|
|
1392
|
-
geometry.faces.forEach( function ( face, index ) {
|
|
1393
|
-
positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
|
|
1394
|
-
positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
|
|
1395
|
-
positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
|
|
1396
|
-
positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
|
|
1397
|
-
positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
|
|
1398
|
-
positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
|
|
1399
|
-
positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
|
|
1400
|
-
positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
|
|
1401
|
-
positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
|
|
1402
|
-
|
|
1403
|
-
normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
|
|
1404
|
-
normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
|
|
1405
|
-
normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
|
|
1406
|
-
normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
|
|
1407
|
-
normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
|
|
1408
|
-
normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
|
|
1409
|
-
normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
|
|
1410
|
-
normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
|
|
1411
|
-
normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
|
|
1412
|
-
|
|
1413
|
-
texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
|
|
1414
|
-
texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
|
|
1415
|
-
texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
|
|
1416
|
-
texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
|
|
1417
|
-
texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
|
|
1418
|
-
texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
|
|
1419
|
-
} );
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
if (order == 0) {
|
|
1423
|
-
bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
|
|
1424
|
-
bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
|
|
1425
|
-
bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1426
|
-
} else {
|
|
1427
|
-
var positionStr = "position_" + order;
|
|
1428
|
-
var normalStr = "normal_" + order;
|
|
1429
|
-
var uvsStr = "uv_" + order;
|
|
1430
|
-
bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
|
|
1431
|
-
bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
|
|
1432
|
-
bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
|
-
}
|
|
1436
|
-
|
|
1437
|
-
var meshReady = function(bufferGeometryIn, shaderText, material){
|
|
1438
|
-
var shaderMaterial = new THREE.RawShaderMaterial( {
|
|
1439
|
-
vertexShader: shaderText[0],
|
|
1440
|
-
fragmentShader: shaderText[1],
|
|
1441
|
-
uniforms: shadersUniforms
|
|
1442
|
-
} );
|
|
1443
|
-
shaderMaterial.uniforms.myTex.value = texture;
|
|
1444
|
-
shaderMaterial.side = THREE.DoubleSide;
|
|
1445
|
-
shaderMaterial.depthTest = true;
|
|
1446
|
-
shaderMaterial.needsUpdate = true;
|
|
1447
|
-
shaderMaterial.map = texture;
|
|
1448
|
-
shaderMaterial.uniforms.myTex.value.needsUpdate = true;
|
|
1449
|
-
shaderMaterial.opacity = 1.0;
|
|
1450
|
-
zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
|
|
1451
|
-
zincGeometry.groupName = "varyingTexture";
|
|
1452
|
-
}
|
|
1453
|
-
|
|
1454
|
-
var myLoader = function(order, shaderText) {
|
|
1455
|
-
return function(geometry, materials){
|
|
1456
|
-
var material = 0;
|
|
1457
|
-
addGeometryIntoBufferGeometry(order, geometry);
|
|
1458
|
-
completedInputs++;
|
|
1459
|
-
if (completedInputs == numberOfInputs) {
|
|
1460
|
-
meshReady(bufferGeometry, shaderText, material);
|
|
1461
|
-
if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
|
|
1462
|
-
finishCallbackFunction(bufferGeometry);
|
|
1463
|
-
}
|
|
1464
|
-
}
|
|
1465
|
-
}
|
|
1466
|
-
|
|
1467
|
-
this.setSliderPos = function(pos) {
|
|
1468
|
-
if (zincGeometry)
|
|
1469
|
-
zincGeometry.morph.material.uniforms.slide_pos.value = pos;
|
|
1470
|
-
}
|
|
1471
|
-
|
|
1472
|
-
this.setTime = function(time) {
|
|
1473
|
-
if (zincGeometry) {
|
|
1474
|
-
zincGeometry.morph.material.uniforms.time.value = time;
|
|
1475
|
-
}
|
|
1476
|
-
}
|
|
1477
|
-
|
|
1478
|
-
this.setTexture = function(textureIn) {
|
|
1479
|
-
if (zincGeometry) {
|
|
1480
|
-
zincGeometry.morph.material.uniforms.myTex.value = textureIn;
|
|
1481
|
-
zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
|
|
1485
|
-
this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
|
|
1486
|
-
var loader = new THREE.JSONLoader( true );
|
|
1487
|
-
numberOfInputs = urls.length;
|
|
1488
|
-
finishCallbackFunction = finishCallback;
|
|
1489
|
-
var shaderText = [
|
|
1490
|
-
__webpack_require__("1823"),
|
|
1491
|
-
__webpack_require__("4e8a")
|
|
1492
|
-
];
|
|
1493
|
-
for (var i = 0; i < numberOfInputs; i++)
|
|
1494
|
-
loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
|
|
1495
|
-
}
|
|
1413
|
+
__webpack_require__("51e9");
|
|
1414
|
+
|
|
1415
|
+
__webpack_require__("02ac");
|
|
1416
|
+
|
|
1417
|
+
__webpack_require__("8c84");
|
|
1418
|
+
|
|
1419
|
+
__webpack_require__("850c");
|
|
1420
|
+
|
|
1421
|
+
__webpack_require__("907b");
|
|
1422
|
+
|
|
1423
|
+
__webpack_require__("1ce0");
|
|
1424
|
+
|
|
1425
|
+
function _typeof(obj) {
|
|
1426
|
+
"@babel/helpers - typeof";
|
|
1427
|
+
|
|
1428
|
+
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
1429
|
+
module.exports = _typeof = function _typeof(obj) {
|
|
1430
|
+
return typeof obj;
|
|
1431
|
+
};
|
|
1432
|
+
} else {
|
|
1433
|
+
module.exports = _typeof = function _typeof(obj) {
|
|
1434
|
+
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
1435
|
+
};
|
|
1436
|
+
}
|
|
1437
|
+
|
|
1438
|
+
return _typeof(obj);
|
|
1496
1439
|
}
|
|
1497
1440
|
|
|
1441
|
+
module.exports = _typeof;
|
|
1498
1442
|
|
|
1499
1443
|
/***/ }),
|
|
1500
1444
|
|
|
@@ -1505,105 +1449,68 @@ module.exports = require("element-ui/lib/theme-chalk/col.css");
|
|
|
1505
1449
|
|
|
1506
1450
|
/***/ }),
|
|
1507
1451
|
|
|
1508
|
-
/***/ "
|
|
1509
|
-
/***/ (function(module,
|
|
1510
|
-
|
|
1511
|
-
"use strict";
|
|
1512
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("24f0");
|
|
1513
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
1514
|
-
/* unused harmony reexport * */
|
|
1452
|
+
/***/ "73ef":
|
|
1453
|
+
/***/ (function(module, exports) {
|
|
1515
1454
|
|
|
1455
|
+
module.exports = require("element-ui/lib/theme-chalk/main.css");
|
|
1516
1456
|
|
|
1517
1457
|
/***/ }),
|
|
1518
1458
|
|
|
1519
|
-
/***/ "
|
|
1459
|
+
/***/ "7c81":
|
|
1520
1460
|
/***/ (function(module, exports) {
|
|
1521
1461
|
|
|
1522
|
-
module.exports = require("
|
|
1462
|
+
module.exports = require("core-js/modules/es.array.splice");
|
|
1523
1463
|
|
|
1524
1464
|
/***/ }),
|
|
1525
1465
|
|
|
1526
|
-
/***/ "
|
|
1466
|
+
/***/ "7d9b":
|
|
1527
1467
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1528
1468
|
|
|
1529
|
-
|
|
1469
|
+
// extracted by mini-css-extract-plugin
|
|
1530
1470
|
|
|
1531
|
-
|
|
1532
|
-
var tooltipcontainerElement = undefined;
|
|
1533
|
-
var tipElement = undefined;
|
|
1534
|
-
var tiptextElement = undefined;
|
|
1535
|
-
var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
|
|
1536
|
-
var _this = this;
|
|
1537
|
-
|
|
1538
|
-
/**
|
|
1539
|
-
* Show tool tip on the specified windows coordinates.
|
|
1540
|
-
* @param {Number} x - Style sheet with the same title.
|
|
1541
|
-
* @param {Number} y - selector string to match.
|
|
1542
|
-
*/
|
|
1543
|
-
this.show = function(x, y) {
|
|
1544
|
-
tooltipcontainerElement.style.left = x +"px";
|
|
1545
|
-
tooltipcontainerElement.style.top = (y - 20) + "px";
|
|
1546
|
-
tipElement.style.visibility = "visible";
|
|
1547
|
-
tipElement.style.opacity = 1;
|
|
1548
|
-
tiptextElement.style.visibility = "visible";
|
|
1549
|
-
tiptextElement.style.opacity = 1;
|
|
1550
|
-
}
|
|
1551
|
-
|
|
1552
|
-
this.hide = function() {
|
|
1553
|
-
tipElement.style.visibility = "hidden";
|
|
1554
|
-
tipElement.style.opacity = 0;
|
|
1555
|
-
tiptextElement.style.visibility = "hidden";
|
|
1556
|
-
tiptextElement.style.opacity = 0;
|
|
1557
|
-
}
|
|
1558
|
-
|
|
1559
|
-
/**
|
|
1560
|
-
* Change the tooltip text.
|
|
1561
|
-
* @param {String} text - Text to update the tooltip to.
|
|
1562
|
-
*/
|
|
1563
|
-
this.setText = function(text) {
|
|
1564
|
-
tiptextElement.innerHTML = text;
|
|
1565
|
-
}
|
|
1471
|
+
/***/ }),
|
|
1566
1472
|
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
parent[0].appendChild(childNodes[i]);
|
|
1574
|
-
}
|
|
1575
|
-
*/
|
|
1576
|
-
tipElement = tooltipcontainerElement.querySelector("#tip");
|
|
1577
|
-
tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
|
|
1578
|
-
container.appendChild(tooltipcontainerElement);
|
|
1579
|
-
|
|
1580
|
-
}
|
|
1581
|
-
|
|
1582
|
-
setupToolTipContainer();
|
|
1583
|
-
}
|
|
1473
|
+
/***/ "7f9f":
|
|
1474
|
+
/***/ (function(module, exports) {
|
|
1475
|
+
|
|
1476
|
+
module.exports = require("element-ui/lib/locale");
|
|
1477
|
+
|
|
1478
|
+
/***/ }),
|
|
1584
1479
|
|
|
1480
|
+
/***/ "80c4":
|
|
1481
|
+
/***/ (function(module, exports) {
|
|
1585
1482
|
|
|
1483
|
+
module.exports = require("element-ui/lib/theme-chalk/option.css");
|
|
1586
1484
|
|
|
1587
1485
|
/***/ }),
|
|
1588
1486
|
|
|
1589
|
-
/***/ "
|
|
1487
|
+
/***/ "8278":
|
|
1590
1488
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1591
1489
|
|
|
1592
|
-
|
|
1490
|
+
__webpack_require__("bcd8");
|
|
1491
|
+
|
|
1492
|
+
var _readOnlyError = __webpack_require__("da60");
|
|
1593
1493
|
|
|
1494
|
+
var THREE = __webpack_require__("9206").THREE;
|
|
1594
1495
|
/**
|
|
1595
1496
|
* Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
|
|
1596
1497
|
* @param {String} elementID - id of the target dom element.
|
|
1597
1498
|
* @returns {Zinc.Renderer}
|
|
1598
1499
|
*/
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
var
|
|
1500
|
+
|
|
1501
|
+
|
|
1502
|
+
var createRenderer = function createRenderer() {
|
|
1503
|
+
var WEBGL = __webpack_require__("cf41").WEBGL;
|
|
1504
|
+
|
|
1505
|
+
var localContainer = document.createElement('div');
|
|
1506
|
+
var localRenderer = undefined;
|
|
1507
|
+
;
|
|
1603
1508
|
localContainer.style.height = "100%";
|
|
1509
|
+
|
|
1604
1510
|
if (WEBGL.isWebGLAvailable()) {
|
|
1605
1511
|
var Zinc = __webpack_require__("9206");
|
|
1606
|
-
|
|
1512
|
+
|
|
1513
|
+
localRenderer = new Zinc.Renderer(localContainer, window);
|
|
1607
1514
|
Zinc.defaultMaterialColor = 0xFFFF9C;
|
|
1608
1515
|
localRenderer.initialiseVisualisation();
|
|
1609
1516
|
localRenderer.playAnimation = false;
|
|
@@ -1611,278 +1518,253 @@ var createRenderer = function () {
|
|
|
1611
1518
|
var warning = WEBGL.getWebGLErrorMessage();
|
|
1612
1519
|
localContainer.appendChild(warning);
|
|
1613
1520
|
}
|
|
1614
|
-
return {"renderer":localRenderer, "container":localContainer};
|
|
1615
|
-
}
|
|
1616
1521
|
|
|
1617
|
-
|
|
1618
|
-
|
|
1522
|
+
return {
|
|
1523
|
+
"renderer": localRenderer,
|
|
1524
|
+
"container": localContainer
|
|
1525
|
+
};
|
|
1526
|
+
};
|
|
1527
|
+
|
|
1528
|
+
var RendererModule = function RendererModule() {
|
|
1529
|
+
__webpack_require__("6aa6").BaseModule.call(this);
|
|
1530
|
+
|
|
1619
1531
|
this.scene = undefined;
|
|
1620
|
-
this.toolTip = undefined;
|
|
1621
1532
|
this.rendererContainer = undefined;
|
|
1622
1533
|
this.displayArea = undefined;
|
|
1623
|
-
this.graphicsHighlight = new (__webpack_require__("
|
|
1534
|
+
this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
|
|
1624
1535
|
this.zincRenderer = null;
|
|
1625
1536
|
this.selectedScreenCoordinates = new THREE.Vector3();
|
|
1626
1537
|
this.selectedCenter = undefined;
|
|
1627
|
-
}
|
|
1628
|
-
|
|
1629
|
-
RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
|
|
1538
|
+
};
|
|
1630
1539
|
|
|
1540
|
+
RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
|
|
1631
1541
|
/**
|
|
1632
1542
|
* This function will get the the first intersected object with name or
|
|
1633
1543
|
* the first glyph object with name.
|
|
1634
1544
|
*/
|
|
1635
|
-
RendererModule.prototype.getIntersectedObject = function(intersects) {
|
|
1636
|
-
if (intersects) {
|
|
1637
|
-
for (var i = 0; i < intersects.length; i++) {
|
|
1638
|
-
if (intersects[i] !== undefined) {
|
|
1639
|
-
if (intersects[i].object &&
|
|
1640
|
-
intersects[i].object.userData &&
|
|
1641
|
-
intersects[i].object.userData.isZincObject &&
|
|
1642
|
-
(intersects[i].object.name ||
|
|
1643
|
-
intersects[i].object.userData.isMarker))
|
|
1644
|
-
return intersects[i];
|
|
1645
|
-
}
|
|
1646
|
-
}
|
|
1647
|
-
}
|
|
1648
|
-
return undefined;
|
|
1649
|
-
}
|
|
1650
1545
|
|
|
1651
|
-
RendererModule.prototype.
|
|
1652
|
-
|
|
1653
|
-
for (var i = 0; i <
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1546
|
+
RendererModule.prototype.getIntersectedObject = function (intersects) {
|
|
1547
|
+
if (intersects) {
|
|
1548
|
+
for (var i = 0; i < intersects.length; i++) {
|
|
1549
|
+
if (intersects[i] !== undefined) {
|
|
1550
|
+
if (intersects[i].object && intersects[i].object.userData && intersects[i].object.userData.isZincObject && (intersects[i].object.name || intersects[i].object.userData.isMarker)) return intersects[i];
|
|
1551
|
+
}
|
|
1552
|
+
}
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
return undefined;
|
|
1556
|
+
};
|
|
1557
|
+
|
|
1558
|
+
RendererModule.prototype.getAnnotationsFromObjects = function (objects) {
|
|
1559
|
+
var annotations = [];
|
|
1560
|
+
var count = 0;
|
|
1561
|
+
|
|
1562
|
+
for (var i = 0; i < objects.length; i++) {
|
|
1563
|
+
var zincObject = objects[i].userData;
|
|
1564
|
+
var annotation = undefined;
|
|
1565
|
+
|
|
1566
|
+
if (zincObject) {
|
|
1567
|
+
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1568
|
+
var glyphset = zincObject;
|
|
1569
|
+
if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
|
|
1570
|
+
annotation = glyphset.userData ? glyphset.userData[0] : undefined;
|
|
1571
|
+
|
|
1572
|
+
if (annotation && annotation.data) {
|
|
1573
|
+
if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
|
|
1574
|
+
}
|
|
1575
|
+
} else {
|
|
1576
|
+
annotation = zincObject.userData ? zincObject.userData[0] : undefined;
|
|
1577
|
+
|
|
1578
|
+
if (annotation && annotation.data) {
|
|
1579
|
+
annotation.data.id = objects[i].name;
|
|
1673
1580
|
}
|
|
1674
1581
|
}
|
|
1675
|
-
annotations[i] = annotation;
|
|
1676
1582
|
}
|
|
1677
|
-
return annotations;
|
|
1678
|
-
}
|
|
1679
1583
|
|
|
1680
|
-
|
|
1584
|
+
if (annotation) annotations[count++] = annotation;
|
|
1585
|
+
}
|
|
1586
|
+
|
|
1587
|
+
return annotations;
|
|
1588
|
+
};
|
|
1589
|
+
|
|
1590
|
+
RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
|
|
1681
1591
|
var changed = this.graphicsHighlight.setHighlighted(objects);
|
|
1592
|
+
|
|
1682
1593
|
if (changed && propagateChanges) {
|
|
1683
|
-
var eventType = __webpack_require__("
|
|
1594
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
|
|
1595
|
+
|
|
1684
1596
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1685
1597
|
this.publishChanges(annotations, eventType);
|
|
1686
1598
|
}
|
|
1687
|
-
return changed;
|
|
1688
|
-
}
|
|
1689
1599
|
|
|
1600
|
+
return changed;
|
|
1601
|
+
};
|
|
1690
1602
|
|
|
1691
|
-
RendererModule.prototype.setHighlightedByZincObject = function(
|
|
1692
|
-
zincObject, propagateChanges)
|
|
1693
|
-
|
|
1694
|
-
}
|
|
1603
|
+
RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
|
|
1604
|
+
return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1605
|
+
};
|
|
1695
1606
|
|
|
1696
|
-
RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
|
|
1697
|
-
if (zincObjects &&
|
|
1607
|
+
RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
|
|
1608
|
+
if (zincObjects && zincObjects.length > 0) {
|
|
1698
1609
|
var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
|
|
1699
|
-
|
|
1610
|
+
var newSelectedCenter = new THREE.Vector3();
|
|
1700
1611
|
boundingBox.getCenter(newSelectedCenter);
|
|
1701
|
-
if (this.selectedCenter == undefined)
|
|
1702
|
-
this.selectedCenter = newSelectedCenter;
|
|
1703
|
-
else {
|
|
1612
|
+
if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
|
|
1704
1613
|
this.selectedCenter.x = newSelectedCenter.x;
|
|
1705
1614
|
this.selectedCenter.y = newSelectedCenter.y;
|
|
1706
1615
|
}
|
|
1707
1616
|
} else {
|
|
1708
1617
|
this.selectedCenter = undefined;
|
|
1709
1618
|
}
|
|
1710
|
-
}
|
|
1619
|
+
};
|
|
1711
1620
|
|
|
1712
|
-
RendererModule.prototype.objectsToZincObjects = function(objects) {
|
|
1621
|
+
RendererModule.prototype.objectsToZincObjects = function (objects) {
|
|
1713
1622
|
var zincObjects = [];
|
|
1623
|
+
|
|
1714
1624
|
for (var i = 0; i < objects.length; i++) {
|
|
1715
1625
|
var zincObject = objects[i].userData;
|
|
1626
|
+
|
|
1716
1627
|
if (zincObject) {
|
|
1717
1628
|
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1718
1629
|
var glyphset = zincObject;
|
|
1719
|
-
if (zincObject.isGlyph)
|
|
1720
|
-
|
|
1721
|
-
zincObjects. push(glyphset);
|
|
1630
|
+
if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
|
|
1631
|
+
zincObjects.push(glyphset);
|
|
1722
1632
|
} else {
|
|
1723
|
-
zincObjects.
|
|
1633
|
+
zincObjects.push(zincObject);
|
|
1724
1634
|
}
|
|
1725
1635
|
}
|
|
1726
1636
|
}
|
|
1727
|
-
return zincObjects;
|
|
1728
|
-
}
|
|
1729
1637
|
|
|
1638
|
+
return zincObjects;
|
|
1639
|
+
};
|
|
1730
1640
|
|
|
1731
|
-
RendererModule.prototype.setSelectedByObjects = function(
|
|
1732
|
-
objects, propagateChanges) {
|
|
1641
|
+
RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
|
|
1733
1642
|
var changed = this.graphicsHighlight.setSelected(objects);
|
|
1643
|
+
|
|
1734
1644
|
if (changed) {
|
|
1735
1645
|
var zincObjects = this.objectsToZincObjects(objects);
|
|
1736
1646
|
this.setupLiveCoordinates(zincObjects);
|
|
1647
|
+
|
|
1737
1648
|
if (propagateChanges) {
|
|
1738
|
-
var eventType = __webpack_require__("
|
|
1649
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
|
|
1650
|
+
|
|
1739
1651
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1740
1652
|
this.publishChanges(annotations, eventType);
|
|
1741
1653
|
}
|
|
1742
1654
|
}
|
|
1655
|
+
|
|
1743
1656
|
return changed;
|
|
1744
|
-
}
|
|
1657
|
+
};
|
|
1745
1658
|
|
|
1746
|
-
RendererModule.prototype.setSelectedByZincObject = function(
|
|
1747
|
-
zincObject, propagateChanges) {
|
|
1659
|
+
RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
|
|
1748
1660
|
return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1749
|
-
}
|
|
1661
|
+
};
|
|
1750
1662
|
|
|
1751
|
-
var addGlyphToArray = function(objects) {
|
|
1752
|
-
return function(glyph) {
|
|
1663
|
+
var addGlyphToArray = function addGlyphToArray(objects) {
|
|
1664
|
+
return function (glyph) {
|
|
1753
1665
|
objects.push(glyph.getMesh());
|
|
1754
|
-
}
|
|
1755
|
-
}
|
|
1666
|
+
};
|
|
1667
|
+
};
|
|
1756
1668
|
|
|
1757
|
-
RendererModule.prototype.findObjectsByGroupName = function(groupName) {
|
|
1669
|
+
RendererModule.prototype.findObjectsByGroupName = function (groupName) {
|
|
1758
1670
|
var geometries = this.scene.findGeometriesWithGroupName(groupName);
|
|
1759
1671
|
var objects = [];
|
|
1760
|
-
|
|
1672
|
+
|
|
1673
|
+
for (var i = 0; i < geometries.length; i++) {
|
|
1761
1674
|
objects.push(geometries[i].morph);
|
|
1762
1675
|
}
|
|
1676
|
+
|
|
1763
1677
|
var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
|
|
1764
|
-
|
|
1765
|
-
|
|
1678
|
+
|
|
1679
|
+
for (var _i = 0; _i < glyphsets.length; _i++) {
|
|
1680
|
+
glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
|
|
1766
1681
|
}
|
|
1767
|
-
|
|
1682
|
+
|
|
1768
1683
|
return objects;
|
|
1769
|
-
}
|
|
1684
|
+
};
|
|
1770
1685
|
|
|
1771
|
-
RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
|
|
1686
|
+
RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
|
|
1772
1687
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1773
1688
|
return this.setHighlightedByObjects(objects, propagateChanges);
|
|
1774
|
-
}
|
|
1689
|
+
};
|
|
1775
1690
|
|
|
1776
|
-
RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
|
|
1691
|
+
RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
|
|
1777
1692
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1778
1693
|
return this.setSelectedByObjects(objects, propagateChanges);
|
|
1779
|
-
}
|
|
1694
|
+
};
|
|
1780
1695
|
|
|
1781
|
-
RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
|
|
1696
|
+
RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
|
|
1782
1697
|
var colour = new THREE.Color(backgroundColourString);
|
|
1698
|
+
|
|
1783
1699
|
if (this.zincRenderer) {
|
|
1784
1700
|
var internalRenderer = this.zincRenderer.getThreeJSRenderer();
|
|
1785
|
-
internalRenderer.setClearColor(
|
|
1701
|
+
internalRenderer.setClearColor(colour, 1);
|
|
1786
1702
|
}
|
|
1787
|
-
}
|
|
1703
|
+
};
|
|
1788
1704
|
|
|
1789
|
-
RendererModule.prototype.resetView = function() {
|
|
1790
|
-
if (this.zincRenderer)
|
|
1791
|
-
|
|
1792
|
-
}
|
|
1793
|
-
|
|
1794
|
-
RendererModule.prototype.viewAll = function() {
|
|
1795
|
-
if (this.zincRenderer)
|
|
1796
|
-
this.zincRenderer.viewAll();
|
|
1797
|
-
}
|
|
1705
|
+
RendererModule.prototype.resetView = function () {
|
|
1706
|
+
if (this.zincRenderer) this.zincRenderer.resetView();
|
|
1707
|
+
};
|
|
1798
1708
|
|
|
1709
|
+
RendererModule.prototype.viewAll = function () {
|
|
1710
|
+
if (this.zincRenderer) this.zincRenderer.viewAll();
|
|
1711
|
+
};
|
|
1799
1712
|
/**
|
|
1800
1713
|
* Start the animation and let the renderer to processs with
|
|
1801
1714
|
* time progression
|
|
1802
1715
|
*/
|
|
1803
|
-
RendererModule.prototype.playAnimation = function(flag) {
|
|
1804
|
-
if (this.zincRenderer)
|
|
1805
|
-
this.zincRenderer.playAnimation = flag;
|
|
1806
|
-
}
|
|
1807
1716
|
|
|
1717
|
+
|
|
1718
|
+
RendererModule.prototype.playAnimation = function (flag) {
|
|
1719
|
+
if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
|
|
1720
|
+
};
|
|
1808
1721
|
/**
|
|
1809
1722
|
* Set the speed of playback
|
|
1810
1723
|
*/
|
|
1811
|
-
RendererModule.prototype.setPlayRate = function(value) {
|
|
1812
|
-
if (this.zincRenderer)
|
|
1813
|
-
this.zincRenderer.setPlayRate(value);
|
|
1814
|
-
}
|
|
1815
1724
|
|
|
1725
|
+
|
|
1726
|
+
RendererModule.prototype.setPlayRate = function (value) {
|
|
1727
|
+
if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
|
|
1728
|
+
};
|
|
1816
1729
|
/**
|
|
1817
1730
|
* Get the speed of playback
|
|
1818
1731
|
*/
|
|
1819
|
-
RendererModule.prototype.getPlayRate = function(value) {
|
|
1820
|
-
if (this.zincRenderer)
|
|
1821
|
-
return this.zincRenderer.getPlayRate();
|
|
1822
|
-
else
|
|
1823
|
-
return 0.0;
|
|
1824
|
-
}
|
|
1825
|
-
|
|
1826
|
-
/** Initialise everything in the renderer, including the 3D renderer,
|
|
1827
|
-
* and picker for the 3D renderer.
|
|
1828
|
-
*
|
|
1829
|
-
*/
|
|
1830
|
-
RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
|
|
1831
|
-
if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
|
|
1832
|
-
var returnedValue = createRenderer();
|
|
1833
|
-
this.zincRenderer = returnedValue["renderer"];
|
|
1834
|
-
this.rendererContainer = returnedValue["container"];
|
|
1835
|
-
}
|
|
1836
|
-
if (displayAreaIn) {
|
|
1837
|
-
this.displayArea = displayAreaIn;
|
|
1838
|
-
this.displayArea.appendChild( this.rendererContainer );
|
|
1839
|
-
if (this.zincRenderer) {
|
|
1840
|
-
this.zincRenderer.animate();
|
|
1841
|
-
if (this.toolTip === undefined)
|
|
1842
|
-
this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
|
|
1843
|
-
}
|
|
1844
|
-
}
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
|
-
RendererModule.prototype.destroy = function() {
|
|
1848
|
-
if (this.zincRenderer) {
|
|
1849
|
-
this.zincRenderer.dispose();
|
|
1850
|
-
this.zincRenderer.getThreeJSRenderer().dispose();
|
|
1851
|
-
this.zincRenderer = undefined;
|
|
1852
|
-
}
|
|
1853
|
-
(__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
|
|
1854
|
-
}
|
|
1855
|
-
|
|
1856
|
-
exports.RendererModule = RendererModule;
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
/***/ }),
|
|
1860
|
-
|
|
1861
|
-
/***/ "7c81":
|
|
1862
|
-
/***/ (function(module, exports) {
|
|
1863
|
-
|
|
1864
|
-
module.exports = require("core-js/modules/es.array.splice");
|
|
1865
|
-
|
|
1866
|
-
/***/ }),
|
|
1867
1732
|
|
|
1868
|
-
/***/ "7d9b":
|
|
1869
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1870
1733
|
|
|
1871
|
-
|
|
1734
|
+
RendererModule.prototype.getPlayRate = function (value) {
|
|
1735
|
+
if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
|
|
1736
|
+
};
|
|
1737
|
+
/** Initialise everything in the renderer, including the 3D renderer,
|
|
1738
|
+
* and picker for the 3D renderer.
|
|
1739
|
+
*
|
|
1740
|
+
*/
|
|
1872
1741
|
|
|
1873
|
-
/***/ }),
|
|
1874
1742
|
|
|
1875
|
-
|
|
1876
|
-
|
|
1743
|
+
RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
|
|
1744
|
+
if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
|
|
1745
|
+
var returnedValue = createRenderer();
|
|
1746
|
+
this.zincRenderer = returnedValue["renderer"];
|
|
1747
|
+
this.rendererContainer = returnedValue["container"];
|
|
1748
|
+
}
|
|
1877
1749
|
|
|
1878
|
-
|
|
1750
|
+
if (displayAreaIn) {
|
|
1751
|
+
this.displayArea = displayAreaIn;
|
|
1752
|
+
this.displayArea.appendChild(this.rendererContainer);
|
|
1753
|
+
if (this.zincRenderer) this.zincRenderer.animate();
|
|
1754
|
+
}
|
|
1755
|
+
};
|
|
1879
1756
|
|
|
1880
|
-
|
|
1757
|
+
RendererModule.prototype.destroy = function () {
|
|
1758
|
+
if (this.zincRenderer) {
|
|
1759
|
+
this.zincRenderer.dispose();
|
|
1760
|
+
this.zincRenderer.getThreeJSRenderer().dispose();
|
|
1761
|
+
this.zincRenderer = undefined;
|
|
1762
|
+
}
|
|
1881
1763
|
|
|
1882
|
-
|
|
1883
|
-
|
|
1764
|
+
__webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
|
|
1765
|
+
};
|
|
1884
1766
|
|
|
1885
|
-
|
|
1767
|
+
exports.RendererModule = RendererModule;
|
|
1886
1768
|
|
|
1887
1769
|
/***/ }),
|
|
1888
1770
|
|
|
@@ -1912,146 +1794,6 @@ module.exports = require("element-ui/lib/tabs");
|
|
|
1912
1794
|
|
|
1913
1795
|
module.exports = require("core-js/modules/es.array.iterator");
|
|
1914
1796
|
|
|
1915
|
-
/***/ }),
|
|
1916
|
-
|
|
1917
|
-
/***/ "8cec":
|
|
1918
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1919
|
-
|
|
1920
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
1921
|
-
|
|
1922
|
-
/**
|
|
1923
|
-
* This module manages highlighted and selected objects in 3D modules.
|
|
1924
|
-
*
|
|
1925
|
-
* @class
|
|
1926
|
-
* @returns {exports.GraphicsHighlight}
|
|
1927
|
-
*/
|
|
1928
|
-
exports.GraphicsHighlight = function() {
|
|
1929
|
-
var currentHighlightedObjects = [];
|
|
1930
|
-
var currentSelectedObjects = [];
|
|
1931
|
-
this.highlightColour = 0x0000FF;
|
|
1932
|
-
this.selectColour = 0x00FF00;
|
|
1933
|
-
this.originalColour = 0x000000;
|
|
1934
|
-
var _this = this;
|
|
1935
|
-
|
|
1936
|
-
var isDifferent = function(array1, array2) {
|
|
1937
|
-
if ((array1.length == 0) && (array2.length == 0))
|
|
1938
|
-
return false;
|
|
1939
|
-
|
|
1940
|
-
for (var i = 0; i < array1.length; i++) {
|
|
1941
|
-
var matched = false;
|
|
1942
|
-
for (var j = 0; j < array2.length; j++) {
|
|
1943
|
-
if (array1[i] === array2[j]) {
|
|
1944
|
-
matched = true;
|
|
1945
|
-
}
|
|
1946
|
-
}
|
|
1947
|
-
if (!matched)
|
|
1948
|
-
return true;
|
|
1949
|
-
}
|
|
1950
|
-
for (var i = 0; i < array2.length; i++) {
|
|
1951
|
-
var matched = false;
|
|
1952
|
-
for (var j = 0; j < array1.length; j++) {
|
|
1953
|
-
if (array2[i] === array1[j]) {
|
|
1954
|
-
matched = true;
|
|
1955
|
-
}
|
|
1956
|
-
}
|
|
1957
|
-
if (!matched)
|
|
1958
|
-
return true;
|
|
1959
|
-
}
|
|
1960
|
-
return false;
|
|
1961
|
-
}
|
|
1962
|
-
|
|
1963
|
-
var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
|
|
1964
|
-
var unmatchingObjects = [];
|
|
1965
|
-
if (objectsArray2.length == 0)
|
|
1966
|
-
return objectsArray1;
|
|
1967
|
-
for (var i = 0; i < objectsArray1.length; i++) {
|
|
1968
|
-
var matched = false;
|
|
1969
|
-
for (var j = 0; j < objectsArray2.length; j++) {
|
|
1970
|
-
if (objectsArray1[i] === objectsArray2[j]) {
|
|
1971
|
-
matched = true;
|
|
1972
|
-
}
|
|
1973
|
-
}
|
|
1974
|
-
if (!matched)
|
|
1975
|
-
unmatchingObjects.push(objectsArray1[i]);
|
|
1976
|
-
}
|
|
1977
|
-
return unmatchingObjects;
|
|
1978
|
-
}
|
|
1979
|
-
|
|
1980
|
-
this.setHighlighted = function(objects) {
|
|
1981
|
-
var previousHighlightedObjects = currentHighlightedObjects;
|
|
1982
|
-
_this.resetHighlighted();
|
|
1983
|
-
// Selected object cannot be highlighted
|
|
1984
|
-
var array = getUnmatchingObjects(objects, currentSelectedObjects);
|
|
1985
|
-
var fullList = getFullListOfObjects(array);
|
|
1986
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
1987
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
1988
|
-
fullList[i].material.emissive.setHex(_this.highlightColour);
|
|
1989
|
-
}
|
|
1990
|
-
currentHighlightedObjects = array;
|
|
1991
|
-
return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
|
|
1992
|
-
}
|
|
1993
|
-
|
|
1994
|
-
this.setSelected = function(objects) {
|
|
1995
|
-
// first find highlighted object that are not selected
|
|
1996
|
-
var previousHSelectedObjects = currentSelectedObjects;
|
|
1997
|
-
var array = getUnmatchingObjects(currentHighlightedObjects, objects);
|
|
1998
|
-
currentHighlightedObjects = array;
|
|
1999
|
-
_this.resetSelected();
|
|
2000
|
-
var fullList = getFullListOfObjects(objects);
|
|
2001
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2002
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
2003
|
-
fullList[i].material.emissive.setHex(_this.selectColour);
|
|
2004
|
-
}
|
|
2005
|
-
currentSelectedObjects = objects;
|
|
2006
|
-
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
|
|
2007
|
-
}
|
|
2008
|
-
|
|
2009
|
-
var getFullListOfObjects = function(objects) {
|
|
2010
|
-
let fullList = [];
|
|
2011
|
-
for (var i = 0; i < objects.length; i++) {
|
|
2012
|
-
if (objects[i].material)
|
|
2013
|
-
fullList.push(objects[i]);
|
|
2014
|
-
}
|
|
2015
|
-
return fullList;
|
|
2016
|
-
}
|
|
2017
|
-
|
|
2018
|
-
this.resetHighlighted = function() {
|
|
2019
|
-
let fullList = getFullListOfObjects(currentHighlightedObjects);
|
|
2020
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2021
|
-
if (fullList[i] && fullList[i].material) {
|
|
2022
|
-
if (fullList[i].material.emissive)
|
|
2023
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
2024
|
-
if (fullList[i].material.depthFunc)
|
|
2025
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2026
|
-
}
|
|
2027
|
-
}
|
|
2028
|
-
currentHighlightedObjects = [];
|
|
2029
|
-
}
|
|
2030
|
-
|
|
2031
|
-
this.resetSelected = function() {
|
|
2032
|
-
let fullList = getFullListOfObjects(currentSelectedObjects);
|
|
2033
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2034
|
-
if (fullList[i] && fullList[i].material) {
|
|
2035
|
-
if (fullList[i].material.emissive)
|
|
2036
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
2037
|
-
if (fullList[i].material.depthFunc)
|
|
2038
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2039
|
-
}
|
|
2040
|
-
}
|
|
2041
|
-
currentSelectedObjects = [];
|
|
2042
|
-
}
|
|
2043
|
-
|
|
2044
|
-
this.getSelected = function() {
|
|
2045
|
-
return currentSelectedObjects;
|
|
2046
|
-
}
|
|
2047
|
-
|
|
2048
|
-
this.reset = function() {
|
|
2049
|
-
_this.resetSelected();
|
|
2050
|
-
_this.resetHighlighted();
|
|
2051
|
-
}
|
|
2052
|
-
}
|
|
2053
|
-
|
|
2054
|
-
|
|
2055
1797
|
/***/ }),
|
|
2056
1798
|
|
|
2057
1799
|
/***/ "8f11":
|
|
@@ -2089,6 +1831,17 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
|
|
|
2089
1831
|
|
|
2090
1832
|
/***/ }),
|
|
2091
1833
|
|
|
1834
|
+
/***/ "984d":
|
|
1835
|
+
/***/ (function(module, exports) {
|
|
1836
|
+
|
|
1837
|
+
exports.annotation = function () {
|
|
1838
|
+
this.type = "anatomical";
|
|
1839
|
+
this.data = undefined;
|
|
1840
|
+
this.isAnnotation = true;
|
|
1841
|
+
};
|
|
1842
|
+
|
|
1843
|
+
/***/ }),
|
|
1844
|
+
|
|
2092
1845
|
/***/ "9985":
|
|
2093
1846
|
/***/ (function(module, exports) {
|
|
2094
1847
|
|
|
@@ -2103,6 +1856,82 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
|
|
|
2103
1856
|
|
|
2104
1857
|
/***/ }),
|
|
2105
1858
|
|
|
1859
|
+
/***/ "9b21":
|
|
1860
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1861
|
+
|
|
1862
|
+
__webpack_require__("7c81");
|
|
1863
|
+
|
|
1864
|
+
var EVENT_TYPE = {
|
|
1865
|
+
ALL: 0,
|
|
1866
|
+
SELECTED: 1,
|
|
1867
|
+
HIGHLIGHTED: 2
|
|
1868
|
+
};
|
|
1869
|
+
|
|
1870
|
+
var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
|
|
1871
|
+
this.eventType = eventTypeIn;
|
|
1872
|
+
this.identifiers = identifiersIn;
|
|
1873
|
+
};
|
|
1874
|
+
|
|
1875
|
+
var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
|
|
1876
|
+
};
|
|
1877
|
+
|
|
1878
|
+
var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
|
|
1879
|
+
this.targetedID = [];
|
|
1880
|
+
var subscriber = subscriberIn;
|
|
1881
|
+
var callback = callbackIn;
|
|
1882
|
+
this.targetEventType = eventType;
|
|
1883
|
+
|
|
1884
|
+
var _this = this;
|
|
1885
|
+
|
|
1886
|
+
if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
|
|
1887
|
+
|
|
1888
|
+
this.getEventType = function () {
|
|
1889
|
+
return eventType;
|
|
1890
|
+
};
|
|
1891
|
+
|
|
1892
|
+
this.notify = function (source, eventType, ids) {
|
|
1893
|
+
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
|
|
1894
|
+
//should support different type of id e.g lyph, name, fmas...
|
|
1895
|
+
//need a function that finds all relavant ids
|
|
1896
|
+
var event = new SelectionEvent(eventType, ids);
|
|
1897
|
+
callback(event);
|
|
1898
|
+
}
|
|
1899
|
+
};
|
|
1900
|
+
};
|
|
1901
|
+
|
|
1902
|
+
exports.EventNotifier = function () {
|
|
1903
|
+
var subscriptions = [];
|
|
1904
|
+
|
|
1905
|
+
this.publish = function (source, eventType, id) {
|
|
1906
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1907
|
+
subscriptions[i].notify(source, eventType, id);
|
|
1908
|
+
}
|
|
1909
|
+
};
|
|
1910
|
+
|
|
1911
|
+
this.subscribe = function (subscriber, callbackFunction, eventType) {
|
|
1912
|
+
if (typeof callbackFunction === "function") {
|
|
1913
|
+
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
1914
|
+
subscriptions.push(subscription);
|
|
1915
|
+
return subscription;
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
return undefined;
|
|
1919
|
+
};
|
|
1920
|
+
|
|
1921
|
+
this.unsubscribe = function (subscription) {
|
|
1922
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1923
|
+
if (subscription === subscriptions[i]) {
|
|
1924
|
+
subscriptions.splice(i, 1);
|
|
1925
|
+
return;
|
|
1926
|
+
}
|
|
1927
|
+
}
|
|
1928
|
+
};
|
|
1929
|
+
};
|
|
1930
|
+
|
|
1931
|
+
exports.EVENT_TYPE = EVENT_TYPE;
|
|
1932
|
+
|
|
1933
|
+
/***/ }),
|
|
1934
|
+
|
|
2106
1935
|
/***/ "9bb0":
|
|
2107
1936
|
/***/ (function(module, exports) {
|
|
2108
1937
|
|
|
@@ -2110,14 +1939,13 @@ module.exports = require("@soda/get-current-script");
|
|
|
2110
1939
|
|
|
2111
1940
|
/***/ }),
|
|
2112
1941
|
|
|
2113
|
-
/***/ "
|
|
2114
|
-
/***/ (function(module,
|
|
1942
|
+
/***/ "a1d1":
|
|
1943
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
2115
1944
|
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
}
|
|
1945
|
+
"use strict";
|
|
1946
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_226a06e2_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("44bd");
|
|
1947
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_226a06e2_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_ScaffoldVuer_vue_vue_type_style_index_0_id_226a06e2_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
1948
|
+
/* unused harmony reexport * */
|
|
2121
1949
|
|
|
2122
1950
|
|
|
2123
1951
|
/***/ }),
|
|
@@ -2182,13 +2010,6 @@ module.exports = require("element-ui/lib/icon");
|
|
|
2182
2010
|
|
|
2183
2011
|
/***/ }),
|
|
2184
2012
|
|
|
2185
|
-
/***/ "b723":
|
|
2186
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
2187
|
-
|
|
2188
|
-
// extracted by mini-css-extract-plugin
|
|
2189
|
-
|
|
2190
|
-
/***/ }),
|
|
2191
|
-
|
|
2192
2013
|
/***/ "b777":
|
|
2193
2014
|
/***/ (function(module, exports) {
|
|
2194
2015
|
|
|
@@ -2224,10 +2045,84 @@ module.exports = require("element-ui/lib/option");
|
|
|
2224
2045
|
|
|
2225
2046
|
/***/ }),
|
|
2226
2047
|
|
|
2227
|
-
/***/ "
|
|
2048
|
+
/***/ "cf41":
|
|
2049
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
2050
|
+
|
|
2051
|
+
__webpack_require__("51f7");
|
|
2052
|
+
|
|
2053
|
+
__webpack_require__("bfab");
|
|
2054
|
+
|
|
2055
|
+
/**
|
|
2056
|
+
* @author alteredq / http://alteredqualia.com/
|
|
2057
|
+
* @author mr.doob / http://mrdoob.com/
|
|
2058
|
+
*/
|
|
2059
|
+
exports.WEBGL = {
|
|
2060
|
+
isWebGLAvailable: function isWebGLAvailable() {
|
|
2061
|
+
try {
|
|
2062
|
+
var canvas = document.createElement('canvas');
|
|
2063
|
+
return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
|
|
2064
|
+
} catch (e) {
|
|
2065
|
+
return false;
|
|
2066
|
+
}
|
|
2067
|
+
},
|
|
2068
|
+
isWebGL2Available: function isWebGL2Available() {
|
|
2069
|
+
try {
|
|
2070
|
+
var canvas = document.createElement('canvas');
|
|
2071
|
+
return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
|
|
2072
|
+
} catch (e) {
|
|
2073
|
+
return false;
|
|
2074
|
+
}
|
|
2075
|
+
},
|
|
2076
|
+
getWebGLErrorMessage: function getWebGLErrorMessage() {
|
|
2077
|
+
return this.getErrorMessage(1);
|
|
2078
|
+
},
|
|
2079
|
+
getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
|
|
2080
|
+
return this.getErrorMessage(2);
|
|
2081
|
+
},
|
|
2082
|
+
getErrorMessage: function getErrorMessage(version) {
|
|
2083
|
+
var names = {
|
|
2084
|
+
1: 'WebGL',
|
|
2085
|
+
2: 'WebGL 2'
|
|
2086
|
+
};
|
|
2087
|
+
var contexts = {
|
|
2088
|
+
1: window.WebGLRenderingContext,
|
|
2089
|
+
2: window.WebGL2RenderingContext
|
|
2090
|
+
};
|
|
2091
|
+
var message = 'This module requires <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#008">$1</a> support but your $0 does not seem to support it.';
|
|
2092
|
+
var element = document.createElement('div');
|
|
2093
|
+
element.id = 'webglmessage';
|
|
2094
|
+
element.style.fontFamily = 'monospace';
|
|
2095
|
+
element.style.fontSize = '20px';
|
|
2096
|
+
element.style.fontWeight = 'normal';
|
|
2097
|
+
element.style.textAlign = 'center';
|
|
2098
|
+
element.style.background = '#fff';
|
|
2099
|
+
element.style.color = '#000';
|
|
2100
|
+
element.style.padding = '1.5em';
|
|
2101
|
+
element.style.width = '400px';
|
|
2102
|
+
element.style.margin = '5em auto 0';
|
|
2103
|
+
|
|
2104
|
+
if (contexts[version]) {
|
|
2105
|
+
message = message.replace('$0', 'graphics card');
|
|
2106
|
+
} else {
|
|
2107
|
+
message = message.replace('$0', 'browser');
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
message = message.replace('$1', names[version]);
|
|
2111
|
+
element.innerHTML = message;
|
|
2112
|
+
return element;
|
|
2113
|
+
}
|
|
2114
|
+
};
|
|
2115
|
+
|
|
2116
|
+
/***/ }),
|
|
2117
|
+
|
|
2118
|
+
/***/ "da60":
|
|
2228
2119
|
/***/ (function(module, exports) {
|
|
2229
2120
|
|
|
2230
|
-
|
|
2121
|
+
function _readOnlyError(name) {
|
|
2122
|
+
throw new Error("\"" + name + "\" is read-only");
|
|
2123
|
+
}
|
|
2124
|
+
|
|
2125
|
+
module.exports = _readOnlyError;
|
|
2231
2126
|
|
|
2232
2127
|
/***/ }),
|
|
2233
2128
|
|
|
@@ -2279,12 +2174,12 @@ if (typeof window !== 'undefined') {
|
|
|
2279
2174
|
// Indicate to webpack that this file can be concatenated
|
|
2280
2175
|
/* harmony default export */ var setPublicPath = (null);
|
|
2281
2176
|
|
|
2282
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2283
|
-
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('
|
|
2177
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/ScaffoldVuer.vue?vue&type=template&id=226a06e2&scoped=true&
|
|
2178
|
+
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('map-svg-sprite-color'),_c('div',{ref:"display",staticStyle:{"height":"100%","width":"100%"},attrs:{"id":"organsDisplayArea","tabindex":"-1"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayUI && !_vm.isTransitioning),expression:"displayUI && !isTransitioning"}]},[(_vm.displayWarning)?_c('el-popover',{ref:"warningPopover",attrs:{"content":_vm.warningMessage,"placement":"right","append-to-body":false,"trigger":"manual","popper-class":"warning-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], "value", $$v)},expression:"hoverVisabilities[6].value"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:"popover",rawName:"v-popover:warningPopover",arg:"warningPopover"}],staticClass:"el-icon-warning warning-icon",on:{"mouseover":function($event){return _vm.showToolitip(6)},"mouseout":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:"warning-text"},[_vm._v("Beta")])]):_vm._e(),_c('el-popover',{ref:"checkBoxPopover",attrs:{"content":"Change region visibility","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], "value", $$v)},expression:"hoverVisabilities[5].value"}}),_c('TraditionalControls',{directives:[{name:"popover",rawName:"v-popover:checkBoxPopover",arg:"checkBoxPopover"}],ref:"traditionalControl",attrs:{"help-mode":_vm.helpMode,"module":_vm.$module,"show-colour-picker":_vm.showColourPicker},on:{"object-selected":_vm.objectSelected,"object-hovered":_vm.objectHovered,"drawer-toggled":_vm.drawerToggled}}),_c('div',{staticClass:"opacity-box"},[_c('OpacityControls',{ref:"opacityControl"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:"sliderPopover",attrs:{"content":"Move the slider to animate the region","placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper top-popper non-selectable"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], "value", $$v)},expression:"hoverVisabilities[4].value"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:"popover",rawName:"v-popover:sliderPopover",arg:"sliderPopover"}],staticClass:"time-slider-container",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{"type":"card"}},[_c('el-tab-pane',{attrs:{"label":"Animate scaffold"}},[_c('el-row',{staticClass:"tab-content"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:"icon-button video-button",attrs:{"icon":"pause"},nativeOn:{"click":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:"video-button icon-button",attrs:{"icon":"play"},nativeOn:{"click":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:"slider",attrs:{"min":0,"max":_vm.timeMax,"value":_vm.sceneData.currentTime / 100 * _vm.timeMax,"step":0.1,"tooltip-class":"time-slider-tooltip","format-tooltip":_vm.formatTooltip,"marks":_vm.timeStamps},on:{"input":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{"label":"Animation data"}},[_c('el-row',{staticClass:"tab-content"},[_c('div',{staticClass:"animation-data"},[_vm._v(" Original duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.orginalDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Animation duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.animateDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Playback speed "),_c('el-select',{staticClass:"select-box",attrs:{"popper-append-to-body":true,"value":_vm.currentSpeed,"placeholder":"Select","popper-class":"scaffold_viewer_dropdown"},on:{"change":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{"label":item.label,"value":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:"bottom-right-control"},[_c('el-popover',{attrs:{"content":"Zoom in","placement":"left","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper left-popper non-selectable"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], "value", $$v)},expression:"hoverVisabilities[0].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomIn",attrs:{"slot":"reference","icon":"zoomIn"},nativeOn:{"click":function($event){return _vm.zoomIn()},"mouseover":function($event){return _vm.showToolitip(0)},"mouseout":function($event){return _vm.hideToolitip(0)}},slot:"reference"})],1),_c('el-popover',{attrs:{"content":"Zoom out","placement":"top-end","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper popper-zoomout non-selectable"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], "value", $$v)},expression:"hoverVisabilities[1].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomOut",attrs:{"slot":"reference","icon":"zoomOut"},nativeOn:{"click":function($event){return _vm.zoomOut()},"mouseover":function($event){return _vm.showToolitip(1)},"mouseout":function($event){return _vm.hideToolitip(1)}},slot:"reference"})],1),_c('el-popover',{attrs:{"placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper non-selectable"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], "value", $$v)},expression:"hoverVisabilities[2].value"}},[_c('div',[_vm._v(" Fit to "),_c('br'),_vm._v(" window ")]),_c('map-svg-icon',{staticClass:"icon-button fitWindow",attrs:{"slot":"reference","icon":"fitWindow"},nativeOn:{"click":function($event){return _vm.fitWindow()},"mouseover":function($event){return _vm.showToolitip(2)},"mouseout":function($event){return _vm.hideToolitip(2)}},slot:"reference"})],1)],1),_c('el-popover',{ref:"backgroundPopover",attrs:{"placement":"top-start","width":"128","append-to-body":false,"trigger":"click","popper-class":"background-popper non-selectable"}},[_c('el-row',{staticClass:"backgroundText"},[_vm._v(" Change background ")]),_c('el-row',{staticClass:"backgroundChooser"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{"click":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{"content":"Change background color","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], "value", $$v)},expression:"hoverVisabilities[3].value"}},[_c('map-svg-icon',{directives:[{name:"popover",rawName:"v-popover:backgroundPopover",arg:"backgroundPopover"}],staticClass:"icon-button background-colour",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{"slot":"reference","icon":"changeBckgd"},nativeOn:{"mouseover":function($event){return _vm.showToolitip(3)},"mouseout":function($event){return _vm.hideToolitip(3)}},slot:"reference"})],1)],1)],1)}
|
|
2284
2179
|
var staticRenderFns = []
|
|
2285
2180
|
|
|
2286
2181
|
|
|
2287
|
-
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=
|
|
2182
|
+
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=226a06e2&scoped=true&
|
|
2288
2183
|
|
|
2289
2184
|
// EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
|
|
2290
2185
|
var es_array_for_each_ = __webpack_require__("139f");
|
|
@@ -2383,7 +2278,7 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
|
|
|
2383
2278
|
var external_vue_ = __webpack_require__("8bbf");
|
|
2384
2279
|
var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
|
|
2385
2280
|
|
|
2386
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2281
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&
|
|
2387
2282
|
var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:"control",staticClass:"opacity-control"},[_c('el-drawer',{staticClass:"drawer-content",attrs:{"custom-class":"my-drawer","visible":_vm.drawerOpen,"append-to-body":false,"modal-append-to-body":false,"size":"300","with-header":false,"wrapper-closable":false,"modal":false},on:{"update:visible":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:"tab-button close",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-right"})]):_vm._e(),_c('el-container',{staticClass:"opacity-container"},[_c('el-header',{staticClass:"header",attrs:{"height":"37px"}},[_c('div',[_vm._v("Opacity")])]),_c('el-main',{staticClass:"main"},[_c('div',{staticClass:"block"},[_c('span',{staticClass:"display"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:"my-slider",attrs:{"step":0.01,"min":0,"max":1,"format-tooltip":_vm.formatTooltip,"show-tooltip":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, "opacity", $$v)},expression:"material.opacity"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:"tab-button open",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})]):_vm._e()],1):_vm._e()}
|
|
2388
2283
|
var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
|
|
2389
2284
|
|
|
@@ -2684,13 +2579,13 @@ var component = normalizeComponent(
|
|
|
2684
2579
|
)
|
|
2685
2580
|
|
|
2686
2581
|
/* harmony default export */ var OpacityControls = (component.exports);
|
|
2687
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2688
|
-
var
|
|
2582
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"73d52850-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&
|
|
2583
|
+
var TraditionalControlsvue_type_template_id_335c5764_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"traditional-location",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:"traditional-container"},[_c('el-row',[_c('el-col',{attrs:{"span":12}},[_c('div',{staticClass:"regions-display-text"},[_vm._v(" Regions ")])]),_c('el-col',{attrs:{"span":12}},[_c('el-checkbox',{staticClass:"all-checkbox",attrs:{"indeterminate":_vm.isIndeterminate},on:{"change":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:"checkAll"}},[_vm._v(" Display all ")])],1)],1),_c('el-checkbox-group',{staticClass:"checkbox-group",attrs:{"size":"small"},on:{"change":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:"checkedItems"}},[_c('div',{staticClass:"checkbox-group-inner"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{"label":item}},[_c('div',{staticClass:"checkbox-container"},[_c('el-checkbox',{staticClass:"my-checkbox",class:{ activeItem: _vm.activeRegion === item,
|
|
2689
2584
|
hoverItem: _vm.hoverRegion === item },attrs:{"label":item,"checked":true},on:{"change":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{"click":function($event){return _vm.itemClicked(item, $event)},"mouseover":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{"value":_vm.getColour(item),"size":"small","popper-class":_vm.myPopperClass},on:{"change":function($event){return _vm.setColour(item, $event)}}}),_vm._v(" "+_vm._s(item)+" ")],1)],1)])}),1)])],1),_c('div',{staticClass:"drawer-button",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})])])}
|
|
2690
|
-
var
|
|
2585
|
+
var TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns = []
|
|
2691
2586
|
|
|
2692
2587
|
|
|
2693
|
-
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=
|
|
2588
|
+
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=335c5764&scoped=true&
|
|
2694
2589
|
|
|
2695
2590
|
// EXTERNAL MODULE: external "core-js/modules/es.array.concat"
|
|
2696
2591
|
var es_array_concat_ = __webpack_require__("18d2");
|
|
@@ -2962,7 +2857,6 @@ external_vue_default.a.use(row_default.a);
|
|
|
2962
2857
|
tmpArray = uniq(tmpArray.concat(this.module.sceneData.pointset));
|
|
2963
2858
|
this.sortedPrimitiveGroups = orderBy(tmpArray);
|
|
2964
2859
|
this.module.addOrganPartAddedCallback(this.organsAdded);
|
|
2965
|
-
this.module.graphicsHighlight.selectColour = 0x444444;
|
|
2966
2860
|
},
|
|
2967
2861
|
destroyed: function destroyed() {
|
|
2968
2862
|
this.sortedPrimitiveGroups = undefined;
|
|
@@ -2988,55 +2882,47 @@ external_vue_default.a.use(row_default.a);
|
|
|
2988
2882
|
/**
|
|
2989
2883
|
* Select a region by its name.
|
|
2990
2884
|
*/
|
|
2991
|
-
changeActiveByName: function changeActiveByName(name) {
|
|
2885
|
+
changeActiveByName: function changeActiveByName(name, propagate) {
|
|
2992
2886
|
var targetObject = this.getFirstZincObjectWithGroupName(name);
|
|
2993
2887
|
|
|
2994
2888
|
if (targetObject && targetObject.getVisibility()) {
|
|
2995
2889
|
this.activeRegion = name;
|
|
2996
|
-
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
* @property {object} target selected object.
|
|
3000
|
-
*/
|
|
3001
|
-
|
|
3002
|
-
this.$emit("object-selected", targetObject);
|
|
2890
|
+
this.$emit("object-selected", targetObject, propagate);
|
|
2891
|
+
} else {
|
|
2892
|
+
this.removeActive(propagate);
|
|
3003
2893
|
}
|
|
3004
2894
|
|
|
3005
|
-
this.removeHover();
|
|
2895
|
+
this.removeHover(propagate);
|
|
3006
2896
|
},
|
|
3007
2897
|
|
|
3008
2898
|
/**
|
|
3009
2899
|
* Hover a region by its name.
|
|
3010
2900
|
*/
|
|
3011
|
-
changeHoverByName: function changeHoverByName(name) {
|
|
2901
|
+
changeHoverByName: function changeHoverByName(name, propagate) {
|
|
3012
2902
|
var targetObject = this.getFirstZincObjectWithGroupName(name);
|
|
3013
2903
|
|
|
3014
2904
|
if (targetObject) {
|
|
3015
2905
|
this.hoverRegion = name;
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
* @property {object} target hovered object.
|
|
3020
|
-
*/
|
|
3021
|
-
|
|
3022
|
-
this.$emit("object-hovered", targetObject);
|
|
2906
|
+
this.$emit("object-hovered", targetObject, propagate);
|
|
2907
|
+
} else {
|
|
2908
|
+
this.removeHover(propagate);
|
|
3023
2909
|
}
|
|
3024
2910
|
},
|
|
3025
2911
|
|
|
3026
2912
|
/**
|
|
3027
2913
|
* Unselect the current selected region.
|
|
3028
2914
|
*/
|
|
3029
|
-
removeActive: function removeActive() {
|
|
2915
|
+
removeActive: function removeActive(propagate) {
|
|
3030
2916
|
this.activeRegion = "";
|
|
3031
|
-
this.$emit("object-selected", undefined);
|
|
2917
|
+
this.$emit("object-selected", undefined, propagate);
|
|
3032
2918
|
},
|
|
3033
2919
|
|
|
3034
2920
|
/**
|
|
3035
2921
|
* Unselect the current hover region.
|
|
3036
2922
|
*/
|
|
3037
|
-
removeHover: function removeHover() {
|
|
2923
|
+
removeHover: function removeHover(propagate) {
|
|
3038
2924
|
this.hoverRegion = "";
|
|
3039
|
-
this.$emit("object-hovered", undefined);
|
|
2925
|
+
this.$emit("object-hovered", undefined, propagate);
|
|
3040
2926
|
},
|
|
3041
2927
|
|
|
3042
2928
|
/**
|
|
@@ -3084,11 +2970,11 @@ external_vue_default.a.use(row_default.a);
|
|
|
3084
2970
|
}
|
|
3085
2971
|
},
|
|
3086
2972
|
checkboxHover: function checkboxHover(name) {
|
|
3087
|
-
this.changeHoverByName(name);
|
|
2973
|
+
this.changeHoverByName(name, true);
|
|
3088
2974
|
},
|
|
3089
2975
|
itemClicked: function itemClicked(name, event) {
|
|
3090
2976
|
if (!(event.target.classList.contains("el-checkbox__inner") || event.target.classList.contains("el-checkbox__original"))) {
|
|
3091
|
-
this.changeActiveByName(name);
|
|
2977
|
+
this.changeActiveByName(name, true);
|
|
3092
2978
|
event.preventDefault();
|
|
3093
2979
|
}
|
|
3094
2980
|
},
|
|
@@ -3115,11 +3001,11 @@ external_vue_default.a.use(row_default.a);
|
|
|
3115
3001
|
|
|
3116
3002
|
if (event == false) {
|
|
3117
3003
|
if (this.activeRegion === item) {
|
|
3118
|
-
this.removeActive();
|
|
3004
|
+
this.removeActive(true);
|
|
3119
3005
|
}
|
|
3120
3006
|
|
|
3121
3007
|
if (this.hoverRegion === item) {
|
|
3122
|
-
this.removeHover();
|
|
3008
|
+
this.removeHover(true);
|
|
3123
3009
|
}
|
|
3124
3010
|
}
|
|
3125
3011
|
},
|
|
@@ -3170,8 +3056,8 @@ external_vue_default.a.use(row_default.a);
|
|
|
3170
3056
|
});
|
|
3171
3057
|
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=script&lang=js&
|
|
3172
3058
|
/* harmony default export */ var components_TraditionalControlsvue_type_script_lang_js_ = (TraditionalControlsvue_type_script_lang_js_);
|
|
3173
|
-
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=
|
|
3174
|
-
var
|
|
3059
|
+
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=335c5764&scoped=true&lang=scss&
|
|
3060
|
+
var TraditionalControlsvue_type_style_index_0_id_335c5764_scoped_true_lang_scss_ = __webpack_require__("3a59");
|
|
3175
3061
|
|
|
3176
3062
|
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=1&lang=css&
|
|
3177
3063
|
var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("add8");
|
|
@@ -3188,11 +3074,11 @@ var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("a
|
|
|
3188
3074
|
|
|
3189
3075
|
var TraditionalControls_component = normalizeComponent(
|
|
3190
3076
|
components_TraditionalControlsvue_type_script_lang_js_,
|
|
3191
|
-
|
|
3192
|
-
|
|
3077
|
+
TraditionalControlsvue_type_template_id_335c5764_scoped_true_render,
|
|
3078
|
+
TraditionalControlsvue_type_template_id_335c5764_scoped_true_staticRenderFns,
|
|
3193
3079
|
false,
|
|
3194
3080
|
null,
|
|
3195
|
-
"
|
|
3081
|
+
"335c5764",
|
|
3196
3082
|
null
|
|
3197
3083
|
|
|
3198
3084
|
)
|
|
@@ -3495,9 +3381,9 @@ external_vue_default.a.use(slider_default.a);
|
|
|
3495
3381
|
external_vue_default.a.use(tab_pane_default.a);
|
|
3496
3382
|
external_vue_default.a.use(tabs_default.a);
|
|
3497
3383
|
|
|
3498
|
-
var OrgansViewer = __webpack_require__("
|
|
3384
|
+
var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
|
|
3499
3385
|
|
|
3500
|
-
var EventNotifier = __webpack_require__("
|
|
3386
|
+
var EventNotifier = __webpack_require__("9b21").EventNotifier;
|
|
3501
3387
|
/**
|
|
3502
3388
|
* A vue component of the scaffold viewer.
|
|
3503
3389
|
*
|
|
@@ -3510,8 +3396,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3510
3396
|
name: "ScaffoldVuer",
|
|
3511
3397
|
components: {
|
|
3512
3398
|
OpacityControls: OpacityControls,
|
|
3513
|
-
|
|
3514
|
-
|
|
3399
|
+
MapSvgIcon: svg_sprite_["MapSvgIcon"],
|
|
3400
|
+
MapSvgSpriteColor: svg_sprite_["MapSvgSpriteColor"],
|
|
3515
3401
|
TraditionalControls: TraditionalControls
|
|
3516
3402
|
},
|
|
3517
3403
|
props: {
|
|
@@ -3774,7 +3660,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3774
3660
|
this.$module.addOrganPartAddedCallback(this.organsAdded);
|
|
3775
3661
|
this.$module.initialiseRenderer(this.$refs.display);
|
|
3776
3662
|
this.toggleRendering(this.render);
|
|
3777
|
-
this.$module.toolTip = undefined;
|
|
3778
3663
|
this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
|
|
3779
3664
|
this.defaultRate = this.$module.getPlayRate();
|
|
3780
3665
|
},
|
|
@@ -3907,7 +3792,11 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3907
3792
|
var box = this.$module.scene.getBoundingBoxOfZincObjects(objects);
|
|
3908
3793
|
|
|
3909
3794
|
if (box) {
|
|
3910
|
-
this.$module.
|
|
3795
|
+
if (this.$module.isSyncControl()) {
|
|
3796
|
+
this.$module.setSyncControlZoomToBox(box);
|
|
3797
|
+
} else {
|
|
3798
|
+
this.$module.scene.viewAllWithBoundingBox(box);
|
|
3799
|
+
}
|
|
3911
3800
|
}
|
|
3912
3801
|
}
|
|
3913
3802
|
},
|
|
@@ -3934,6 +3823,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3934
3823
|
}
|
|
3935
3824
|
}
|
|
3936
3825
|
},
|
|
3826
|
+
getRendererInfo: function getRendererInfo() {
|
|
3827
|
+
if (this.$module.zincRenderer) {
|
|
3828
|
+
return this.$module.zincRenderer.getThreeJSRenderer().info;
|
|
3829
|
+
}
|
|
3830
|
+
|
|
3831
|
+
return undefined;
|
|
3832
|
+
},
|
|
3937
3833
|
|
|
3938
3834
|
/**
|
|
3939
3835
|
* Function used to rotate the scene.
|
|
@@ -3960,9 +3856,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3960
3856
|
if (this.$refs.traditionalControl) {
|
|
3961
3857
|
if (event.identifiers[0]) {
|
|
3962
3858
|
var id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
|
|
3963
|
-
this.$refs.traditionalControl.changeActiveByName(id);
|
|
3859
|
+
this.$refs.traditionalControl.changeActiveByName(id, true);
|
|
3964
3860
|
} else {
|
|
3965
|
-
this.$refs.traditionalControl.removeActive();
|
|
3861
|
+
this.$refs.traditionalControl.removeActive(true);
|
|
3966
3862
|
}
|
|
3967
3863
|
}
|
|
3968
3864
|
/**
|
|
@@ -3979,8 +3875,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3979
3875
|
if (event.identifiers[0]) {
|
|
3980
3876
|
var _id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
|
|
3981
3877
|
|
|
3982
|
-
this.$refs.traditionalControl.changeHoverByName(_id);
|
|
3983
|
-
} else this.$refs.traditionalControl.removeHover();
|
|
3878
|
+
this.$refs.traditionalControl.changeHoverByName(_id, true);
|
|
3879
|
+
} else this.$refs.traditionalControl.removeHover(true);
|
|
3984
3880
|
}
|
|
3985
3881
|
/**
|
|
3986
3882
|
* Triggers when an object has been highlighted
|
|
@@ -4027,30 +3923,48 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4027
3923
|
},
|
|
4028
3924
|
|
|
4029
3925
|
/**
|
|
4030
|
-
* Set the selected zinc object
|
|
3926
|
+
* A callback used by children components. Set the selected zinc object
|
|
4031
3927
|
*
|
|
4032
3928
|
* @param {object} object Zinc object
|
|
4033
3929
|
*/
|
|
4034
|
-
objectSelected: function objectSelected(object) {
|
|
3930
|
+
objectSelected: function objectSelected(object, propagate) {
|
|
4035
3931
|
if (object !== this.selectedObject) {
|
|
4036
3932
|
this.selectedObject = object;
|
|
4037
3933
|
this.$refs.opacityControl.setObject(this.selectedObject);
|
|
4038
|
-
if (object) this.$module.setSelectedByZincObject(object,
|
|
3934
|
+
if (object) this.$module.setSelectedByZincObject(object, propagate);else this.$module.setSelectedByObjects([], propagate);
|
|
4039
3935
|
}
|
|
4040
3936
|
},
|
|
4041
3937
|
|
|
4042
3938
|
/**
|
|
4043
|
-
* Set the highlighted zinc object
|
|
3939
|
+
* A callback used by children components. Set the highlighted zinc object
|
|
4044
3940
|
*
|
|
4045
3941
|
* @param {object} object Zinc object
|
|
4046
3942
|
*/
|
|
4047
|
-
objectHovered: function objectHovered(object) {
|
|
3943
|
+
objectHovered: function objectHovered(object, propagate) {
|
|
4048
3944
|
if (object !== this.hoveredObject) {
|
|
4049
3945
|
this.hoveredObject = object;
|
|
4050
|
-
if (object) this.$module.setHighlightedByZincObject(object,
|
|
3946
|
+
if (object) this.$module.setHighlightedByZincObject(object, propagate);else this.$module.setHighlightedByObjects([], propagate);
|
|
4051
3947
|
}
|
|
4052
3948
|
},
|
|
4053
3949
|
|
|
3950
|
+
/**
|
|
3951
|
+
* Set the selected by name.
|
|
3952
|
+
*
|
|
3953
|
+
* @param {name} name Name of the region
|
|
3954
|
+
*/
|
|
3955
|
+
changeActiveByName: function changeActiveByName(name, propagate) {
|
|
3956
|
+
if (name === undefined) this.$refs.traditionalControl.removeActive(propagate);else this.$refs.traditionalControl.changeActiveByName(name, propagate);
|
|
3957
|
+
},
|
|
3958
|
+
|
|
3959
|
+
/**
|
|
3960
|
+
* Set the highlighted by name.
|
|
3961
|
+
*
|
|
3962
|
+
* @param {name} name Name of the region
|
|
3963
|
+
*/
|
|
3964
|
+
changeHighlightedByName: function changeHighlightedByName(name, propagate) {
|
|
3965
|
+
if (name === undefined) this.$refs.traditionalControl.removeHover(propagate);else this.$refs.traditionalControl.changeHoverByName(name, propagate);
|
|
3966
|
+
},
|
|
3967
|
+
|
|
4054
3968
|
/**
|
|
4055
3969
|
* Start the animation.
|
|
4056
3970
|
*
|
|
@@ -4213,6 +4127,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4213
4127
|
}
|
|
4214
4128
|
}
|
|
4215
4129
|
},
|
|
4130
|
+
exportGLTF: function exportGLTF(binary) {
|
|
4131
|
+
return this.$module.scene.exportGLTF(binary);
|
|
4132
|
+
},
|
|
4216
4133
|
|
|
4217
4134
|
/**
|
|
4218
4135
|
* Function used for reading in new scaffold metadata and a custom
|
|
@@ -4263,7 +4180,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4263
4180
|
|
|
4264
4181
|
/**
|
|
4265
4182
|
* Callback using ResizeObserver.
|
|
4266
|
-
|
|
4267
4183
|
*/
|
|
4268
4184
|
adjustLayout: function adjustLayout() {
|
|
4269
4185
|
var width = this.$refs.scaffoldContainer.clientWidth;
|
|
@@ -4288,13 +4204,21 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4288
4204
|
if (this.$module.zincRenderer) {
|
|
4289
4205
|
this.$module.zincRenderer.onWindowResize();
|
|
4290
4206
|
}
|
|
4207
|
+
},
|
|
4208
|
+
syncControlCallback: function syncControlCallback() {
|
|
4209
|
+
var payload = this.$module.NDCCameraControl.getPanZoom();
|
|
4210
|
+
this.$emit("scaffold-navigated", payload);
|
|
4211
|
+
},
|
|
4212
|
+
toggleSyncControl: function toggleSyncControl(flag) {
|
|
4213
|
+
this.$module.toggleSyncControl(flag);
|
|
4214
|
+
this.$module.setSyncControlCallback(this.syncControlCallback);
|
|
4291
4215
|
}
|
|
4292
4216
|
}
|
|
4293
4217
|
});
|
|
4294
4218
|
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
|
|
4295
4219
|
/* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
|
|
4296
|
-
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=
|
|
4297
|
-
var
|
|
4220
|
+
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=226a06e2&scoped=true&lang=scss&
|
|
4221
|
+
var ScaffoldVuervue_type_style_index_0_id_226a06e2_scoped_true_lang_scss_ = __webpack_require__("a1d1");
|
|
4298
4222
|
|
|
4299
4223
|
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
|
|
4300
4224
|
var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
|
|
@@ -4315,7 +4239,7 @@ var ScaffoldVuer_component = normalizeComponent(
|
|
|
4315
4239
|
staticRenderFns,
|
|
4316
4240
|
false,
|
|
4317
4241
|
null,
|
|
4318
|
-
"
|
|
4242
|
+
"226a06e2",
|
|
4319
4243
|
null
|
|
4320
4244
|
|
|
4321
4245
|
)
|