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