@abi-software/scaffoldvuer 0.1.5-1.beta.1 → 0.1.5-1.beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/scaffoldvuer.common.js +1246 -1510
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +1246 -1510
- 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 +459 -399
- package/package.json +3 -4
- package/src/App.vue +48 -4
- package/src/components/ScaffoldVuer.vue +8 -5
- package/src/scripts/BaseModule.js +80 -0
- package/src/scripts/RendererModule.js +261 -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 +536 -0
- package/vue.config.js +1 -1
|
@@ -120,107 +120,6 @@ module.exports = require("element-ui/lib/select");
|
|
|
120
120
|
|
|
121
121
|
module.exports = require("element-ui/lib/theme-chalk/select.css");
|
|
122
122
|
|
|
123
|
-
/***/ }),
|
|
124
|
-
|
|
125
|
-
/***/ "10c9":
|
|
126
|
-
/***/ (function(module, exports) {
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* @author alteredq / http://alteredqualia.com/
|
|
130
|
-
* @author mr.doob / http://mrdoob.com/
|
|
131
|
-
*/
|
|
132
|
-
|
|
133
|
-
exports.WEBGL = {
|
|
134
|
-
|
|
135
|
-
isWebGLAvailable: function () {
|
|
136
|
-
|
|
137
|
-
try {
|
|
138
|
-
|
|
139
|
-
var canvas = document.createElement( 'canvas' );
|
|
140
|
-
return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
|
|
141
|
-
|
|
142
|
-
} catch ( e ) {
|
|
143
|
-
|
|
144
|
-
return false;
|
|
145
|
-
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
isWebGL2Available: function () {
|
|
151
|
-
|
|
152
|
-
try {
|
|
153
|
-
|
|
154
|
-
var canvas = document.createElement( 'canvas' );
|
|
155
|
-
return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
|
|
156
|
-
|
|
157
|
-
} catch ( e ) {
|
|
158
|
-
|
|
159
|
-
return false;
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
},
|
|
164
|
-
|
|
165
|
-
getWebGLErrorMessage: function () {
|
|
166
|
-
|
|
167
|
-
return this.getErrorMessage( 1 );
|
|
168
|
-
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
getWebGL2ErrorMessage: function () {
|
|
172
|
-
|
|
173
|
-
return this.getErrorMessage( 2 );
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
|
|
177
|
-
getErrorMessage: function ( version ) {
|
|
178
|
-
|
|
179
|
-
var names = {
|
|
180
|
-
1: 'WebGL',
|
|
181
|
-
2: 'WebGL 2'
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
var contexts = {
|
|
185
|
-
1: window.WebGLRenderingContext,
|
|
186
|
-
2: window.WebGL2RenderingContext
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
var message = 'This module requires <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#008">$1</a> support but your $0 does not seem to support it.';
|
|
190
|
-
|
|
191
|
-
var element = document.createElement( 'div' );
|
|
192
|
-
element.id = 'webglmessage';
|
|
193
|
-
element.style.fontFamily = 'monospace';
|
|
194
|
-
element.style.fontSize = '20px';
|
|
195
|
-
element.style.fontWeight = 'normal';
|
|
196
|
-
element.style.textAlign = 'center';
|
|
197
|
-
element.style.background = '#fff';
|
|
198
|
-
element.style.color = '#000';
|
|
199
|
-
element.style.padding = '1.5em';
|
|
200
|
-
element.style.width = '400px';
|
|
201
|
-
element.style.margin = '5em auto 0';
|
|
202
|
-
|
|
203
|
-
if ( contexts[ version ] ) {
|
|
204
|
-
|
|
205
|
-
message = message.replace( '$0', 'graphics card' );
|
|
206
|
-
|
|
207
|
-
} else {
|
|
208
|
-
|
|
209
|
-
message = message.replace( '$0', 'browser' );
|
|
210
|
-
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
message = message.replace( '$1', names[ version ] );
|
|
214
|
-
|
|
215
|
-
element.innerHTML = message;
|
|
216
|
-
|
|
217
|
-
return element;
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
|
|
224
123
|
/***/ }),
|
|
225
124
|
|
|
226
125
|
/***/ "139f":
|
|
@@ -230,13 +129,6 @@ module.exports = require("core-js/modules/es.array.for-each");
|
|
|
230
129
|
|
|
231
130
|
/***/ }),
|
|
232
131
|
|
|
233
|
-
/***/ "1823":
|
|
234
|
-
/***/ (function(module, exports) {
|
|
235
|
-
|
|
236
|
-
module.exports = "precision highp float;\n\nuniform mat4 modelViewMatrix;\nuniform mat4 projectionMatrix;\n\nattribute vec3 position;\nattribute vec3 normal;\nattribute vec3 color;\nattribute vec2 uv;\nattribute vec3 position_1;\nattribute vec3 position_2;\nattribute vec2 uv_1;\nattribute vec2 uv_2;\n\nuniform float time;\nuniform float slide_pos;\nvarying vec2 vUv;\n\nvoid main() {\n\tvUv = uv;\n\t\n\tvec3 transformed_xi1 = position * vec3(1.0 - time) + position_1 * vec3(time);\n\t\n\tvec3 xi0_time_1 = vec3(position_1.x, position_1.y, 0.0);\n\tvec3 transformed_xi0 = position_2 * vec3(1.0 - time) + xi0_time_1 * vec3(time);\n\n\tvec3 transformed = vec3(transformed_xi0) * vec3(1.0 - slide_pos) + vec3(transformed_xi1) * vec3(slide_pos);\n\t\n\tvec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\n}\n"
|
|
237
|
-
|
|
238
|
-
/***/ }),
|
|
239
|
-
|
|
240
132
|
/***/ "18d2":
|
|
241
133
|
/***/ (function(module, exports) {
|
|
242
134
|
|
|
@@ -281,6 +173,24 @@ module.exports = require("core-js/modules/es.object.keys");
|
|
|
281
173
|
/* unused harmony reexport * */
|
|
282
174
|
|
|
283
175
|
|
|
176
|
+
/***/ }),
|
|
177
|
+
|
|
178
|
+
/***/ "22c1":
|
|
179
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
180
|
+
|
|
181
|
+
// extracted by mini-css-extract-plugin
|
|
182
|
+
|
|
183
|
+
/***/ }),
|
|
184
|
+
|
|
185
|
+
/***/ "27fc":
|
|
186
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
187
|
+
|
|
188
|
+
"use strict";
|
|
189
|
+
/* 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_3d37f502_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("22c1");
|
|
190
|
+
/* 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_3d37f502_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_3d37f502_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
191
|
+
/* unused harmony reexport * */
|
|
192
|
+
|
|
193
|
+
|
|
284
194
|
/***/ }),
|
|
285
195
|
|
|
286
196
|
/***/ "2a6f":
|
|
@@ -337,129 +247,6 @@ module.exports = require("element-ui/lib/theme-chalk/color-picker.css");
|
|
|
337
247
|
|
|
338
248
|
module.exports = require("element-ui/lib/drawer");
|
|
339
249
|
|
|
340
|
-
/***/ }),
|
|
341
|
-
|
|
342
|
-
/***/ "3966":
|
|
343
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
344
|
-
|
|
345
|
-
var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
|
|
346
|
-
|
|
347
|
-
var BaseModule = function() {
|
|
348
|
-
this.typeName = "Base Module";
|
|
349
|
-
this.instanceName = "default";
|
|
350
|
-
this.onChangedCallbacks = [];
|
|
351
|
-
this.messageFunction = undefined;
|
|
352
|
-
/** Notifier handle for informing other modules of any changes **/
|
|
353
|
-
this.eventNotifiers = [];
|
|
354
|
-
this.broadcastChannels = {};
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
BaseModule.prototype.setName = function(name) {
|
|
358
|
-
if (name && this.instanceName !== name) {
|
|
359
|
-
this.instanceName = name;
|
|
360
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
361
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
362
|
-
callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
|
|
368
|
-
if (ChannelName in this.broadcastChannels)
|
|
369
|
-
return false;
|
|
370
|
-
var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
|
|
371
|
-
this.broadcastChannels[ChannelName] = newChannel;
|
|
372
|
-
return true;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
|
|
376
|
-
if (ChannelName in this.broadcastChannels) {
|
|
377
|
-
this.broadcastChannels[ChannelName].close();
|
|
378
|
-
delete broadcastChannels[ChannelName];
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
BaseModule.prototype.settingsChanged = function() {
|
|
384
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
385
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
386
|
-
callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
BaseModule.prototype.exportSettings = function() {
|
|
391
|
-
var settings = {};
|
|
392
|
-
settings.dialog = this.typeName;
|
|
393
|
-
settings.name = this.instanceName;
|
|
394
|
-
return settings;
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
BaseModule.prototype.importSettings = function(settings) {
|
|
398
|
-
if (settings.dialog == this.typeName) {
|
|
399
|
-
this.setName(settings.name);
|
|
400
|
-
return true;
|
|
401
|
-
}
|
|
402
|
-
return false;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
BaseModule.prototype.publishChanges = function(annotations, eventType) {
|
|
406
|
-
for (var i = 0; i < this.eventNotifiers.length; i++) {
|
|
407
|
-
this.eventNotifiers[i].publish(this, eventType, annotations);
|
|
408
|
-
}
|
|
409
|
-
if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
|
|
410
|
-
if (annotations && annotations[0]) {
|
|
411
|
-
var annotation = annotations[0];
|
|
412
|
-
var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
|
|
413
|
-
for (var key in this.broadcastChannels) {
|
|
414
|
-
this.broadcastChannels[key].postMessage(data);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
BaseModule.prototype.setMessageFunction = function(functionIn) {
|
|
421
|
-
this.messageFunction = functionIn;
|
|
422
|
-
}
|
|
423
|
-
|
|
424
|
-
BaseModule.prototype.displayMessage = function(message) {
|
|
425
|
-
if (this.messageFunction)
|
|
426
|
-
this.messageFunction(message);
|
|
427
|
-
}
|
|
428
|
-
|
|
429
|
-
BaseModule.prototype.getName = function() {
|
|
430
|
-
return this.instanceName;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
BaseModule.prototype.destroy = function() {
|
|
434
|
-
//Make a temorary copy as the array may be altered during the loop
|
|
435
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
436
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
437
|
-
callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
delete this;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
BaseModule.prototype.addChangedCallback = function(callback) {
|
|
444
|
-
if (this.onChangedCallbacks.includes(callback) == false)
|
|
445
|
-
this.onChangedCallbacks.push(callback);
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
BaseModule.prototype.removeChangedCallback = function(callback) {
|
|
449
|
-
var index = this.onChangedCallbacks.indexOf(callback);
|
|
450
|
-
if (index > -1) {
|
|
451
|
-
this.onChangedCallbacks.splice(index, 1);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
BaseModule.prototype.addNotifier = function(eventNotifier) {
|
|
456
|
-
this.eventNotifiers.push(eventNotifier);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
exports.BaseModule = BaseModule;
|
|
460
|
-
exports.MODULE_CHANGE = MODULE_CHANGE;
|
|
461
|
-
|
|
462
|
-
|
|
463
250
|
/***/ }),
|
|
464
251
|
|
|
465
252
|
/***/ "429c":
|
|
@@ -488,24 +275,6 @@ module.exports = require("element-ui/lib/theme-chalk/drawer.css");
|
|
|
488
275
|
|
|
489
276
|
module.exports = require("lodash/uniq");
|
|
490
277
|
|
|
491
|
-
/***/ }),
|
|
492
|
-
|
|
493
|
-
/***/ "4e8a":
|
|
494
|
-
/***/ (function(module, exports) {
|
|
495
|
-
|
|
496
|
-
module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
|
|
497
|
-
|
|
498
|
-
/***/ }),
|
|
499
|
-
|
|
500
|
-
/***/ "4ed7":
|
|
501
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
502
|
-
|
|
503
|
-
"use strict";
|
|
504
|
-
/* 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_cc8106d6_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("98e2");
|
|
505
|
-
/* 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_cc8106d6_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_cc8106d6_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
506
|
-
/* unused harmony reexport * */
|
|
507
|
-
|
|
508
|
-
|
|
509
278
|
/***/ }),
|
|
510
279
|
|
|
511
280
|
/***/ "51c7":
|
|
@@ -529,139 +298,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
|
|
|
529
298
|
|
|
530
299
|
/***/ }),
|
|
531
300
|
|
|
532
|
-
/***/ "
|
|
533
|
-
/***/ (function(module, exports) {
|
|
534
|
-
|
|
535
|
-
var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
|
|
536
|
-
|
|
537
|
-
var SelectionEvent = function(eventTypeIn, identifiersIn) {
|
|
538
|
-
this.eventType = eventTypeIn;
|
|
539
|
-
this.identifiers = identifiersIn;
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
var returnFullID = function(sourceId) {
|
|
543
|
-
//return full annotations with all different name
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
var Subscription = function(subscriberIn, callbackIn, eventType) {
|
|
547
|
-
this.targetedID = [];
|
|
548
|
-
var subscriber = subscriberIn;
|
|
549
|
-
if (eventType === undefined)
|
|
550
|
-
this.targetEventType = EVENT_TYPE.ALL;
|
|
551
|
-
else
|
|
552
|
-
this.targetEventType = eventType;
|
|
553
|
-
var callback = callbackIn;
|
|
554
|
-
|
|
555
|
-
var _this = this;
|
|
556
|
-
|
|
557
|
-
this.getEventType = function() {
|
|
558
|
-
return eventType;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
this.notify = function(source, eventType, ids) {
|
|
562
|
-
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
|
|
563
|
-
_this.targetEventType === eventType)) {
|
|
564
|
-
//should support different type of id e.g lyph, name, fmas...
|
|
565
|
-
//need a function that finds all relavant ids
|
|
566
|
-
var event = new SelectionEvent(eventType, ids);
|
|
567
|
-
callback(event);
|
|
568
|
-
}
|
|
569
|
-
}
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
exports.EventNotifier = function() {
|
|
573
|
-
var events = [];
|
|
574
|
-
var subscriptions = [];
|
|
575
|
-
var _this = this;
|
|
576
|
-
|
|
577
|
-
this.publish = function(source, eventType, id) {
|
|
578
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
579
|
-
subscriptions[i].notify(source, eventType, id);
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
this.subscribe = function(subscriber, callbackFunction, eventType) {
|
|
584
|
-
if (typeof callbackFunction === "function") {
|
|
585
|
-
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
586
|
-
subscriptions.push(subscription);
|
|
587
|
-
return subscription;
|
|
588
|
-
}
|
|
589
|
-
return undefined;
|
|
590
|
-
}
|
|
591
|
-
|
|
592
|
-
this.unsubscribe = function(subscription) {
|
|
593
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
594
|
-
if (subscription === subscriptions[i]) {
|
|
595
|
-
subscriptions.splice(i, 1);
|
|
596
|
-
return;
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
exports.EVENT_TYPE = EVENT_TYPE;
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
/***/ }),
|
|
606
|
-
|
|
607
|
-
/***/ "55ee":
|
|
608
|
-
/***/ (function(module, exports) {
|
|
609
|
-
|
|
610
|
-
module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
|
|
611
|
-
|
|
612
|
-
/***/ }),
|
|
613
|
-
|
|
614
|
-
/***/ "5810":
|
|
301
|
+
/***/ "53d7":
|
|
615
302
|
/***/ (function(module, exports, __webpack_require__) {
|
|
616
303
|
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
/***/ }),
|
|
620
|
-
|
|
621
|
-
/***/ "5fef":
|
|
622
|
-
/***/ (function(module, exports) {
|
|
623
|
-
|
|
624
|
-
module.exports = require("core-js/modules/es.regexp.to-string");
|
|
625
|
-
|
|
626
|
-
/***/ }),
|
|
627
|
-
|
|
628
|
-
/***/ "6049":
|
|
629
|
-
/***/ (function(module, exports) {
|
|
630
|
-
|
|
631
|
-
module.exports = require("core-js/modules/es.symbol");
|
|
632
|
-
|
|
633
|
-
/***/ }),
|
|
634
|
-
|
|
635
|
-
/***/ "642d":
|
|
636
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
637
|
-
|
|
638
|
-
"use strict";
|
|
639
|
-
/* 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");
|
|
640
|
-
/* 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__);
|
|
641
|
-
/* unused harmony reexport * */
|
|
642
|
-
|
|
304
|
+
__webpack_require__("ab7e");
|
|
643
305
|
|
|
644
|
-
|
|
306
|
+
__webpack_require__("7c81");
|
|
645
307
|
|
|
646
|
-
|
|
647
|
-
/***/ (function(module, exports) {
|
|
308
|
+
__webpack_require__("bcd8");
|
|
648
309
|
|
|
649
|
-
|
|
310
|
+
__webpack_require__("2175");
|
|
650
311
|
|
|
651
|
-
|
|
312
|
+
__webpack_require__("fd48");
|
|
652
313
|
|
|
653
|
-
|
|
654
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
314
|
+
var _typeof = __webpack_require__("7037");
|
|
655
315
|
|
|
656
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
657
|
-
// Current model's associate data, data fields, external link, nerve map
|
|
316
|
+
var THREE = __webpack_require__("9206").THREE; // Current model's associate data, data fields, external link, nerve map
|
|
658
317
|
// informations,
|
|
659
318
|
// these are proived in the organsFileMap array.
|
|
660
|
-
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
var OrgansSceneData = function OrgansSceneData() {
|
|
661
322
|
this.currentName = "";
|
|
662
323
|
this.currentSystem = "";
|
|
663
324
|
this.currentPart = "";
|
|
664
|
-
this.currentSpecies
|
|
325
|
+
this.currentSpecies = "";
|
|
665
326
|
this.metaURL = "";
|
|
666
327
|
this.viewURL = "";
|
|
667
328
|
this.geometries = [];
|
|
@@ -670,12 +331,7 @@ var OrgansSceneData = function() {
|
|
|
670
331
|
this.pointsets = [];
|
|
671
332
|
this.currentTime = 0.0;
|
|
672
333
|
this.timeVarying = false;
|
|
673
|
-
|
|
674
|
-
// informations,
|
|
675
|
-
this.nerveMap = undefined;
|
|
676
|
-
this.nerveMapIsActive = false;
|
|
677
|
-
}
|
|
678
|
-
|
|
334
|
+
};
|
|
679
335
|
/**
|
|
680
336
|
* Viewer of 3D-organs models. Users can toggle on/off different views. Data is
|
|
681
337
|
* displayed instead if models are not available.
|
|
@@ -690,619 +346,870 @@ var OrgansSceneData = function() {
|
|
|
690
346
|
* @author Alan Wu
|
|
691
347
|
* @returns {PJP.OrgansViewer}
|
|
692
348
|
*/
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
var OrgansViewer = function OrgansViewer(ModelsLoaderIn) {
|
|
352
|
+
__webpack_require__("8278").RendererModule.call(this);
|
|
353
|
+
|
|
354
|
+
var _this = this;
|
|
355
|
+
|
|
356
|
+
var pickerScene = undefined;
|
|
357
|
+
this.sceneData = new OrgansSceneData();
|
|
358
|
+
var timeChangedCallbacks = new Array();
|
|
359
|
+
var sceneChangedCallbacks = new Array();
|
|
700
360
|
var organPartAddedCallbacks = new Array();
|
|
701
361
|
var finishDownloadCallback = undefined;
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
if (_this.scene)
|
|
717
|
-
duration = _this.scene.getDuration();
|
|
362
|
+
var modelsLoader = ModelsLoaderIn;
|
|
363
|
+
_this.typeName = "Organ Viewer";
|
|
364
|
+
|
|
365
|
+
this.getSceneData = function () {
|
|
366
|
+
return _this.sceneData;
|
|
367
|
+
};
|
|
368
|
+
/**
|
|
369
|
+
* Used to update internal timer in scene when time slider has changed.
|
|
370
|
+
*/
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
this.updateTime = function (value) {
|
|
374
|
+
var duration = 6000;
|
|
375
|
+
if (_this.scene) duration = _this.scene.getDuration();
|
|
718
376
|
var actualTime = value / 100.0 * duration;
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
_this.sceneData.currentTime = currentTime / duration * 100.0;
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
var postRenderSelectedCoordinatesUpdate = function() {
|
|
377
|
+
|
|
378
|
+
if (!_this.sceneData.nerveMapIsActive) {
|
|
379
|
+
if (pickerScene) pickerScene.setMorphsTime(actualTime);
|
|
380
|
+
if (_this.scene) _this.scene.setMorphsTime(actualTime);
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
_this.sceneData.currentTime = value;
|
|
384
|
+
};
|
|
385
|
+
/**
|
|
386
|
+
* Update the time slider and other renderers/scenes when time has changed.
|
|
387
|
+
*/
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
var preRenderTimeUpdate = function preRenderTimeUpdate() {
|
|
391
|
+
var duration = 3000;
|
|
392
|
+
if (_this.scene) duration = _this.scene.getDuration();
|
|
393
|
+
|
|
394
|
+
var currentTime = _this.zincRenderer.getCurrentTime();
|
|
395
|
+
|
|
396
|
+
for (var i = 0; i < timeChangedCallbacks.length; i++) {
|
|
397
|
+
timeChangedCallbacks[i](currentTime);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (!_this.sceneData.nerveMapIsActive && pickerScene) pickerScene.setMorphsTime(currentTime);
|
|
401
|
+
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setTime(currentTime / duration);
|
|
402
|
+
_this.sceneData.currentTime = currentTime / duration * 100.0;
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
var postRenderSelectedCoordinatesUpdate = function postRenderSelectedCoordinatesUpdate() {
|
|
752
406
|
if (_this.selectedCenter) {
|
|
753
|
-
|
|
407
|
+
var vector = new THREE.Vector3();
|
|
754
408
|
vector.copy(_this.selectedCenter);
|
|
409
|
+
|
|
755
410
|
var coord = _this.scene.vectorToScreenXY(vector);
|
|
411
|
+
|
|
756
412
|
_this.selectedScreenCoordinates.x = coord.x;
|
|
757
413
|
_this.selectedScreenCoordinates.y = coord.y;
|
|
758
414
|
}
|
|
415
|
+
};
|
|
416
|
+
|
|
417
|
+
var preRenderUpdateCallback = function preRenderUpdateCallback() {
|
|
418
|
+
return function () {
|
|
419
|
+
preRenderTimeUpdate();
|
|
420
|
+
};
|
|
421
|
+
};
|
|
422
|
+
|
|
423
|
+
var postRenderUpdateCallback = function postRenderUpdateCallback() {
|
|
424
|
+
return function () {
|
|
425
|
+
postRenderSelectedCoordinatesUpdate();
|
|
426
|
+
};
|
|
427
|
+
};
|
|
428
|
+
/**
|
|
429
|
+
* Add a callback which will be called when time has changed
|
|
430
|
+
*/
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
this.addTimeChangedCallback = function (callback) {
|
|
434
|
+
if (_typeof(callback === "function")) timeChangedCallbacks.push(callback);
|
|
435
|
+
};
|
|
436
|
+
|
|
437
|
+
this.setTexturePos = function (value) {
|
|
438
|
+
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader) _this.sceneData.nerveMap.additionalReader.setSliderPos(value);
|
|
439
|
+
};
|
|
440
|
+
|
|
441
|
+
this.addSceneChangedCallback = function (callback) {
|
|
442
|
+
if (_typeof(callback === "function")) {
|
|
443
|
+
sceneChangedCallbacks.push(callback);
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
this.addOrganPartAddedCallback = function (callback) {
|
|
448
|
+
if (_typeof(callback === "function")) organPartAddedCallbacks.push(callback);
|
|
449
|
+
};
|
|
450
|
+
|
|
451
|
+
this.setFinishDownloadCallback = function (callback) {
|
|
452
|
+
if (_typeof(callback === "function")) finishDownloadCallback = callback;
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
this.unsetFinishDownloadCallback = function () {
|
|
456
|
+
finishDownloadCallback = undefined;
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
this.getNamedObjectsToScreenCoordinates = function (name, camera) {
|
|
460
|
+
var vector = new THREE.Vector3();
|
|
461
|
+
vector.setFromMatrixPosition(obj.matrixWorld);
|
|
462
|
+
var widthHalf = width / 2;
|
|
463
|
+
var heightHalf = height / 2;
|
|
464
|
+
vector.project(camera);
|
|
465
|
+
vector.x = vector.x * widthHalf + widthHalf;
|
|
466
|
+
vector.y = -(vector.y * heightHalf) + heightHalf;
|
|
467
|
+
return vector;
|
|
468
|
+
};
|
|
469
|
+
|
|
470
|
+
var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
|
|
471
|
+
var id = undefined;
|
|
472
|
+
var intersectedObject = undefined;
|
|
473
|
+
|
|
474
|
+
if (intersected !== undefined) {
|
|
475
|
+
if (intersected.object.userData && intersected.object.userData.isMarker) {
|
|
476
|
+
intersectedObject = intersected.object.userData.parent.morph;
|
|
477
|
+
} else {
|
|
478
|
+
intersectedObject = intersected.object;
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
if (intersectedObject) {
|
|
482
|
+
if (intersectedObject.name) {
|
|
483
|
+
id = intersectedObject.name;
|
|
484
|
+
} else {
|
|
485
|
+
var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
|
|
486
|
+
|
|
487
|
+
if (annotations && annotations[0]) {
|
|
488
|
+
id = annotations[0].data.group;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
return {
|
|
495
|
+
"id": id,
|
|
496
|
+
"object": intersectedObject
|
|
497
|
+
};
|
|
498
|
+
};
|
|
499
|
+
/**
|
|
500
|
+
* Callback function when a pickable object has been picked. It will then
|
|
501
|
+
* call functions in tissueViewer and cellPanel to show corresponding
|
|
502
|
+
* informations.
|
|
503
|
+
*
|
|
504
|
+
* @callback
|
|
505
|
+
*/
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
var _pickingCallback = function _pickingCallback() {
|
|
509
|
+
return function (intersects, window_x, window_y) {
|
|
510
|
+
var intersected = _this.getIntersectedObject(intersects);
|
|
511
|
+
|
|
512
|
+
var idObject = getIdObjectFromIntersect(intersected);
|
|
513
|
+
|
|
514
|
+
if (idObject.id) {
|
|
515
|
+
if (idObject.object.userData.isGlyph) {
|
|
516
|
+
if (idObject.object.name) _this.setSelectedByObjects([idObject.object], true);else _this.setSelectedByZincObject(idObject.object.userData.getGlyphset(), true);
|
|
517
|
+
} else {
|
|
518
|
+
_this.setSelectedByObjects([idObject.object], true);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
return;
|
|
522
|
+
} else {
|
|
523
|
+
_this.setSelectedByObjects([], true);
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
};
|
|
527
|
+
/**
|
|
528
|
+
* Callback function when a pickable object has been hovered over.
|
|
529
|
+
*
|
|
530
|
+
* @callback
|
|
531
|
+
*/
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
var _hoverCallback = function _hoverCallback() {
|
|
535
|
+
return function (intersects, window_x, window_y) {
|
|
536
|
+
var intersected = _this.getIntersectedObject(intersects);
|
|
537
|
+
|
|
538
|
+
var idObject = getIdObjectFromIntersect(intersected);
|
|
539
|
+
|
|
540
|
+
if (idObject.id) {
|
|
541
|
+
_this.displayArea.style.cursor = "pointer";
|
|
542
|
+
|
|
543
|
+
_this.setHighlightedByObjects([idObject.object], true);
|
|
544
|
+
|
|
545
|
+
return;
|
|
546
|
+
} else {
|
|
547
|
+
_this.displayArea.style.cursor = "auto";
|
|
548
|
+
|
|
549
|
+
_this.setHighlightedByObjects([], true);
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
var changeOrganPartsVisibilityForScene = function changeOrganPartsVisibilityForScene(scene, name, value, type) {
|
|
555
|
+
if (type == "all" || type == "geometries") {
|
|
556
|
+
var geometries = scene.findGeometriesWithGroupName(name);
|
|
557
|
+
|
|
558
|
+
for (var i = 0; i < geometries.length; i++) {
|
|
559
|
+
geometries[i].setVisibility(value);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
if (type == "all" || type == "glyphsets") {
|
|
564
|
+
var glyphsets = scene.findGlyphsetsWithGroupName(name);
|
|
565
|
+
|
|
566
|
+
for (var _i = 0; _i < glyphsets.length; _i++) {
|
|
567
|
+
glyphsets[_i].setVisibility(value);
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
if (type == "all" || type == "pointsets") {
|
|
572
|
+
var pointsets = scene.findPointsetsWithGroupName(name);
|
|
573
|
+
|
|
574
|
+
for (var _i2 = 0; _i2 < pointsets.length; _i2++) {
|
|
575
|
+
pointsets[_i2].setVisibility(value);
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
if (type == "all" || type == "lines") {
|
|
580
|
+
var lines = scene.findLinesWithGroupName(name);
|
|
581
|
+
|
|
582
|
+
for (var _i3 = 0; _i3 < lines.length; _i3++) {
|
|
583
|
+
lines[_i3].setVisibility(value);
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
};
|
|
587
|
+
/**
|
|
588
|
+
* Change visibility for parts of the current scene.
|
|
589
|
+
*/
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
this.changeGeometriesVisibility = function (name, value) {
|
|
593
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
|
|
594
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
|
|
595
|
+
};
|
|
596
|
+
/**
|
|
597
|
+
* Change visibility for parts of the current scene.
|
|
598
|
+
*/
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
this.changeGlyphsetsVisibility = function (name, value) {
|
|
602
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
|
|
603
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
|
|
604
|
+
};
|
|
605
|
+
/**
|
|
606
|
+
* Change visibility for parts of the current scene.
|
|
607
|
+
*/
|
|
608
|
+
|
|
609
|
+
|
|
610
|
+
this.changeLinesVisibility = function (name, value) {
|
|
611
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
|
|
612
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
|
|
613
|
+
};
|
|
614
|
+
/**
|
|
615
|
+
* Change visibility for parts of the current scene.
|
|
616
|
+
*/
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
this.changePointsetsVisibility = function (name, value) {
|
|
620
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
|
|
621
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
|
|
622
|
+
};
|
|
623
|
+
/**
|
|
624
|
+
* Change visibility for parts of the current scene.
|
|
625
|
+
*/
|
|
626
|
+
|
|
627
|
+
|
|
628
|
+
this.changeOrganPartsVisibility = function (name, value, typeIn) {
|
|
629
|
+
var type = "all";
|
|
630
|
+
if (typeIn !== undefined) type = typeIn;
|
|
631
|
+
changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
|
|
632
|
+
if (pickerScene) changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
|
|
633
|
+
};
|
|
634
|
+
|
|
635
|
+
this.changeOrganPartsVisibilityCallback = function (name) {
|
|
636
|
+
return function (value) {
|
|
637
|
+
_this.changeOrganPartsVisibility(name, value);
|
|
638
|
+
};
|
|
639
|
+
};
|
|
640
|
+
|
|
641
|
+
this.changeBackgroundColour = function (backgroundColourString) {
|
|
642
|
+
var colour = new THREE.Color(backgroundColourString);
|
|
643
|
+
|
|
644
|
+
if (_this.zincRenderer) {
|
|
645
|
+
var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
|
|
646
|
+
|
|
647
|
+
internalRenderer.setClearColor(colour, 1);
|
|
648
|
+
}
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
var addOrganPartToSceneData = function addOrganPartToSceneData(zincObject) {
|
|
652
|
+
if (zincObject.groupName) {
|
|
653
|
+
if (zincObject.isGeometry) {
|
|
654
|
+
if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
|
|
655
|
+
_this.sceneData.geometries.push(zincObject.groupName);
|
|
656
|
+
}
|
|
657
|
+
} else if (zincObject.isGlyphset) {
|
|
658
|
+
if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
|
|
659
|
+
_this.sceneData.glyphsets.push(zincObject.groupName);
|
|
660
|
+
}
|
|
661
|
+
} else if (zincObject.isLines) {
|
|
662
|
+
if (!_this.sceneData.lines.includes(zincObject.groupName)) {
|
|
663
|
+
_this.sceneData.lines.push(zincObject.groupName);
|
|
664
|
+
}
|
|
665
|
+
} else if (zincObject.isPointset) {
|
|
666
|
+
if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
|
|
667
|
+
_this.sceneData.pointsets.push(zincObject.groupName);
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
};
|
|
672
|
+
|
|
673
|
+
var addOrganPart = function addOrganPart(systemName, partName, useDefautColour, zincObject) {
|
|
674
|
+
for (var i = 0; i < organPartAddedCallbacks.length; i++) {
|
|
675
|
+
organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
if (useDefautColour) modelsLoader.setGeometryColour(zincObject, systemName, partName);
|
|
679
|
+
addOrganPartToSceneData(zincObject);
|
|
680
|
+
var annotation = new (__webpack_require__("984d").annotation)();
|
|
681
|
+
annotation.data = {
|
|
682
|
+
species: _this.sceneData.currentSpecies,
|
|
683
|
+
system: systemName,
|
|
684
|
+
part: partName,
|
|
685
|
+
group: zincObject.groupName
|
|
686
|
+
};
|
|
687
|
+
zincObject.userData = [annotation];
|
|
688
|
+
};
|
|
689
|
+
/**
|
|
690
|
+
* New organs geometry has been added to the scene, add UIs and make
|
|
691
|
+
* sure the viewport is correct.
|
|
692
|
+
*/
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
var _addOrganPartCallback = function _addOrganPartCallback(systemName, partName, useDefautColour) {
|
|
696
|
+
return function (zincObject) {
|
|
697
|
+
addOrganPart(systemName, partName, useDefautColour, zincObject);
|
|
698
|
+
};
|
|
699
|
+
};
|
|
700
|
+
|
|
701
|
+
var downloadCompletedCallback = function downloadCompletedCallback() {
|
|
702
|
+
return function () {
|
|
703
|
+
_this.settingsChanged();
|
|
704
|
+
|
|
705
|
+
_this.sceneData.timeVarying = _this.scene.isTimeVarying();
|
|
706
|
+
if (finishDownloadCallback) finishDownloadCallback();
|
|
707
|
+
};
|
|
708
|
+
};
|
|
709
|
+
|
|
710
|
+
var singleItemDownloadCompletedCallback = function singleItemDownloadCompletedCallback(systemName, partName, useDefautColour) {
|
|
711
|
+
return function (geometry) {
|
|
712
|
+
addOrganPart(systemName, partName, useDefautColour, geometry);
|
|
713
|
+
|
|
714
|
+
_this.settingsChanged();
|
|
715
|
+
};
|
|
716
|
+
};
|
|
717
|
+
/**
|
|
718
|
+
* Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
|
|
719
|
+
* other activities of the organs.
|
|
720
|
+
*/
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
this.updateFieldvisibility = function (dataFields, value) {
|
|
724
|
+
for (var i = 0; i < dataFields.length; i++) {
|
|
725
|
+
if (value != i) {
|
|
726
|
+
var geometryName = dataFields[i].PartName;
|
|
727
|
+
|
|
728
|
+
_this.changeOrganPartsVisibility(geometryName, false);
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
if (value > -1) {
|
|
733
|
+
var partName = dataFields[value].PartName;
|
|
734
|
+
|
|
735
|
+
if (_this.scene.findGeometriesWithGroupName(partName).length > 0 || _this.scene.findGlyphsetsWithGroupName(partName).length > 0) {
|
|
736
|
+
_this.changeOrganPartsVisibility(partName, true);
|
|
737
|
+
} else {
|
|
738
|
+
var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
|
|
739
|
+
|
|
740
|
+
if (partDetails != undefined) {
|
|
741
|
+
_this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
}
|
|
745
|
+
};
|
|
746
|
+
/**
|
|
747
|
+
* Return an array containing name(s) of species that also contains the
|
|
748
|
+
* currently displayed organs.
|
|
749
|
+
*
|
|
750
|
+
* @returns {Array} containing species name
|
|
751
|
+
*/
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
this.getAvailableSpecies = function (currentSpecies, currentSystem, currentPart) {
|
|
755
|
+
var availableSpecies = new Array();
|
|
756
|
+
availableSpecies.push("none");
|
|
757
|
+
var keysArray = Object.keys(organsFileMap);
|
|
758
|
+
|
|
759
|
+
for (index in keysArray) {
|
|
760
|
+
var species = keysArray[index];
|
|
761
|
+
|
|
762
|
+
if (species != currentSpecies) {
|
|
763
|
+
if (organsFileMap[species].hasOwnProperty(currentSystem) && organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
|
|
764
|
+
availableSpecies.push(species);
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
return availableSpecies;
|
|
770
|
+
};
|
|
771
|
+
|
|
772
|
+
var setSceneData = function setSceneData(speciesName, systemName, partName, organsDetails) {
|
|
773
|
+
_this.sceneData.nerveMapIsActive = false;
|
|
774
|
+
_this.sceneData.nerveMap = undefined;
|
|
775
|
+
_this.sceneData.metaURL = "";
|
|
776
|
+
_this.sceneData.viewURL = "";
|
|
777
|
+
_this.sceneData.currentSpecies = speciesName;
|
|
778
|
+
_this.sceneData.currentSystem = systemName;
|
|
779
|
+
_this.sceneData.currentPart = partName;
|
|
780
|
+
_this.sceneData.currentTime = 0.0;
|
|
781
|
+
|
|
782
|
+
_this.sceneData.geometries.splice(0);
|
|
783
|
+
|
|
784
|
+
_this.sceneData.lines.splice(0);
|
|
785
|
+
|
|
786
|
+
_this.sceneData.glyphsets.splice(0);
|
|
787
|
+
|
|
788
|
+
_this.sceneData.pointsets.splice(0);
|
|
789
|
+
|
|
790
|
+
_this.sceneData.timeVarying = false; // This is used as title
|
|
791
|
+
|
|
792
|
+
var name = "";
|
|
793
|
+
if (speciesName) name = speciesName + "/";
|
|
794
|
+
if (systemName) name = systemName + "/";
|
|
795
|
+
if (partName) name = partName;
|
|
796
|
+
_this.sceneData.currentName = name;
|
|
797
|
+
};
|
|
798
|
+
|
|
799
|
+
this.loadOrgansFromURL = function (url, speciesName, systemName, partName, viewURL) {
|
|
800
|
+
if (_this.zincRenderer) {
|
|
801
|
+
if (partName && _this.sceneData.metaURL !== url) {
|
|
802
|
+
setSceneData(speciesName, systemName, partName, undefined);
|
|
803
|
+
var name = _this.sceneData.currentName;
|
|
804
|
+
|
|
805
|
+
var organScene = _this.zincRenderer.getSceneByName(name);
|
|
806
|
+
|
|
807
|
+
if (organScene) {
|
|
808
|
+
organScene.clearAll();
|
|
809
|
+
} else {
|
|
810
|
+
organScene = _this.zincRenderer.createScene(name);
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
for (var i = 0; i < sceneChangedCallbacks.length; i++) {
|
|
814
|
+
sceneChangedCallbacks[i](_this.sceneData);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
if (viewURL && viewURL != "") {
|
|
818
|
+
_this.sceneData.viewURL = viewURL;
|
|
819
|
+
organScene.loadViewURL(_this.sceneData.viewURL);
|
|
820
|
+
} else {
|
|
821
|
+
_this.sceneData.viewURL = undefined;
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
_this.sceneData.metaURL = url;
|
|
825
|
+
organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false), downloadCompletedCallback());
|
|
826
|
+
_this.scene = organScene;
|
|
827
|
+
|
|
828
|
+
_this.zincRenderer.setCurrentScene(organScene);
|
|
829
|
+
|
|
830
|
+
_this.graphicsHighlight.reset();
|
|
831
|
+
|
|
832
|
+
var zincCameraControl = organScene.getZincCameraControls();
|
|
833
|
+
zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
|
|
834
|
+
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
835
|
+
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
836
|
+
}
|
|
837
|
+
}
|
|
838
|
+
};
|
|
839
|
+
|
|
840
|
+
this.alignCameraWithSelectedObject = function (transitionTime) {
|
|
841
|
+
var objects = _this.graphicsHighlight.getSelected();
|
|
842
|
+
|
|
843
|
+
if (objects && objects[0] && objects[0].userData) {
|
|
844
|
+
_this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
|
|
845
|
+
}
|
|
846
|
+
};
|
|
847
|
+
|
|
848
|
+
this.exportSettings = function () {
|
|
849
|
+
var settings = {};
|
|
850
|
+
settings.name = _this.instanceName;
|
|
851
|
+
if (_this.sceneData.currentSystem) settings.system = _this.sceneData.currentSystem;
|
|
852
|
+
if (_this.sceneData.currentSpecies) settings.species = _this.sceneData.currentSpecies;
|
|
853
|
+
if (_this.sceneData.currentPart) settings.part = _this.sceneData.currentPart;
|
|
854
|
+
settings.metaURL = _this.sceneData.metaURL;
|
|
855
|
+
if (_this.sceneData.viewURL) settings.viewURL = _this.sceneData.viewURL;
|
|
856
|
+
settings.dialog = "Organ Viewer";
|
|
857
|
+
return settings;
|
|
858
|
+
};
|
|
859
|
+
|
|
860
|
+
this.importSettings = function (settings) {
|
|
861
|
+
if (settings && settings.dialog == this.typeName) {
|
|
862
|
+
_this.setName(settings.name);
|
|
863
|
+
|
|
864
|
+
if (settings.metaURL !== undefined && settings.metaURL != "") {
|
|
865
|
+
_this.loadOrgansFromURL(settings.metaURL, settings.species, settings.system, settings.part, settings.viewURL);
|
|
866
|
+
} else {
|
|
867
|
+
_this.loadOrgans(settings.species, settings.system, settings.part);
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
return true;
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
return false;
|
|
874
|
+
};
|
|
875
|
+
/**
|
|
876
|
+
* initialise loading of the html layout for the organs panel, this is
|
|
877
|
+
* called when the {@link PJP.OrgansViewer} is created.
|
|
878
|
+
*
|
|
879
|
+
* @async
|
|
880
|
+
*/
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
var initialise = function initialise() {
|
|
884
|
+
_this.initialiseRenderer(undefined);
|
|
885
|
+
|
|
886
|
+
if (_this.zincRenderer) {
|
|
887
|
+
_this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
|
|
888
|
+
|
|
889
|
+
_this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
|
|
890
|
+
}
|
|
891
|
+
};
|
|
892
|
+
|
|
893
|
+
initialise();
|
|
894
|
+
};
|
|
895
|
+
|
|
896
|
+
OrgansViewer.prototype = Object.create(__webpack_require__("8278").RendererModule.prototype);
|
|
897
|
+
exports.OrgansViewer = OrgansViewer;
|
|
898
|
+
|
|
899
|
+
/***/ }),
|
|
900
|
+
|
|
901
|
+
/***/ "55ee":
|
|
902
|
+
/***/ (function(module, exports) {
|
|
903
|
+
|
|
904
|
+
module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
|
|
905
|
+
|
|
906
|
+
/***/ }),
|
|
907
|
+
|
|
908
|
+
/***/ "5810":
|
|
909
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
910
|
+
|
|
911
|
+
// extracted by mini-css-extract-plugin
|
|
912
|
+
|
|
913
|
+
/***/ }),
|
|
914
|
+
|
|
915
|
+
/***/ "5ec5":
|
|
916
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
917
|
+
|
|
918
|
+
var THREE = __webpack_require__("9206").THREE;
|
|
919
|
+
/**
|
|
920
|
+
* This module manages highlighted and selected objects in 3D modules.
|
|
921
|
+
*
|
|
922
|
+
* @class
|
|
923
|
+
* @returns {exports.GraphicsHighlight}
|
|
924
|
+
*/
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
exports.GraphicsHighlight = function () {
|
|
928
|
+
var currentHighlightedObjects = [];
|
|
929
|
+
var currentSelectedObjects = [];
|
|
930
|
+
this.highlightColour = 0x0000FF;
|
|
931
|
+
this.selectColour = 0x00FF00;
|
|
932
|
+
this.originalColour = 0x000000;
|
|
933
|
+
|
|
934
|
+
var _this = this;
|
|
935
|
+
|
|
936
|
+
var isDifferent = function isDifferent(array1, array2) {
|
|
937
|
+
if (array1.length == 0 && array2.length == 0) return false;
|
|
938
|
+
|
|
939
|
+
for (var i = 0; i < array1.length; i++) {
|
|
940
|
+
var matched = false;
|
|
941
|
+
|
|
942
|
+
for (var j = 0; j < array2.length; j++) {
|
|
943
|
+
if (array1[i] === array2[j]) {
|
|
944
|
+
matched = true;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
|
|
948
|
+
if (!matched) return true;
|
|
949
|
+
}
|
|
950
|
+
|
|
951
|
+
for (var _i = 0; _i < array2.length; _i++) {
|
|
952
|
+
var _matched = false;
|
|
953
|
+
|
|
954
|
+
for (var _j = 0; _j < array1.length; _j++) {
|
|
955
|
+
if (array2[_i] === array1[_j]) {
|
|
956
|
+
_matched = true;
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
if (!_matched) return true;
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
return false;
|
|
964
|
+
};
|
|
965
|
+
|
|
966
|
+
var getUnmatchingObjects = function getUnmatchingObjects(objectsArray1, objectsArray2) {
|
|
967
|
+
var unmatchingObjects = [];
|
|
968
|
+
if (objectsArray2.length == 0) return objectsArray1;
|
|
969
|
+
|
|
970
|
+
for (var i = 0; i < objectsArray1.length; i++) {
|
|
971
|
+
var matched = false;
|
|
972
|
+
|
|
973
|
+
for (var j = 0; j < objectsArray2.length; j++) {
|
|
974
|
+
if (objectsArray1[i] === objectsArray2[j]) {
|
|
975
|
+
matched = true;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
|
|
979
|
+
if (!matched) unmatchingObjects.push(objectsArray1[i]);
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
return unmatchingObjects;
|
|
983
|
+
};
|
|
984
|
+
|
|
985
|
+
this.setHighlighted = function (objects) {
|
|
986
|
+
var previousHighlightedObjects = currentHighlightedObjects;
|
|
987
|
+
|
|
988
|
+
_this.resetHighlighted(); // Selected object cannot be highlighted
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
var array = getUnmatchingObjects(objects, currentSelectedObjects);
|
|
992
|
+
var fullList = getFullListOfObjects(array);
|
|
993
|
+
|
|
994
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
995
|
+
if (fullList[i] && fullList[i].material && fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.highlightColour);
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
currentHighlightedObjects = array;
|
|
999
|
+
return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
|
|
1000
|
+
};
|
|
1001
|
+
|
|
1002
|
+
this.setSelected = function (objects) {
|
|
1003
|
+
// first find highlighted object that are not selected
|
|
1004
|
+
var previousHSelectedObjects = currentSelectedObjects;
|
|
1005
|
+
var array = getUnmatchingObjects(currentHighlightedObjects, objects);
|
|
1006
|
+
currentHighlightedObjects = array;
|
|
1007
|
+
|
|
1008
|
+
_this.resetSelected();
|
|
1009
|
+
|
|
1010
|
+
var fullList = getFullListOfObjects(objects);
|
|
1011
|
+
|
|
1012
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1013
|
+
if (fullList[i] && fullList[i].material && fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.selectColour);
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
currentSelectedObjects = objects;
|
|
1017
|
+
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
|
|
1018
|
+
};
|
|
1019
|
+
|
|
1020
|
+
var getFullListOfObjects = function getFullListOfObjects(objects) {
|
|
1021
|
+
var fullList = [];
|
|
1022
|
+
|
|
1023
|
+
for (var i = 0; i < objects.length; i++) {
|
|
1024
|
+
if (objects[i].material) fullList.push(objects[i]);
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
return fullList;
|
|
1028
|
+
};
|
|
1029
|
+
|
|
1030
|
+
this.resetHighlighted = function () {
|
|
1031
|
+
var fullList = getFullListOfObjects(currentHighlightedObjects);
|
|
1032
|
+
|
|
1033
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1034
|
+
if (fullList[i] && fullList[i].material) {
|
|
1035
|
+
if (fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.originalColour);
|
|
1036
|
+
if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
|
|
1040
|
+
currentHighlightedObjects = [];
|
|
1041
|
+
};
|
|
1042
|
+
|
|
1043
|
+
this.resetSelected = function () {
|
|
1044
|
+
var fullList = getFullListOfObjects(currentSelectedObjects);
|
|
1045
|
+
|
|
1046
|
+
for (var i = 0; i < fullList.length; i++) {
|
|
1047
|
+
if (fullList[i] && fullList[i].material) {
|
|
1048
|
+
if (fullList[i].material.emissive) fullList[i].material.emissive.setHex(_this.originalColour);
|
|
1049
|
+
if (fullList[i].material.depthFunc) fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
currentSelectedObjects = [];
|
|
1054
|
+
};
|
|
1055
|
+
|
|
1056
|
+
this.getSelected = function () {
|
|
1057
|
+
return currentSelectedObjects;
|
|
1058
|
+
};
|
|
1059
|
+
|
|
1060
|
+
this.reset = function () {
|
|
1061
|
+
_this.resetSelected();
|
|
1062
|
+
|
|
1063
|
+
_this.resetHighlighted();
|
|
1064
|
+
};
|
|
1065
|
+
};
|
|
1066
|
+
|
|
1067
|
+
/***/ }),
|
|
1068
|
+
|
|
1069
|
+
/***/ "5fef":
|
|
1070
|
+
/***/ (function(module, exports) {
|
|
1071
|
+
|
|
1072
|
+
module.exports = require("core-js/modules/es.regexp.to-string");
|
|
1073
|
+
|
|
1074
|
+
/***/ }),
|
|
1075
|
+
|
|
1076
|
+
/***/ "6049":
|
|
1077
|
+
/***/ (function(module, exports) {
|
|
1078
|
+
|
|
1079
|
+
module.exports = require("core-js/modules/es.symbol");
|
|
1080
|
+
|
|
1081
|
+
/***/ }),
|
|
1082
|
+
|
|
1083
|
+
/***/ "642d":
|
|
1084
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
1085
|
+
|
|
1086
|
+
"use strict";
|
|
1087
|
+
/* 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");
|
|
1088
|
+
/* 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__);
|
|
1089
|
+
/* unused harmony reexport * */
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
/***/ }),
|
|
1093
|
+
|
|
1094
|
+
/***/ "6579":
|
|
1095
|
+
/***/ (function(module, exports) {
|
|
1096
|
+
|
|
1097
|
+
module.exports = require("core-js/modules/es.array.slice");
|
|
1098
|
+
|
|
1099
|
+
/***/ }),
|
|
1100
|
+
|
|
1101
|
+
/***/ "6814":
|
|
1102
|
+
/***/ (function(module, exports) {
|
|
1103
|
+
|
|
1104
|
+
module.exports = require("lodash/orderBy");
|
|
1105
|
+
|
|
1106
|
+
/***/ }),
|
|
1107
|
+
|
|
1108
|
+
/***/ "6aa6":
|
|
1109
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1110
|
+
|
|
1111
|
+
__webpack_require__("ab7e");
|
|
1112
|
+
|
|
1113
|
+
__webpack_require__("6bb1");
|
|
1114
|
+
|
|
1115
|
+
__webpack_require__("6579");
|
|
1116
|
+
|
|
1117
|
+
__webpack_require__("7c81");
|
|
1118
|
+
|
|
1119
|
+
__webpack_require__("bcd8");
|
|
1120
|
+
|
|
1121
|
+
__webpack_require__("fd48");
|
|
1122
|
+
|
|
1123
|
+
var MODULE_CHANGE = {
|
|
1124
|
+
ALL: 0,
|
|
1125
|
+
DESTROYED: 1,
|
|
1126
|
+
NAME_CHANGED: 2,
|
|
1127
|
+
SETTINGS_CHANGED: 3
|
|
1128
|
+
};
|
|
1129
|
+
|
|
1130
|
+
var BaseModule = function BaseModule() {
|
|
1131
|
+
this.typeName = "Base Module";
|
|
1132
|
+
this.instanceName = "default";
|
|
1133
|
+
this.onChangedCallbacks = [];
|
|
1134
|
+
/** Notifier handle for informing other modules of any changes **/
|
|
1135
|
+
|
|
1136
|
+
this.eventNotifiers = [];
|
|
1137
|
+
};
|
|
1138
|
+
|
|
1139
|
+
BaseModule.prototype.setName = function (name) {
|
|
1140
|
+
if (name && this.instanceName !== name) {
|
|
1141
|
+
this.instanceName = name;
|
|
1142
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1143
|
+
|
|
1144
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1145
|
+
callbackArray[i](this, MODULE_CHANGE.NAME_CHANGED);
|
|
1146
|
+
}
|
|
759
1147
|
}
|
|
760
|
-
|
|
761
|
-
var preRenderUpdateCallback = function() {
|
|
762
|
-
return function() {
|
|
763
|
-
preRenderTimeUpdate();
|
|
764
|
-
}
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
var postRenderUpdateCallback = function() {
|
|
768
|
-
return function() {
|
|
769
|
-
postRenderSelectedCoordinatesUpdate();
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
/**
|
|
774
|
-
* Add a callback which will be called when time has changed
|
|
775
|
-
*/
|
|
776
|
-
this.addTimeChangedCallback = function(callback) {
|
|
777
|
-
if (typeof(callback === "function"))
|
|
778
|
-
timeChangedCallbacks.push(callback);
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
this.setTexturePos = function(value) {
|
|
782
|
-
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
|
|
783
|
-
_this.sceneData.nerveMap.additionalReader.setSliderPos(value);
|
|
784
|
-
}
|
|
785
|
-
|
|
786
|
-
this.addLayoutUpdateRequiredCallback = function(callback) {
|
|
787
|
-
if (typeof(callback === "function")) {
|
|
788
|
-
layoutUpdateRequiredCallbacks.push(callback);
|
|
789
|
-
}
|
|
790
|
-
}
|
|
791
|
-
|
|
792
|
-
this.addSceneChangedCallback = function(callback) {
|
|
793
|
-
if (typeof(callback === "function")) {
|
|
794
|
-
sceneChangedCallbacks.push(callback);
|
|
795
|
-
}
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
this.addOrganPartAddedCallback = function(callback) {
|
|
799
|
-
if (typeof(callback === "function"))
|
|
800
|
-
organPartAddedCallbacks.push(callback);
|
|
801
|
-
}
|
|
1148
|
+
};
|
|
802
1149
|
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
finishDownloadCallback = callback;
|
|
806
|
-
}
|
|
1150
|
+
BaseModule.prototype.settingsChanged = function () {
|
|
1151
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
807
1152
|
|
|
808
|
-
|
|
809
|
-
|
|
1153
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1154
|
+
callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
|
|
810
1155
|
}
|
|
1156
|
+
};
|
|
811
1157
|
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
vector.x = ( vector.x * widthHalf ) + widthHalf;
|
|
819
|
-
vector.y = - ( vector.y * heightHalf ) + heightHalf;
|
|
820
|
-
return vector;
|
|
821
|
-
}
|
|
1158
|
+
BaseModule.prototype.exportSettings = function () {
|
|
1159
|
+
var settings = {};
|
|
1160
|
+
settings.dialog = this.typeName;
|
|
1161
|
+
settings.name = this.instanceName;
|
|
1162
|
+
return settings;
|
|
1163
|
+
};
|
|
822
1164
|
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
if (intersected.object.userData &&
|
|
828
|
-
intersected.object.userData.isMarker) {
|
|
829
|
-
intersectedObject = intersected.object.userData.parent.morph;
|
|
830
|
-
} else {
|
|
831
|
-
intersectedObject = intersected.object;
|
|
832
|
-
}
|
|
833
|
-
if (intersectedObject) {
|
|
834
|
-
if (intersectedObject.name) {
|
|
835
|
-
id = intersectedObject.name;
|
|
836
|
-
} else {
|
|
837
|
-
var annotations = _this.getAnnotationsFromObjects(
|
|
838
|
-
[intersectedObject]);
|
|
839
|
-
if (annotations && annotations[0]) {
|
|
840
|
-
id = annotations[0].data.group;
|
|
841
|
-
}
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
}
|
|
845
|
-
return {"id":id, "object":intersectedObject};
|
|
1165
|
+
BaseModule.prototype.importSettings = function (settings) {
|
|
1166
|
+
if (settings.dialog == this.typeName) {
|
|
1167
|
+
this.setName(settings.name);
|
|
1168
|
+
return true;
|
|
846
1169
|
}
|
|
847
|
-
|
|
848
|
-
/**
|
|
849
|
-
* Callback function when a pickable object has been picked. It will then
|
|
850
|
-
* call functions in tissueViewer and cellPanel to show corresponding
|
|
851
|
-
* informations.
|
|
852
|
-
*
|
|
853
|
-
* @callback
|
|
854
|
-
*/
|
|
855
|
-
var _pickingCallback = function() {
|
|
856
|
-
return function(intersects, window_x, window_y) {
|
|
857
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
858
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
859
|
-
if (idObject.id) {
|
|
860
|
-
if (_this.toolTip !== undefined) {
|
|
861
|
-
_this.toolTip.setText(idObject.id);
|
|
862
|
-
_this.toolTip.show(window_x, window_y);
|
|
863
|
-
}
|
|
864
|
-
_this.displayMessage(idObject.object.name + " selected.");
|
|
865
1170
|
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
_this.setSelectedByObjects([idObject.object], true);
|
|
873
|
-
}
|
|
874
|
-
return;
|
|
875
|
-
} else {
|
|
876
|
-
if (_this.toolTip !== undefined) {
|
|
877
|
-
_this.toolTip.hide();
|
|
878
|
-
}
|
|
879
|
-
_this.setSelectedByObjects([], true);
|
|
880
|
-
}
|
|
881
|
-
}
|
|
882
|
-
};
|
|
883
|
-
|
|
884
|
-
/**
|
|
885
|
-
* Callback function when a pickable object has been hovered over. It will
|
|
886
|
-
* show objecty id/name as _this.toolTip text.
|
|
887
|
-
*
|
|
888
|
-
* @callback
|
|
889
|
-
*/
|
|
890
|
-
var _hoverCallback = function() {
|
|
891
|
-
return function(intersects, window_x, window_y) {
|
|
892
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
893
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
894
|
-
if (idObject.id) {
|
|
895
|
-
_this.displayArea.style.cursor = "pointer";
|
|
896
|
-
if (_this.toolTip !== undefined) {
|
|
897
|
-
_this.toolTip.setText(idObject.id);
|
|
898
|
-
_this.toolTip.show(window_x, window_y);
|
|
899
|
-
}
|
|
900
|
-
_this.setHighlightedByObjects([idObject.object], true);
|
|
901
|
-
return;
|
|
902
|
-
}
|
|
903
|
-
else {
|
|
904
|
-
if (_this.toolTip !== undefined) {
|
|
905
|
-
_this.toolTip.hide();
|
|
906
|
-
}
|
|
907
|
-
_this.displayArea.style.cursor = "auto";
|
|
908
|
-
_this.setHighlightedByObjects([], true);
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
};
|
|
912
|
-
|
|
913
|
-
var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
|
|
914
|
-
if (type == "all" || type == "geometries") {
|
|
915
|
-
var geometries = scene.findGeometriesWithGroupName(name);
|
|
916
|
-
for (var i = 0; i < geometries.length; i ++ ) {
|
|
917
|
-
geometries[i].setVisibility(value);
|
|
918
|
-
}
|
|
919
|
-
}
|
|
920
|
-
if (type == "all" || type == "glyphsets") {
|
|
921
|
-
var glyphsets = scene.findGlyphsetsWithGroupName(name);
|
|
922
|
-
for (var i = 0; i < glyphsets.length; i ++ ) {
|
|
923
|
-
glyphsets[i].setVisibility(value);
|
|
924
|
-
}
|
|
925
|
-
}
|
|
926
|
-
if (type == "all" || type == "pointsets") {
|
|
927
|
-
var pointsets = scene.findPointsetsWithGroupName(name);
|
|
928
|
-
for (var i = 0; i < pointsets.length; i ++ ) {
|
|
929
|
-
pointsets[i].setVisibility(value);
|
|
930
|
-
}
|
|
931
|
-
}
|
|
932
|
-
if (type == "all" || type == "lines") {
|
|
933
|
-
var lines = scene.findLinesWithGroupName(name);
|
|
934
|
-
for (var i = 0; i < lines.length; i ++ ) {
|
|
935
|
-
lines[i].setVisibility(value);
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
/**
|
|
941
|
-
* Change visibility for parts of the current scene.
|
|
942
|
-
*/
|
|
943
|
-
this.changeGeometriesVisibility = function(name, value) {
|
|
944
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
|
|
945
|
-
if (pickerScene)
|
|
946
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
|
|
947
|
-
}
|
|
948
|
-
|
|
949
|
-
/**
|
|
950
|
-
* Change visibility for parts of the current scene.
|
|
951
|
-
*/
|
|
952
|
-
this.changeGlyphsetsVisibility = function(name, value) {
|
|
953
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
|
|
954
|
-
if (pickerScene)
|
|
955
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
/**
|
|
959
|
-
* Change visibility for parts of the current scene.
|
|
960
|
-
*/
|
|
961
|
-
this.changeLinesVisibility = function(name, value) {
|
|
962
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
|
|
963
|
-
if (pickerScene)
|
|
964
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
|
|
965
|
-
}
|
|
966
|
-
|
|
967
|
-
/**
|
|
968
|
-
* Change visibility for parts of the current scene.
|
|
969
|
-
*/
|
|
970
|
-
this.changePointsetsVisibility = function(name, value) {
|
|
971
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
|
|
972
|
-
if (pickerScene)
|
|
973
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
|
|
1171
|
+
return false;
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1174
|
+
BaseModule.prototype.publishChanges = function (annotations, eventType) {
|
|
1175
|
+
for (var i = 0; i < this.eventNotifiers.length; i++) {
|
|
1176
|
+
this.eventNotifiers[i].publish(this, eventType, annotations);
|
|
974
1177
|
}
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
this.changeOrganPartsVisibilityCallback = function(name) {
|
|
989
|
-
return function(value) {
|
|
990
|
-
_this.changeOrganPartsVisibility(name, value);
|
|
991
|
-
}
|
|
992
|
-
}
|
|
993
|
-
|
|
994
|
-
/**
|
|
995
|
-
* Change some of the ZincGeometry property for never map geometry
|
|
996
|
-
*
|
|
997
|
-
* @callback
|
|
998
|
-
*/
|
|
999
|
-
var _addNerveMapGeometryCallback = function(GroupName) {
|
|
1000
|
-
return function(geometry) {
|
|
1001
|
-
geometry.groupName = GroupName;
|
|
1002
|
-
if (imageCombiner && geometry.morph && geometry.morph.material.map) {
|
|
1003
|
-
geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
|
|
1004
|
-
geometry.morph.material.map.needsUpdate = true;
|
|
1005
|
-
geometry.morph.material.needsUpdate = true;
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
|
|
1010
|
-
/**
|
|
1011
|
-
* Read in the nerve map models onto the primary renderer when nerve map has
|
|
1012
|
-
* been toggled on.
|
|
1013
|
-
*/
|
|
1014
|
-
var setupNerveMapPrimaryRenderer = function() {
|
|
1015
|
-
var sceneName = _this.sceneData.currentName + "_nervemap";
|
|
1016
|
-
nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
|
|
1017
|
-
if (nerveMapScene == undefined) {
|
|
1018
|
-
var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
|
|
1019
|
-
nerveMapScene = _this.zincRenderer.createScene(sceneName);
|
|
1020
|
-
nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
|
|
1021
|
-
if (_this.sceneData.nerveMap.threed.view !== undefined)
|
|
1022
|
-
nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
|
|
1023
|
-
else {
|
|
1024
|
-
nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
|
|
1025
|
-
}
|
|
1026
|
-
nerveMapScene.ambient.intensity = 8.0;
|
|
1027
|
-
nerveMapScene.directionalLight.intensity = 0;
|
|
1028
|
-
var zincCameraControl = nerveMapScene.getZincCameraControls();
|
|
1029
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1030
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1031
|
-
_this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
|
|
1032
|
-
var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
|
|
1033
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
|
|
1034
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
|
|
1035
|
-
_this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
|
|
1036
|
-
}
|
|
1037
|
-
_this.zincRenderer.setCurrentScene(nerveMapScene);
|
|
1038
|
-
_this.graphicsHighlight.reset();
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
|
-
var activateAdditionalNerveMapRenderer = function() {
|
|
1042
|
-
for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
|
|
1043
|
-
layoutUpdateRequiredCallbacks[i](false, true);
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
|
|
1047
|
-
/**
|
|
1048
|
-
* Nerve map has been toggled on/off, change organs renderer layput.
|
|
1049
|
-
*/
|
|
1050
|
-
this.changeNerveMapVisibility = function() {
|
|
1051
|
-
_this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
|
|
1052
|
-
if (_this.sceneData.nerveMapIsActive)
|
|
1053
|
-
setupNerveMapPrimaryRenderer();
|
|
1054
|
-
else {
|
|
1055
|
-
_this.zincRenderer.setCurrentScene(_this.scene);
|
|
1056
|
-
_this.graphicsHighlight.reset();
|
|
1057
|
-
}
|
|
1058
|
-
activateAdditionalNerveMapRenderer();
|
|
1059
|
-
}
|
|
1060
|
-
|
|
1061
|
-
this.changeBackgroundColour = function(backgroundColourString) {
|
|
1062
|
-
var colour = new THREE.Color(backgroundColourString);
|
|
1063
|
-
if (_this.zincRenderer) {
|
|
1064
|
-
var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
|
|
1065
|
-
internalRenderer.setClearColor( colour, 1 );
|
|
1066
|
-
}
|
|
1067
|
-
}
|
|
1068
|
-
|
|
1069
|
-
var addOrganPartToSceneData = function(zincObject) {
|
|
1070
|
-
if (zincObject.groupName) {
|
|
1071
|
-
if (zincObject.isGeometry) {
|
|
1072
|
-
if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
|
|
1073
|
-
_this.sceneData.geometries.push(zincObject.groupName);
|
|
1074
|
-
}
|
|
1075
|
-
} else if (zincObject.isGlyphset) {
|
|
1076
|
-
if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
|
|
1077
|
-
_this.sceneData.glyphsets.push(zincObject.groupName);
|
|
1078
|
-
}
|
|
1079
|
-
} else if (zincObject.isLines) {
|
|
1080
|
-
if (!_this.sceneData.lines.includes(zincObject.groupName)) {
|
|
1081
|
-
_this.sceneData.lines.push(zincObject.groupName);
|
|
1082
|
-
}
|
|
1083
|
-
} else if (zincObject.isPointset) {
|
|
1084
|
-
if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
|
|
1085
|
-
_this.sceneData.pointsets.push(zincObject.groupName);
|
|
1086
|
-
}
|
|
1087
|
-
}
|
|
1088
|
-
}
|
|
1089
|
-
}
|
|
1090
|
-
|
|
1091
|
-
var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
|
|
1092
|
-
for (var i = 0; i < organPartAddedCallbacks.length;i++) {
|
|
1093
|
-
organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
|
|
1094
|
-
}
|
|
1095
|
-
if (useDefautColour)
|
|
1096
|
-
modelsLoader.setGeometryColour(zincObject, systemName, partName);
|
|
1097
|
-
addOrganPartToSceneData(zincObject);
|
|
1098
|
-
if (zincObject.groupName) {
|
|
1099
|
-
_this.displayMessage(zincObject.groupName + " loaded.");
|
|
1100
|
-
} else {
|
|
1101
|
-
_this.displayMessage("Resource loaded.");
|
|
1102
|
-
}
|
|
1103
|
-
var annotation = new (__webpack_require__("a0d7").annotation)();
|
|
1104
|
-
annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
|
|
1105
|
-
zincObject.userData = [annotation];
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
|
-
/**
|
|
1109
|
-
* New organs geometry has been added to the scene, add UIs and make
|
|
1110
|
-
* sure the viewport is correct.
|
|
1111
|
-
*/
|
|
1112
|
-
var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
|
|
1113
|
-
return function(zincObject) {
|
|
1114
|
-
addOrganPart(systemName, partName, useDefautColour, zincObject);
|
|
1115
|
-
}
|
|
1116
|
-
}
|
|
1117
|
-
|
|
1118
|
-
var downloadCompletedCallback = function() {
|
|
1119
|
-
return function() {
|
|
1120
|
-
_this.settingsChanged();
|
|
1121
|
-
_this.sceneData.timeVarying = _this.scene.isTimeVarying();
|
|
1122
|
-
_this.displayMessage("All resources loaded.");
|
|
1123
|
-
if (finishDownloadCallback)
|
|
1124
|
-
finishDownloadCallback();
|
|
1125
|
-
}
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
|
|
1129
|
-
return function(geometry) {
|
|
1130
|
-
addOrganPart(systemName, partName, useDefautColour, geometry);
|
|
1131
|
-
_this.settingsChanged();
|
|
1132
|
-
}
|
|
1133
|
-
}
|
|
1134
|
-
|
|
1135
|
-
/**
|
|
1136
|
-
* Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
|
|
1137
|
-
* other activities of the organs.
|
|
1138
|
-
*/
|
|
1139
|
-
this.updateFieldvisibility = function(dataFields, value) {
|
|
1140
|
-
for ( var i = 0; i < dataFields.length; i ++ ) {
|
|
1141
|
-
if (value != i) {
|
|
1142
|
-
var geometryName = dataFields[i].PartName;
|
|
1143
|
-
_this.changeOrganPartsVisibility(geometryName, false);
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
|
-
if (value > -1) {
|
|
1147
|
-
var partName = dataFields[value].PartName;
|
|
1148
|
-
if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
|
|
1149
|
-
(_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
|
|
1150
|
-
_this.changeOrganPartsVisibility(partName, true);
|
|
1151
|
-
} else {
|
|
1152
|
-
var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
|
|
1153
|
-
if (partDetails != undefined) {
|
|
1154
|
-
_this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
}
|
|
1159
|
-
|
|
1160
|
-
/**
|
|
1161
|
-
* Return an array containing name(s) of species that also contains the
|
|
1162
|
-
* currently displayed organs.
|
|
1163
|
-
*
|
|
1164
|
-
* @returns {Array} containing species name
|
|
1165
|
-
*/
|
|
1166
|
-
this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
|
|
1167
|
-
var availableSpecies = new Array();
|
|
1168
|
-
availableSpecies.push("none");
|
|
1169
|
-
var keysArray = Object.keys(organsFileMap);
|
|
1170
|
-
for (index in keysArray) {
|
|
1171
|
-
var species = keysArray[index];
|
|
1172
|
-
if (species != currentSpecies) {
|
|
1173
|
-
if (organsFileMap[species].hasOwnProperty(currentSystem) &&
|
|
1174
|
-
organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
|
|
1175
|
-
availableSpecies.push(species);
|
|
1176
|
-
}
|
|
1177
|
-
}
|
|
1178
|
-
}
|
|
1179
|
-
return availableSpecies;
|
|
1180
|
-
}
|
|
1181
|
-
|
|
1182
|
-
var setSceneData = function(speciesName, systemName, partName, organsDetails) {
|
|
1183
|
-
_this.sceneData.nerveMapIsActive = false;
|
|
1184
|
-
_this.sceneData.nerveMap = undefined;
|
|
1185
|
-
_this.sceneData.metaURL = "";
|
|
1186
|
-
_this.sceneData.viewURL = "";
|
|
1187
|
-
_this.sceneData.currentSpecies = speciesName;
|
|
1188
|
-
_this.sceneData.currentSystem = systemName;
|
|
1189
|
-
_this.sceneData.currentPart = partName;
|
|
1190
|
-
_this.sceneData.currentTime = 0.0;
|
|
1191
|
-
_this.sceneData.geometries.splice(0);
|
|
1192
|
-
_this.sceneData.lines.splice(0);
|
|
1193
|
-
_this.sceneData.glyphsets.splice(0);
|
|
1194
|
-
_this.sceneData.pointsets.splice(0);
|
|
1195
|
-
_this.sceneData.timeVarying = false;
|
|
1196
|
-
// This is used as title
|
|
1197
|
-
var name = "";
|
|
1198
|
-
if (speciesName)
|
|
1199
|
-
name = speciesName + "/";
|
|
1200
|
-
if (systemName)
|
|
1201
|
-
name = systemName + "/";
|
|
1202
|
-
if (partName)
|
|
1203
|
-
name = partName;
|
|
1204
|
-
_this.sceneData.currentName = name;
|
|
1205
|
-
}
|
|
1206
|
-
|
|
1207
|
-
this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
|
|
1208
|
-
if (_this.zincRenderer) {
|
|
1209
|
-
if (partName && (_this.sceneData.metaURL !== url)) {
|
|
1210
|
-
setSceneData(speciesName, systemName, partName, undefined);
|
|
1211
|
-
var name = _this.sceneData.currentName;
|
|
1212
|
-
var organScene = _this.zincRenderer.getSceneByName(name);
|
|
1213
|
-
if (organScene) {
|
|
1214
|
-
organScene.clearAll();
|
|
1215
|
-
} else {
|
|
1216
|
-
organScene = _this.zincRenderer.createScene(name);
|
|
1217
|
-
}
|
|
1218
|
-
for (var i = 0; i < sceneChangedCallbacks.length;i++) {
|
|
1219
|
-
sceneChangedCallbacks[i](_this.sceneData);
|
|
1220
|
-
}
|
|
1221
|
-
if (viewURL && viewURL != "") {
|
|
1222
|
-
_this.sceneData.viewURL = viewURL;
|
|
1223
|
-
organScene.loadViewURL(_this.sceneData.viewURL);
|
|
1224
|
-
} else
|
|
1225
|
-
_this.sceneData.viewURL = undefined;
|
|
1226
|
-
_this.sceneData.metaURL = url;
|
|
1227
|
-
_this.displayMessage("Downloading...");
|
|
1228
|
-
organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
|
|
1229
|
-
downloadCompletedCallback());
|
|
1230
|
-
_this.scene = organScene;
|
|
1231
|
-
_this.zincRenderer.setCurrentScene(organScene);
|
|
1232
|
-
_this.graphicsHighlight.reset();
|
|
1233
|
-
var zincCameraControl = organScene.getZincCameraControls();
|
|
1234
|
-
zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
|
|
1235
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1236
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1237
|
-
}
|
|
1238
|
-
}
|
|
1239
|
-
}
|
|
1240
|
-
|
|
1241
|
-
this.alignCameraWithSelectedObject = function(transitionTime) {
|
|
1242
|
-
var objects = _this.graphicsHighlight.getSelected();
|
|
1243
|
-
if (objects && objects[0] && objects[0].userData) {
|
|
1244
|
-
_this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
|
|
1245
|
-
}
|
|
1246
|
-
}
|
|
1247
|
-
|
|
1248
|
-
this.exportSettings = function() {
|
|
1249
|
-
var settings = {};
|
|
1250
|
-
settings.name = _this.instanceName;
|
|
1251
|
-
if (_this.sceneData.currentSystem)
|
|
1252
|
-
settings.system = _this.sceneData.currentSystem;
|
|
1253
|
-
if (_this.sceneData.currentSpecies)
|
|
1254
|
-
settings.species = _this.sceneData.currentSpecies;
|
|
1255
|
-
if (_this.sceneData.currentPart)
|
|
1256
|
-
settings.part = _this.sceneData.currentPart;
|
|
1257
|
-
settings.metaURL = _this.sceneData.metaURL;
|
|
1258
|
-
if (_this.sceneData.viewURL)
|
|
1259
|
-
settings.viewURL = _this.sceneData.viewURL;
|
|
1260
|
-
settings.dialog = "Organ Viewer";
|
|
1261
|
-
return settings;
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
this.importSettings = function(settings) {
|
|
1265
|
-
if (settings && (settings.dialog == this.typeName)) {
|
|
1266
|
-
_this.setName(settings.name);
|
|
1267
|
-
if (settings.metaURL !== undefined && settings.metaURL != "") {
|
|
1268
|
-
_this.loadOrgansFromURL(settings.metaURL, settings.species,
|
|
1269
|
-
settings.system, settings.part, settings.viewURL);
|
|
1270
|
-
} else {
|
|
1271
|
-
_this.loadOrgans(settings.species, settings.system, settings.part);
|
|
1272
|
-
}
|
|
1273
|
-
return true;
|
|
1274
|
-
}
|
|
1275
|
-
return false;
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
/**
|
|
1279
|
-
* initialise loading of the html layout for the organs panel, this is
|
|
1280
|
-
* called when the {@link PJP.OrgansViewer} is created.
|
|
1281
|
-
*
|
|
1282
|
-
* @async
|
|
1283
|
-
*/
|
|
1284
|
-
var initialise = function() {
|
|
1285
|
-
_this.initialiseRenderer(undefined);
|
|
1286
|
-
if (_this.zincRenderer) {
|
|
1287
|
-
_this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
|
|
1288
|
-
_this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
|
|
1289
|
-
}
|
|
1178
|
+
};
|
|
1179
|
+
|
|
1180
|
+
BaseModule.prototype.getName = function () {
|
|
1181
|
+
return this.instanceName;
|
|
1182
|
+
};
|
|
1183
|
+
|
|
1184
|
+
BaseModule.prototype.destroy = function () {
|
|
1185
|
+
//Make a temorary copy as the array may be altered during the loop
|
|
1186
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1187
|
+
|
|
1188
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1189
|
+
callbackArray[i](this, MODULE_CHANGE.DESTROYED);
|
|
1290
1190
|
}
|
|
1291
|
-
|
|
1292
|
-
initialise();
|
|
1293
1191
|
|
|
1294
|
-
|
|
1192
|
+
delete this;
|
|
1193
|
+
};
|
|
1295
1194
|
|
|
1296
|
-
|
|
1297
|
-
|
|
1195
|
+
BaseModule.prototype.addChangedCallback = function (callback) {
|
|
1196
|
+
if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
|
|
1197
|
+
};
|
|
1298
1198
|
|
|
1199
|
+
BaseModule.prototype.removeChangedCallback = function (callback) {
|
|
1200
|
+
var index = this.onChangedCallbacks.indexOf(callback);
|
|
1299
1201
|
|
|
1300
|
-
|
|
1202
|
+
if (index > -1) {
|
|
1203
|
+
this.onChangedCallbacks.splice(index, 1);
|
|
1204
|
+
}
|
|
1205
|
+
};
|
|
1301
1206
|
|
|
1302
|
-
|
|
1303
|
-
|
|
1207
|
+
BaseModule.prototype.addNotifier = function (eventNotifier) {
|
|
1208
|
+
this.eventNotifiers.push(eventNotifier);
|
|
1209
|
+
};
|
|
1304
1210
|
|
|
1305
|
-
|
|
1211
|
+
exports.BaseModule = BaseModule;
|
|
1212
|
+
exports.MODULE_CHANGE = MODULE_CHANGE;
|
|
1306
1213
|
|
|
1307
1214
|
/***/ }),
|
|
1308
1215
|
|
|
@@ -1327,160 +1234,40 @@ module.exports = require("element-ui/lib/row");
|
|
|
1327
1234
|
|
|
1328
1235
|
/***/ }),
|
|
1329
1236
|
|
|
1330
|
-
/***/ "
|
|
1237
|
+
/***/ "7037":
|
|
1331
1238
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1332
1239
|
|
|
1333
|
-
|
|
1240
|
+
__webpack_require__("6049");
|
|
1241
|
+
|
|
1242
|
+
__webpack_require__("51e9");
|
|
1243
|
+
|
|
1244
|
+
__webpack_require__("02ac");
|
|
1245
|
+
|
|
1246
|
+
__webpack_require__("8c84");
|
|
1247
|
+
|
|
1248
|
+
__webpack_require__("850c");
|
|
1249
|
+
|
|
1250
|
+
__webpack_require__("907b");
|
|
1251
|
+
|
|
1252
|
+
__webpack_require__("1ce0");
|
|
1253
|
+
|
|
1254
|
+
function _typeof(obj) {
|
|
1255
|
+
"@babel/helpers - typeof";
|
|
1334
1256
|
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
var texture = new textureLoader.load( 'models/organsViewerModels/digestive/stomach/nerve_map/texture/ratstomach_innervation_square.png' );
|
|
1347
|
-
texture.wrapS = THREE.RepeatWrapping;
|
|
1348
|
-
texture.wrapT = THREE.RepeatWrapping;
|
|
1349
|
-
texture.format = THREE.RGBFormat;
|
|
1350
|
-
|
|
1351
|
-
var shadersUniforms = THREE.UniformsUtils.merge( [
|
|
1352
|
-
{
|
|
1353
|
-
ambient : { type: "c", value: new THREE.Color( 0x000000 ) },
|
|
1354
|
-
diffuse : { type: "c", value: new THREE.Color( 0xffffff ) },
|
|
1355
|
-
emissive : { type: "c", value: new THREE.Color( 0xbbbbbb ) },
|
|
1356
|
-
specular : { type: "c", value: new THREE.Color( 0x111111 ) },
|
|
1357
|
-
shininess: { type: "f", value: 100 },
|
|
1358
|
-
opacity: { type: "f", value: 1.0 },
|
|
1359
|
-
ambientLightColor: { type: "c", value: new THREE.Color( 0xF0F0F0 ) },
|
|
1360
|
-
directionalLightColor: { type: "c", value: new THREE.Color( 0x555555) },
|
|
1361
|
-
directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
|
|
1362
|
-
offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
|
|
1363
|
-
time: { type: "f", value: 0.0 },
|
|
1364
|
-
slide_pos: { type: "f", value: 1.0 },
|
|
1365
|
-
myTex: {type: 't', value: null}
|
|
1366
|
-
} ] );
|
|
1367
|
-
|
|
1368
|
-
var addGeometryIntoBufferGeometry = function(order, geometry)
|
|
1369
|
-
{
|
|
1370
|
-
var arrayLength = geometry.faces.length * 3 * 3;
|
|
1371
|
-
var positions = new Float32Array( arrayLength );
|
|
1372
|
-
var colors = new Float32Array( arrayLength );
|
|
1373
|
-
var normals = new Float32Array( arrayLength );
|
|
1374
|
-
var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
|
|
1375
|
-
if (bufferGeometry === undefined)
|
|
1376
|
-
bufferGeometry = new THREE.BufferGeometry();
|
|
1377
|
-
|
|
1378
|
-
geometry.faces.forEach( function ( face, index ) {
|
|
1379
|
-
positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
|
|
1380
|
-
positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
|
|
1381
|
-
positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
|
|
1382
|
-
positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
|
|
1383
|
-
positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
|
|
1384
|
-
positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
|
|
1385
|
-
positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
|
|
1386
|
-
positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
|
|
1387
|
-
positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
|
|
1388
|
-
|
|
1389
|
-
normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
|
|
1390
|
-
normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
|
|
1391
|
-
normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
|
|
1392
|
-
normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
|
|
1393
|
-
normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
|
|
1394
|
-
normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
|
|
1395
|
-
normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
|
|
1396
|
-
normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
|
|
1397
|
-
normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
|
|
1398
|
-
|
|
1399
|
-
texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
|
|
1400
|
-
texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
|
|
1401
|
-
texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
|
|
1402
|
-
texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
|
|
1403
|
-
texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
|
|
1404
|
-
texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
|
|
1405
|
-
} );
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
if (order == 0) {
|
|
1409
|
-
bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
|
|
1410
|
-
bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
|
|
1411
|
-
bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1412
|
-
} else {
|
|
1413
|
-
var positionStr = "position_" + order;
|
|
1414
|
-
var normalStr = "normal_" + order;
|
|
1415
|
-
var uvsStr = "uv_" + order;
|
|
1416
|
-
bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
|
|
1417
|
-
bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
|
|
1418
|
-
bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1419
|
-
}
|
|
1420
|
-
|
|
1421
|
-
}
|
|
1422
|
-
|
|
1423
|
-
var meshReady = function(bufferGeometryIn, shaderText, material){
|
|
1424
|
-
var shaderMaterial = new THREE.RawShaderMaterial( {
|
|
1425
|
-
vertexShader: shaderText[0],
|
|
1426
|
-
fragmentShader: shaderText[1],
|
|
1427
|
-
uniforms: shadersUniforms
|
|
1428
|
-
} );
|
|
1429
|
-
shaderMaterial.uniforms.myTex.value = texture;
|
|
1430
|
-
shaderMaterial.side = THREE.DoubleSide;
|
|
1431
|
-
shaderMaterial.depthTest = true;
|
|
1432
|
-
shaderMaterial.needsUpdate = true;
|
|
1433
|
-
shaderMaterial.map = texture;
|
|
1434
|
-
shaderMaterial.uniforms.myTex.value.needsUpdate = true;
|
|
1435
|
-
shaderMaterial.opacity = 1.0;
|
|
1436
|
-
zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
|
|
1437
|
-
zincGeometry.groupName = "varyingTexture";
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
var myLoader = function(order, shaderText) {
|
|
1441
|
-
return function(geometry, materials){
|
|
1442
|
-
var material = 0;
|
|
1443
|
-
addGeometryIntoBufferGeometry(order, geometry);
|
|
1444
|
-
completedInputs++;
|
|
1445
|
-
if (completedInputs == numberOfInputs) {
|
|
1446
|
-
meshReady(bufferGeometry, shaderText, material);
|
|
1447
|
-
if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
|
|
1448
|
-
finishCallbackFunction(bufferGeometry);
|
|
1449
|
-
}
|
|
1450
|
-
}
|
|
1451
|
-
}
|
|
1452
|
-
|
|
1453
|
-
this.setSliderPos = function(pos) {
|
|
1454
|
-
if (zincGeometry)
|
|
1455
|
-
zincGeometry.morph.material.uniforms.slide_pos.value = pos;
|
|
1456
|
-
}
|
|
1457
|
-
|
|
1458
|
-
this.setTime = function(time) {
|
|
1459
|
-
if (zincGeometry) {
|
|
1460
|
-
zincGeometry.morph.material.uniforms.time.value = time;
|
|
1461
|
-
}
|
|
1462
|
-
}
|
|
1463
|
-
|
|
1464
|
-
this.setTexture = function(textureIn) {
|
|
1465
|
-
if (zincGeometry) {
|
|
1466
|
-
zincGeometry.morph.material.uniforms.myTex.value = textureIn;
|
|
1467
|
-
zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
|
|
1468
|
-
}
|
|
1469
|
-
}
|
|
1470
|
-
|
|
1471
|
-
this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
|
|
1472
|
-
var loader = new THREE.JSONLoader( true );
|
|
1473
|
-
numberOfInputs = urls.length;
|
|
1474
|
-
finishCallbackFunction = finishCallback;
|
|
1475
|
-
var shaderText = [
|
|
1476
|
-
__webpack_require__("1823"),
|
|
1477
|
-
__webpack_require__("4e8a")
|
|
1478
|
-
];
|
|
1479
|
-
for (var i = 0; i < numberOfInputs; i++)
|
|
1480
|
-
loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
|
|
1481
|
-
}
|
|
1257
|
+
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
1258
|
+
module.exports = _typeof = function _typeof(obj) {
|
|
1259
|
+
return typeof obj;
|
|
1260
|
+
};
|
|
1261
|
+
} else {
|
|
1262
|
+
module.exports = _typeof = function _typeof(obj) {
|
|
1263
|
+
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
1264
|
+
};
|
|
1265
|
+
}
|
|
1266
|
+
|
|
1267
|
+
return _typeof(obj);
|
|
1482
1268
|
}
|
|
1483
1269
|
|
|
1270
|
+
module.exports = _typeof;
|
|
1484
1271
|
|
|
1485
1272
|
/***/ }),
|
|
1486
1273
|
|
|
@@ -1498,87 +1285,61 @@ module.exports = require("element-ui/lib/theme-chalk/main.css");
|
|
|
1498
1285
|
|
|
1499
1286
|
/***/ }),
|
|
1500
1287
|
|
|
1501
|
-
/***/ "
|
|
1288
|
+
/***/ "7c81":
|
|
1289
|
+
/***/ (function(module, exports) {
|
|
1290
|
+
|
|
1291
|
+
module.exports = require("core-js/modules/es.array.splice");
|
|
1292
|
+
|
|
1293
|
+
/***/ }),
|
|
1294
|
+
|
|
1295
|
+
/***/ "7d9b":
|
|
1502
1296
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1503
1297
|
|
|
1504
|
-
|
|
1298
|
+
// extracted by mini-css-extract-plugin
|
|
1505
1299
|
|
|
1506
|
-
|
|
1507
|
-
var tooltipcontainerElement = undefined;
|
|
1508
|
-
var tipElement = undefined;
|
|
1509
|
-
var tiptextElement = undefined;
|
|
1510
|
-
var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
|
|
1511
|
-
var _this = this;
|
|
1512
|
-
|
|
1513
|
-
/**
|
|
1514
|
-
* Show tool tip on the specified windows coordinates.
|
|
1515
|
-
* @param {Number} x - Style sheet with the same title.
|
|
1516
|
-
* @param {Number} y - selector string to match.
|
|
1517
|
-
*/
|
|
1518
|
-
this.show = function(x, y) {
|
|
1519
|
-
tooltipcontainerElement.style.left = x +"px";
|
|
1520
|
-
tooltipcontainerElement.style.top = (y - 20) + "px";
|
|
1521
|
-
tipElement.style.visibility = "visible";
|
|
1522
|
-
tipElement.style.opacity = 1;
|
|
1523
|
-
tiptextElement.style.visibility = "visible";
|
|
1524
|
-
tiptextElement.style.opacity = 1;
|
|
1525
|
-
}
|
|
1526
|
-
|
|
1527
|
-
this.hide = function() {
|
|
1528
|
-
tipElement.style.visibility = "hidden";
|
|
1529
|
-
tipElement.style.opacity = 0;
|
|
1530
|
-
tiptextElement.style.visibility = "hidden";
|
|
1531
|
-
tiptextElement.style.opacity = 0;
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
/**
|
|
1535
|
-
* Change the tooltip text.
|
|
1536
|
-
* @param {String} text - Text to update the tooltip to.
|
|
1537
|
-
*/
|
|
1538
|
-
this.setText = function(text) {
|
|
1539
|
-
tiptextElement.innerHTML = text;
|
|
1540
|
-
}
|
|
1300
|
+
/***/ }),
|
|
1541
1301
|
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
parent[0].appendChild(childNodes[i]);
|
|
1549
|
-
}
|
|
1550
|
-
*/
|
|
1551
|
-
tipElement = tooltipcontainerElement.querySelector("#tip");
|
|
1552
|
-
tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
|
|
1553
|
-
container.appendChild(tooltipcontainerElement);
|
|
1554
|
-
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
setupToolTipContainer();
|
|
1558
|
-
}
|
|
1302
|
+
/***/ "7f9f":
|
|
1303
|
+
/***/ (function(module, exports) {
|
|
1304
|
+
|
|
1305
|
+
module.exports = require("element-ui/lib/locale");
|
|
1306
|
+
|
|
1307
|
+
/***/ }),
|
|
1559
1308
|
|
|
1309
|
+
/***/ "80c4":
|
|
1310
|
+
/***/ (function(module, exports) {
|
|
1560
1311
|
|
|
1312
|
+
module.exports = require("element-ui/lib/theme-chalk/option.css");
|
|
1561
1313
|
|
|
1562
1314
|
/***/ }),
|
|
1563
1315
|
|
|
1564
|
-
/***/ "
|
|
1316
|
+
/***/ "8278":
|
|
1565
1317
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1566
1318
|
|
|
1567
|
-
|
|
1319
|
+
__webpack_require__("bcd8");
|
|
1320
|
+
|
|
1321
|
+
var _readOnlyError = __webpack_require__("da60");
|
|
1568
1322
|
|
|
1323
|
+
var THREE = __webpack_require__("9206").THREE;
|
|
1569
1324
|
/**
|
|
1570
1325
|
* Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
|
|
1571
1326
|
* @param {String} elementID - id of the target dom element.
|
|
1572
1327
|
* @returns {Zinc.Renderer}
|
|
1573
1328
|
*/
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
var
|
|
1329
|
+
|
|
1330
|
+
|
|
1331
|
+
var createRenderer = function createRenderer() {
|
|
1332
|
+
var WEBGL = __webpack_require__("cf41").WEBGL;
|
|
1333
|
+
|
|
1334
|
+
var localContainer = document.createElement('div');
|
|
1335
|
+
var localRenderer = undefined;
|
|
1336
|
+
;
|
|
1578
1337
|
localContainer.style.height = "100%";
|
|
1338
|
+
|
|
1579
1339
|
if (WEBGL.isWebGLAvailable()) {
|
|
1580
1340
|
var Zinc = __webpack_require__("9206");
|
|
1581
|
-
|
|
1341
|
+
|
|
1342
|
+
localRenderer = new Zinc.Renderer(localContainer, window);
|
|
1582
1343
|
Zinc.defaultMaterialColor = 0xFFFF9C;
|
|
1583
1344
|
localRenderer.initialiseVisualisation();
|
|
1584
1345
|
localRenderer.playAnimation = false;
|
|
@@ -1586,278 +1347,252 @@ var createRenderer = function () {
|
|
|
1586
1347
|
var warning = WEBGL.getWebGLErrorMessage();
|
|
1587
1348
|
localContainer.appendChild(warning);
|
|
1588
1349
|
}
|
|
1589
|
-
return {"renderer":localRenderer, "container":localContainer};
|
|
1590
|
-
}
|
|
1591
1350
|
|
|
1592
|
-
|
|
1593
|
-
|
|
1351
|
+
return {
|
|
1352
|
+
"renderer": localRenderer,
|
|
1353
|
+
"container": localContainer
|
|
1354
|
+
};
|
|
1355
|
+
};
|
|
1356
|
+
|
|
1357
|
+
var RendererModule = function RendererModule() {
|
|
1358
|
+
__webpack_require__("6aa6").BaseModule.call(this);
|
|
1359
|
+
|
|
1594
1360
|
this.scene = undefined;
|
|
1595
|
-
this.toolTip = undefined;
|
|
1596
1361
|
this.rendererContainer = undefined;
|
|
1597
1362
|
this.displayArea = undefined;
|
|
1598
|
-
this.graphicsHighlight = new (__webpack_require__("
|
|
1363
|
+
this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
|
|
1599
1364
|
this.zincRenderer = null;
|
|
1600
1365
|
this.selectedScreenCoordinates = new THREE.Vector3();
|
|
1601
1366
|
this.selectedCenter = undefined;
|
|
1602
|
-
}
|
|
1603
|
-
|
|
1604
|
-
RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
|
|
1367
|
+
};
|
|
1605
1368
|
|
|
1369
|
+
RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
|
|
1606
1370
|
/**
|
|
1607
1371
|
* This function will get the the first intersected object with name or
|
|
1608
1372
|
* the first glyph object with name.
|
|
1609
1373
|
*/
|
|
1610
|
-
RendererModule.prototype.getIntersectedObject = function(intersects) {
|
|
1611
|
-
if (intersects) {
|
|
1612
|
-
for (var i = 0; i < intersects.length; i++) {
|
|
1613
|
-
if (intersects[i] !== undefined) {
|
|
1614
|
-
if (intersects[i].object &&
|
|
1615
|
-
intersects[i].object.userData &&
|
|
1616
|
-
intersects[i].object.userData.isZincObject &&
|
|
1617
|
-
(intersects[i].object.name ||
|
|
1618
|
-
intersects[i].object.userData.isMarker))
|
|
1619
|
-
return intersects[i];
|
|
1620
|
-
}
|
|
1621
|
-
}
|
|
1622
|
-
}
|
|
1623
|
-
return undefined;
|
|
1624
|
-
}
|
|
1625
1374
|
|
|
1626
|
-
RendererModule.prototype.
|
|
1627
|
-
|
|
1628
|
-
for (var i = 0; i <
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1375
|
+
RendererModule.prototype.getIntersectedObject = function (intersects) {
|
|
1376
|
+
if (intersects) {
|
|
1377
|
+
for (var i = 0; i < intersects.length; i++) {
|
|
1378
|
+
if (intersects[i] !== undefined) {
|
|
1379
|
+
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];
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1384
|
+
return undefined;
|
|
1385
|
+
};
|
|
1386
|
+
|
|
1387
|
+
RendererModule.prototype.getAnnotationsFromObjects = function (objects) {
|
|
1388
|
+
var annotations = [];
|
|
1389
|
+
|
|
1390
|
+
for (var i = 0; i < objects.length; i++) {
|
|
1391
|
+
var zincObject = objects[i].userData;
|
|
1392
|
+
var annotation = undefined;
|
|
1393
|
+
|
|
1394
|
+
if (zincObject) {
|
|
1395
|
+
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1396
|
+
var glyphset = zincObject;
|
|
1397
|
+
if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
|
|
1398
|
+
annotation = glyphset.userData ? glyphset.userData[0] : undefined;
|
|
1399
|
+
|
|
1400
|
+
if (annotation && annotation.data) {
|
|
1401
|
+
if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
|
|
1402
|
+
}
|
|
1403
|
+
} else {
|
|
1404
|
+
annotation = zincObject.userData ? zincObject.userData[0] : undefined;
|
|
1405
|
+
|
|
1406
|
+
if (annotation && annotation.data) {
|
|
1407
|
+
annotation.data.id = objects[i].name;
|
|
1648
1408
|
}
|
|
1649
1409
|
}
|
|
1650
|
-
annotations[i] = annotation;
|
|
1651
1410
|
}
|
|
1652
|
-
return annotations;
|
|
1653
|
-
}
|
|
1654
1411
|
|
|
1655
|
-
|
|
1412
|
+
annotations[i] = annotation;
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
return annotations;
|
|
1416
|
+
};
|
|
1417
|
+
|
|
1418
|
+
RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
|
|
1656
1419
|
var changed = this.graphicsHighlight.setHighlighted(objects);
|
|
1420
|
+
|
|
1657
1421
|
if (changed && propagateChanges) {
|
|
1658
|
-
var eventType = __webpack_require__("
|
|
1422
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
|
|
1423
|
+
|
|
1659
1424
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1660
1425
|
this.publishChanges(annotations, eventType);
|
|
1661
1426
|
}
|
|
1662
|
-
return changed;
|
|
1663
|
-
}
|
|
1664
1427
|
|
|
1428
|
+
return changed;
|
|
1429
|
+
};
|
|
1665
1430
|
|
|
1666
|
-
RendererModule.prototype.setHighlightedByZincObject = function(
|
|
1667
|
-
zincObject, propagateChanges)
|
|
1668
|
-
|
|
1669
|
-
}
|
|
1431
|
+
RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
|
|
1432
|
+
return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1433
|
+
};
|
|
1670
1434
|
|
|
1671
|
-
RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
|
|
1672
|
-
if (zincObjects &&
|
|
1435
|
+
RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
|
|
1436
|
+
if (zincObjects && zincObjects.length > 0) {
|
|
1673
1437
|
var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
|
|
1674
|
-
|
|
1438
|
+
var newSelectedCenter = new THREE.Vector3();
|
|
1675
1439
|
boundingBox.getCenter(newSelectedCenter);
|
|
1676
|
-
if (this.selectedCenter == undefined)
|
|
1677
|
-
this.selectedCenter = newSelectedCenter;
|
|
1678
|
-
else {
|
|
1440
|
+
if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
|
|
1679
1441
|
this.selectedCenter.x = newSelectedCenter.x;
|
|
1680
1442
|
this.selectedCenter.y = newSelectedCenter.y;
|
|
1681
1443
|
}
|
|
1682
1444
|
} else {
|
|
1683
1445
|
this.selectedCenter = undefined;
|
|
1684
1446
|
}
|
|
1685
|
-
}
|
|
1447
|
+
};
|
|
1686
1448
|
|
|
1687
|
-
RendererModule.prototype.objectsToZincObjects = function(objects) {
|
|
1449
|
+
RendererModule.prototype.objectsToZincObjects = function (objects) {
|
|
1688
1450
|
var zincObjects = [];
|
|
1451
|
+
|
|
1689
1452
|
for (var i = 0; i < objects.length; i++) {
|
|
1690
1453
|
var zincObject = objects[i].userData;
|
|
1454
|
+
|
|
1691
1455
|
if (zincObject) {
|
|
1692
1456
|
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1693
1457
|
var glyphset = zincObject;
|
|
1694
|
-
if (zincObject.isGlyph)
|
|
1695
|
-
|
|
1696
|
-
zincObjects. push(glyphset);
|
|
1458
|
+
if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
|
|
1459
|
+
zincObjects.push(glyphset);
|
|
1697
1460
|
} else {
|
|
1698
|
-
zincObjects.
|
|
1461
|
+
zincObjects.push(zincObject);
|
|
1699
1462
|
}
|
|
1700
1463
|
}
|
|
1701
1464
|
}
|
|
1702
|
-
return zincObjects;
|
|
1703
|
-
}
|
|
1704
1465
|
|
|
1466
|
+
return zincObjects;
|
|
1467
|
+
};
|
|
1705
1468
|
|
|
1706
|
-
RendererModule.prototype.setSelectedByObjects = function(
|
|
1707
|
-
objects, propagateChanges) {
|
|
1469
|
+
RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
|
|
1708
1470
|
var changed = this.graphicsHighlight.setSelected(objects);
|
|
1471
|
+
|
|
1709
1472
|
if (changed) {
|
|
1710
1473
|
var zincObjects = this.objectsToZincObjects(objects);
|
|
1711
1474
|
this.setupLiveCoordinates(zincObjects);
|
|
1475
|
+
|
|
1712
1476
|
if (propagateChanges) {
|
|
1713
|
-
var eventType = __webpack_require__("
|
|
1477
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
|
|
1478
|
+
|
|
1714
1479
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1715
1480
|
this.publishChanges(annotations, eventType);
|
|
1716
1481
|
}
|
|
1717
1482
|
}
|
|
1483
|
+
|
|
1718
1484
|
return changed;
|
|
1719
|
-
}
|
|
1485
|
+
};
|
|
1720
1486
|
|
|
1721
|
-
RendererModule.prototype.setSelectedByZincObject = function(
|
|
1722
|
-
zincObject, propagateChanges) {
|
|
1487
|
+
RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
|
|
1723
1488
|
return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1724
|
-
}
|
|
1489
|
+
};
|
|
1725
1490
|
|
|
1726
|
-
var addGlyphToArray = function(objects) {
|
|
1727
|
-
return function(glyph) {
|
|
1491
|
+
var addGlyphToArray = function addGlyphToArray(objects) {
|
|
1492
|
+
return function (glyph) {
|
|
1728
1493
|
objects.push(glyph.getMesh());
|
|
1729
|
-
}
|
|
1730
|
-
}
|
|
1494
|
+
};
|
|
1495
|
+
};
|
|
1731
1496
|
|
|
1732
|
-
RendererModule.prototype.findObjectsByGroupName = function(groupName) {
|
|
1497
|
+
RendererModule.prototype.findObjectsByGroupName = function (groupName) {
|
|
1733
1498
|
var geometries = this.scene.findGeometriesWithGroupName(groupName);
|
|
1734
1499
|
var objects = [];
|
|
1735
|
-
|
|
1500
|
+
|
|
1501
|
+
for (var i = 0; i < geometries.length; i++) {
|
|
1736
1502
|
objects.push(geometries[i].morph);
|
|
1737
1503
|
}
|
|
1504
|
+
|
|
1738
1505
|
var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
|
|
1739
|
-
|
|
1740
|
-
|
|
1506
|
+
|
|
1507
|
+
for (var _i = 0; _i < glyphsets.length; _i++) {
|
|
1508
|
+
glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
|
|
1741
1509
|
}
|
|
1742
|
-
|
|
1510
|
+
|
|
1743
1511
|
return objects;
|
|
1744
|
-
}
|
|
1512
|
+
};
|
|
1745
1513
|
|
|
1746
|
-
RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
|
|
1514
|
+
RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
|
|
1747
1515
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1748
1516
|
return this.setHighlightedByObjects(objects, propagateChanges);
|
|
1749
|
-
}
|
|
1517
|
+
};
|
|
1750
1518
|
|
|
1751
|
-
RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
|
|
1519
|
+
RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
|
|
1752
1520
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1753
1521
|
return this.setSelectedByObjects(objects, propagateChanges);
|
|
1754
|
-
}
|
|
1522
|
+
};
|
|
1755
1523
|
|
|
1756
|
-
RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
|
|
1524
|
+
RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
|
|
1757
1525
|
var colour = new THREE.Color(backgroundColourString);
|
|
1526
|
+
|
|
1758
1527
|
if (this.zincRenderer) {
|
|
1759
1528
|
var internalRenderer = this.zincRenderer.getThreeJSRenderer();
|
|
1760
|
-
internalRenderer.setClearColor(
|
|
1529
|
+
internalRenderer.setClearColor(colour, 1);
|
|
1761
1530
|
}
|
|
1762
|
-
}
|
|
1763
|
-
|
|
1764
|
-
RendererModule.prototype.resetView = function() {
|
|
1765
|
-
if (this.zincRenderer)
|
|
1766
|
-
this.zincRenderer.resetView();
|
|
1767
|
-
}
|
|
1768
|
-
|
|
1769
|
-
RendererModule.prototype.viewAll = function() {
|
|
1770
|
-
if (this.zincRenderer)
|
|
1771
|
-
this.zincRenderer.viewAll();
|
|
1772
|
-
}
|
|
1531
|
+
};
|
|
1773
1532
|
|
|
1533
|
+
RendererModule.prototype.resetView = function () {
|
|
1534
|
+
if (this.zincRenderer) this.zincRenderer.resetView();
|
|
1535
|
+
};
|
|
1536
|
+
|
|
1537
|
+
RendererModule.prototype.viewAll = function () {
|
|
1538
|
+
if (this.zincRenderer) this.zincRenderer.viewAll();
|
|
1539
|
+
};
|
|
1774
1540
|
/**
|
|
1775
1541
|
* Start the animation and let the renderer to processs with
|
|
1776
1542
|
* time progression
|
|
1777
1543
|
*/
|
|
1778
|
-
RendererModule.prototype.playAnimation = function(flag) {
|
|
1779
|
-
if (this.zincRenderer)
|
|
1780
|
-
this.zincRenderer.playAnimation = flag;
|
|
1781
|
-
}
|
|
1782
1544
|
|
|
1545
|
+
|
|
1546
|
+
RendererModule.prototype.playAnimation = function (flag) {
|
|
1547
|
+
if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
|
|
1548
|
+
};
|
|
1783
1549
|
/**
|
|
1784
1550
|
* Set the speed of playback
|
|
1785
1551
|
*/
|
|
1786
|
-
RendererModule.prototype.setPlayRate = function(value) {
|
|
1787
|
-
if (this.zincRenderer)
|
|
1788
|
-
this.zincRenderer.setPlayRate(value);
|
|
1789
|
-
}
|
|
1790
1552
|
|
|
1553
|
+
|
|
1554
|
+
RendererModule.prototype.setPlayRate = function (value) {
|
|
1555
|
+
if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
|
|
1556
|
+
};
|
|
1791
1557
|
/**
|
|
1792
1558
|
* Get the speed of playback
|
|
1793
1559
|
*/
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
else
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
|
|
1804
|
-
|
|
1805
|
-
RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
|
|
1560
|
+
|
|
1561
|
+
|
|
1562
|
+
RendererModule.prototype.getPlayRate = function (value) {
|
|
1563
|
+
if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
|
|
1564
|
+
};
|
|
1565
|
+
/** Initialise everything in the renderer, including the 3D renderer,
|
|
1566
|
+
* and picker for the 3D renderer.
|
|
1567
|
+
*
|
|
1568
|
+
*/
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
|
|
1806
1572
|
if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
|
|
1807
1573
|
var returnedValue = createRenderer();
|
|
1808
1574
|
this.zincRenderer = returnedValue["renderer"];
|
|
1809
1575
|
this.rendererContainer = returnedValue["container"];
|
|
1810
1576
|
}
|
|
1577
|
+
|
|
1811
1578
|
if (displayAreaIn) {
|
|
1812
1579
|
this.displayArea = displayAreaIn;
|
|
1813
|
-
this.displayArea.appendChild(
|
|
1814
|
-
if (this.zincRenderer)
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
|
|
1818
|
-
}
|
|
1819
|
-
}
|
|
1820
|
-
}
|
|
1580
|
+
this.displayArea.appendChild(this.rendererContainer);
|
|
1581
|
+
if (this.zincRenderer) this.zincRenderer.animate();
|
|
1582
|
+
}
|
|
1583
|
+
};
|
|
1821
1584
|
|
|
1822
|
-
RendererModule.prototype.destroy = function() {
|
|
1585
|
+
RendererModule.prototype.destroy = function () {
|
|
1823
1586
|
if (this.zincRenderer) {
|
|
1824
1587
|
this.zincRenderer.dispose();
|
|
1825
1588
|
this.zincRenderer.getThreeJSRenderer().dispose();
|
|
1826
1589
|
this.zincRenderer = undefined;
|
|
1827
1590
|
}
|
|
1828
|
-
(__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
|
|
1829
|
-
}
|
|
1830
|
-
|
|
1831
|
-
exports.RendererModule = RendererModule;
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
/***/ }),
|
|
1835
|
-
|
|
1836
|
-
/***/ "7c81":
|
|
1837
|
-
/***/ (function(module, exports) {
|
|
1838
1591
|
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
/***/ }),
|
|
1842
|
-
|
|
1843
|
-
/***/ "7d9b":
|
|
1844
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1845
|
-
|
|
1846
|
-
// extracted by mini-css-extract-plugin
|
|
1847
|
-
|
|
1848
|
-
/***/ }),
|
|
1849
|
-
|
|
1850
|
-
/***/ "7f9f":
|
|
1851
|
-
/***/ (function(module, exports) {
|
|
1852
|
-
|
|
1853
|
-
module.exports = require("element-ui/lib/locale");
|
|
1854
|
-
|
|
1855
|
-
/***/ }),
|
|
1856
|
-
|
|
1857
|
-
/***/ "80c4":
|
|
1858
|
-
/***/ (function(module, exports) {
|
|
1592
|
+
__webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
|
|
1593
|
+
};
|
|
1859
1594
|
|
|
1860
|
-
|
|
1595
|
+
exports.RendererModule = RendererModule;
|
|
1861
1596
|
|
|
1862
1597
|
/***/ }),
|
|
1863
1598
|
|
|
@@ -1887,146 +1622,6 @@ module.exports = require("element-ui/lib/tabs");
|
|
|
1887
1622
|
|
|
1888
1623
|
module.exports = require("core-js/modules/es.array.iterator");
|
|
1889
1624
|
|
|
1890
|
-
/***/ }),
|
|
1891
|
-
|
|
1892
|
-
/***/ "8cec":
|
|
1893
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1894
|
-
|
|
1895
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
1896
|
-
|
|
1897
|
-
/**
|
|
1898
|
-
* This module manages highlighted and selected objects in 3D modules.
|
|
1899
|
-
*
|
|
1900
|
-
* @class
|
|
1901
|
-
* @returns {exports.GraphicsHighlight}
|
|
1902
|
-
*/
|
|
1903
|
-
exports.GraphicsHighlight = function() {
|
|
1904
|
-
var currentHighlightedObjects = [];
|
|
1905
|
-
var currentSelectedObjects = [];
|
|
1906
|
-
this.highlightColour = 0x0000FF;
|
|
1907
|
-
this.selectColour = 0x00FF00;
|
|
1908
|
-
this.originalColour = 0x000000;
|
|
1909
|
-
var _this = this;
|
|
1910
|
-
|
|
1911
|
-
var isDifferent = function(array1, array2) {
|
|
1912
|
-
if ((array1.length == 0) && (array2.length == 0))
|
|
1913
|
-
return false;
|
|
1914
|
-
|
|
1915
|
-
for (var i = 0; i < array1.length; i++) {
|
|
1916
|
-
var matched = false;
|
|
1917
|
-
for (var j = 0; j < array2.length; j++) {
|
|
1918
|
-
if (array1[i] === array2[j]) {
|
|
1919
|
-
matched = true;
|
|
1920
|
-
}
|
|
1921
|
-
}
|
|
1922
|
-
if (!matched)
|
|
1923
|
-
return true;
|
|
1924
|
-
}
|
|
1925
|
-
for (var i = 0; i < array2.length; i++) {
|
|
1926
|
-
var matched = false;
|
|
1927
|
-
for (var j = 0; j < array1.length; j++) {
|
|
1928
|
-
if (array2[i] === array1[j]) {
|
|
1929
|
-
matched = true;
|
|
1930
|
-
}
|
|
1931
|
-
}
|
|
1932
|
-
if (!matched)
|
|
1933
|
-
return true;
|
|
1934
|
-
}
|
|
1935
|
-
return false;
|
|
1936
|
-
}
|
|
1937
|
-
|
|
1938
|
-
var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
|
|
1939
|
-
var unmatchingObjects = [];
|
|
1940
|
-
if (objectsArray2.length == 0)
|
|
1941
|
-
return objectsArray1;
|
|
1942
|
-
for (var i = 0; i < objectsArray1.length; i++) {
|
|
1943
|
-
var matched = false;
|
|
1944
|
-
for (var j = 0; j < objectsArray2.length; j++) {
|
|
1945
|
-
if (objectsArray1[i] === objectsArray2[j]) {
|
|
1946
|
-
matched = true;
|
|
1947
|
-
}
|
|
1948
|
-
}
|
|
1949
|
-
if (!matched)
|
|
1950
|
-
unmatchingObjects.push(objectsArray1[i]);
|
|
1951
|
-
}
|
|
1952
|
-
return unmatchingObjects;
|
|
1953
|
-
}
|
|
1954
|
-
|
|
1955
|
-
this.setHighlighted = function(objects) {
|
|
1956
|
-
var previousHighlightedObjects = currentHighlightedObjects;
|
|
1957
|
-
_this.resetHighlighted();
|
|
1958
|
-
// Selected object cannot be highlighted
|
|
1959
|
-
var array = getUnmatchingObjects(objects, currentSelectedObjects);
|
|
1960
|
-
var fullList = getFullListOfObjects(array);
|
|
1961
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
1962
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
1963
|
-
fullList[i].material.emissive.setHex(_this.highlightColour);
|
|
1964
|
-
}
|
|
1965
|
-
currentHighlightedObjects = array;
|
|
1966
|
-
return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
|
|
1967
|
-
}
|
|
1968
|
-
|
|
1969
|
-
this.setSelected = function(objects) {
|
|
1970
|
-
// first find highlighted object that are not selected
|
|
1971
|
-
var previousHSelectedObjects = currentSelectedObjects;
|
|
1972
|
-
var array = getUnmatchingObjects(currentHighlightedObjects, objects);
|
|
1973
|
-
currentHighlightedObjects = array;
|
|
1974
|
-
_this.resetSelected();
|
|
1975
|
-
var fullList = getFullListOfObjects(objects);
|
|
1976
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
1977
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
1978
|
-
fullList[i].material.emissive.setHex(_this.selectColour);
|
|
1979
|
-
}
|
|
1980
|
-
currentSelectedObjects = objects;
|
|
1981
|
-
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
|
|
1982
|
-
}
|
|
1983
|
-
|
|
1984
|
-
var getFullListOfObjects = function(objects) {
|
|
1985
|
-
let fullList = [];
|
|
1986
|
-
for (var i = 0; i < objects.length; i++) {
|
|
1987
|
-
if (objects[i].material)
|
|
1988
|
-
fullList.push(objects[i]);
|
|
1989
|
-
}
|
|
1990
|
-
return fullList;
|
|
1991
|
-
}
|
|
1992
|
-
|
|
1993
|
-
this.resetHighlighted = function() {
|
|
1994
|
-
let fullList = getFullListOfObjects(currentHighlightedObjects);
|
|
1995
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
1996
|
-
if (fullList[i] && fullList[i].material) {
|
|
1997
|
-
if (fullList[i].material.emissive)
|
|
1998
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
1999
|
-
if (fullList[i].material.depthFunc)
|
|
2000
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2001
|
-
}
|
|
2002
|
-
}
|
|
2003
|
-
currentHighlightedObjects = [];
|
|
2004
|
-
}
|
|
2005
|
-
|
|
2006
|
-
this.resetSelected = function() {
|
|
2007
|
-
let fullList = getFullListOfObjects(currentSelectedObjects);
|
|
2008
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2009
|
-
if (fullList[i] && fullList[i].material) {
|
|
2010
|
-
if (fullList[i].material.emissive)
|
|
2011
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
2012
|
-
if (fullList[i].material.depthFunc)
|
|
2013
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2014
|
-
}
|
|
2015
|
-
}
|
|
2016
|
-
currentSelectedObjects = [];
|
|
2017
|
-
}
|
|
2018
|
-
|
|
2019
|
-
this.getSelected = function() {
|
|
2020
|
-
return currentSelectedObjects;
|
|
2021
|
-
}
|
|
2022
|
-
|
|
2023
|
-
this.reset = function() {
|
|
2024
|
-
_this.resetSelected();
|
|
2025
|
-
_this.resetHighlighted();
|
|
2026
|
-
}
|
|
2027
|
-
}
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
1625
|
/***/ }),
|
|
2031
1626
|
|
|
2032
1627
|
/***/ "8f11":
|
|
@@ -2075,10 +1670,14 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
|
|
|
2075
1670
|
|
|
2076
1671
|
/***/ }),
|
|
2077
1672
|
|
|
2078
|
-
/***/ "
|
|
2079
|
-
/***/ (function(module, exports
|
|
1673
|
+
/***/ "984d":
|
|
1674
|
+
/***/ (function(module, exports) {
|
|
2080
1675
|
|
|
2081
|
-
|
|
1676
|
+
exports.annotation = function () {
|
|
1677
|
+
this.type = "anatomical";
|
|
1678
|
+
this.data = undefined;
|
|
1679
|
+
this.isAnnotation = true;
|
|
1680
|
+
};
|
|
2082
1681
|
|
|
2083
1682
|
/***/ }),
|
|
2084
1683
|
|
|
@@ -2096,22 +1695,86 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
|
|
|
2096
1695
|
|
|
2097
1696
|
/***/ }),
|
|
2098
1697
|
|
|
2099
|
-
/***/ "
|
|
2100
|
-
/***/ (function(module, exports) {
|
|
1698
|
+
/***/ "9b21":
|
|
1699
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
2101
1700
|
|
|
2102
|
-
|
|
1701
|
+
__webpack_require__("7c81");
|
|
1702
|
+
|
|
1703
|
+
var EVENT_TYPE = {
|
|
1704
|
+
ALL: 0,
|
|
1705
|
+
SELECTED: 1,
|
|
1706
|
+
HIGHLIGHTED: 2
|
|
1707
|
+
};
|
|
1708
|
+
|
|
1709
|
+
var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
|
|
1710
|
+
this.eventType = eventTypeIn;
|
|
1711
|
+
this.identifiers = identifiersIn;
|
|
1712
|
+
};
|
|
1713
|
+
|
|
1714
|
+
var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
|
|
1715
|
+
};
|
|
1716
|
+
|
|
1717
|
+
var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
|
|
1718
|
+
this.targetedID = [];
|
|
1719
|
+
var subscriber = subscriberIn;
|
|
1720
|
+
var callback = callbackIn;
|
|
1721
|
+
this.targetEventType = eventType;
|
|
1722
|
+
|
|
1723
|
+
var _this = this;
|
|
1724
|
+
|
|
1725
|
+
if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
|
|
1726
|
+
|
|
1727
|
+
this.getEventType = function () {
|
|
1728
|
+
return eventType;
|
|
1729
|
+
};
|
|
1730
|
+
|
|
1731
|
+
this.notify = function (source, eventType, ids) {
|
|
1732
|
+
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
|
|
1733
|
+
//should support different type of id e.g lyph, name, fmas...
|
|
1734
|
+
//need a function that finds all relavant ids
|
|
1735
|
+
var event = new SelectionEvent(eventType, ids);
|
|
1736
|
+
callback(event);
|
|
1737
|
+
}
|
|
1738
|
+
};
|
|
1739
|
+
};
|
|
1740
|
+
|
|
1741
|
+
exports.EventNotifier = function () {
|
|
1742
|
+
var subscriptions = [];
|
|
1743
|
+
|
|
1744
|
+
this.publish = function (source, eventType, id) {
|
|
1745
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1746
|
+
subscriptions[i].notify(source, eventType, id);
|
|
1747
|
+
}
|
|
1748
|
+
};
|
|
1749
|
+
|
|
1750
|
+
this.subscribe = function (subscriber, callbackFunction, eventType) {
|
|
1751
|
+
if (typeof callbackFunction === "function") {
|
|
1752
|
+
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
1753
|
+
subscriptions.push(subscription);
|
|
1754
|
+
return subscription;
|
|
1755
|
+
}
|
|
1756
|
+
|
|
1757
|
+
return undefined;
|
|
1758
|
+
};
|
|
1759
|
+
|
|
1760
|
+
this.unsubscribe = function (subscription) {
|
|
1761
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1762
|
+
if (subscription === subscriptions[i]) {
|
|
1763
|
+
subscriptions.splice(i, 1);
|
|
1764
|
+
return;
|
|
1765
|
+
}
|
|
1766
|
+
}
|
|
1767
|
+
};
|
|
1768
|
+
};
|
|
1769
|
+
|
|
1770
|
+
exports.EVENT_TYPE = EVENT_TYPE;
|
|
2103
1771
|
|
|
2104
1772
|
/***/ }),
|
|
2105
1773
|
|
|
2106
|
-
/***/ "
|
|
1774
|
+
/***/ "9bb0":
|
|
2107
1775
|
/***/ (function(module, exports) {
|
|
2108
1776
|
|
|
2109
|
-
exports
|
|
2110
|
-
this.type = "anatomical";
|
|
2111
|
-
this.data = undefined;
|
|
2112
|
-
this.isAnnotation = true;
|
|
2113
|
-
}
|
|
2114
|
-
|
|
1777
|
+
module.exports = require("@soda/get-current-script");
|
|
2115
1778
|
|
|
2116
1779
|
/***/ }),
|
|
2117
1780
|
|
|
@@ -2175,13 +1838,6 @@ module.exports = require("element-ui/lib/icon");
|
|
|
2175
1838
|
|
|
2176
1839
|
/***/ }),
|
|
2177
1840
|
|
|
2178
|
-
/***/ "b723":
|
|
2179
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
2180
|
-
|
|
2181
|
-
// extracted by mini-css-extract-plugin
|
|
2182
|
-
|
|
2183
|
-
/***/ }),
|
|
2184
|
-
|
|
2185
1841
|
/***/ "b777":
|
|
2186
1842
|
/***/ (function(module, exports) {
|
|
2187
1843
|
|
|
@@ -2217,10 +1873,84 @@ module.exports = require("element-ui/lib/option");
|
|
|
2217
1873
|
|
|
2218
1874
|
/***/ }),
|
|
2219
1875
|
|
|
2220
|
-
/***/ "
|
|
1876
|
+
/***/ "cf41":
|
|
1877
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1878
|
+
|
|
1879
|
+
__webpack_require__("51f7");
|
|
1880
|
+
|
|
1881
|
+
__webpack_require__("bfab");
|
|
1882
|
+
|
|
1883
|
+
/**
|
|
1884
|
+
* @author alteredq / http://alteredqualia.com/
|
|
1885
|
+
* @author mr.doob / http://mrdoob.com/
|
|
1886
|
+
*/
|
|
1887
|
+
exports.WEBGL = {
|
|
1888
|
+
isWebGLAvailable: function isWebGLAvailable() {
|
|
1889
|
+
try {
|
|
1890
|
+
var canvas = document.createElement('canvas');
|
|
1891
|
+
return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
|
|
1892
|
+
} catch (e) {
|
|
1893
|
+
return false;
|
|
1894
|
+
}
|
|
1895
|
+
},
|
|
1896
|
+
isWebGL2Available: function isWebGL2Available() {
|
|
1897
|
+
try {
|
|
1898
|
+
var canvas = document.createElement('canvas');
|
|
1899
|
+
return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
|
|
1900
|
+
} catch (e) {
|
|
1901
|
+
return false;
|
|
1902
|
+
}
|
|
1903
|
+
},
|
|
1904
|
+
getWebGLErrorMessage: function getWebGLErrorMessage() {
|
|
1905
|
+
return this.getErrorMessage(1);
|
|
1906
|
+
},
|
|
1907
|
+
getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
|
|
1908
|
+
return this.getErrorMessage(2);
|
|
1909
|
+
},
|
|
1910
|
+
getErrorMessage: function getErrorMessage(version) {
|
|
1911
|
+
var names = {
|
|
1912
|
+
1: 'WebGL',
|
|
1913
|
+
2: 'WebGL 2'
|
|
1914
|
+
};
|
|
1915
|
+
var contexts = {
|
|
1916
|
+
1: window.WebGLRenderingContext,
|
|
1917
|
+
2: window.WebGL2RenderingContext
|
|
1918
|
+
};
|
|
1919
|
+
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.';
|
|
1920
|
+
var element = document.createElement('div');
|
|
1921
|
+
element.id = 'webglmessage';
|
|
1922
|
+
element.style.fontFamily = 'monospace';
|
|
1923
|
+
element.style.fontSize = '20px';
|
|
1924
|
+
element.style.fontWeight = 'normal';
|
|
1925
|
+
element.style.textAlign = 'center';
|
|
1926
|
+
element.style.background = '#fff';
|
|
1927
|
+
element.style.color = '#000';
|
|
1928
|
+
element.style.padding = '1.5em';
|
|
1929
|
+
element.style.width = '400px';
|
|
1930
|
+
element.style.margin = '5em auto 0';
|
|
1931
|
+
|
|
1932
|
+
if (contexts[version]) {
|
|
1933
|
+
message = message.replace('$0', 'graphics card');
|
|
1934
|
+
} else {
|
|
1935
|
+
message = message.replace('$0', 'browser');
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
message = message.replace('$1', names[version]);
|
|
1939
|
+
element.innerHTML = message;
|
|
1940
|
+
return element;
|
|
1941
|
+
}
|
|
1942
|
+
};
|
|
1943
|
+
|
|
1944
|
+
/***/ }),
|
|
1945
|
+
|
|
1946
|
+
/***/ "da60":
|
|
2221
1947
|
/***/ (function(module, exports) {
|
|
2222
1948
|
|
|
2223
|
-
|
|
1949
|
+
function _readOnlyError(name) {
|
|
1950
|
+
throw new Error("\"" + name + "\" is read-only");
|
|
1951
|
+
}
|
|
1952
|
+
|
|
1953
|
+
module.exports = _readOnlyError;
|
|
2224
1954
|
|
|
2225
1955
|
/***/ }),
|
|
2226
1956
|
|
|
@@ -2279,12 +2009,12 @@ if (typeof window !== 'undefined') {
|
|
|
2279
2009
|
// Indicate to webpack that this file can be concatenated
|
|
2280
2010
|
/* harmony default export */ var setPublicPath = (null);
|
|
2281
2011
|
|
|
2282
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2012
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-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=3d37f502&scoped=true&
|
|
2283
2013
|
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('SvgSpriteColor'),_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('SvgIcon',{staticClass:"icon-button video-button",attrs:{"icon":"pause"},nativeOn:{"click":function($event){return _vm.play(false)}}}):_c('SvgIcon',{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('SvgIcon',{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('SvgIcon',{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('SvgIcon',{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('SvgIcon',{directives:[{name:"popover",rawName:"v-popover:backgroundPopover",arg:"backgroundPopover"}],staticClass:"icon-button background-colour",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{"slot":"reference","icon":"changeBckgd"},nativeOn:{"mouseover":function($event){return _vm.showToolitip(3)},"mouseout":function($event){return _vm.hideToolitip(3)}},slot:"reference"})],1)],1)],1)}
|
|
2284
2014
|
var staticRenderFns = []
|
|
2285
2015
|
|
|
2286
2016
|
|
|
2287
|
-
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=
|
|
2017
|
+
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=3d37f502&scoped=true&
|
|
2288
2018
|
|
|
2289
2019
|
// EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
|
|
2290
2020
|
var es_array_for_each_ = __webpack_require__("139f");
|
|
@@ -2383,7 +2113,7 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
|
|
|
2383
2113
|
var external_vue_ = __webpack_require__("8bbf");
|
|
2384
2114
|
var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
|
|
2385
2115
|
|
|
2386
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2116
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&
|
|
2387
2117
|
var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.material!=undefined)?_c('div',{ref:"control",staticClass:"opacity-control"},[_c('el-drawer',{staticClass:"drawer-content",attrs:{"custom-class":"my-drawer","visible":_vm.drawerOpen,"append-to-body":false,"modal-append-to-body":false,"size":"300","with-header":false,"wrapper-closable":false,"modal":false},on:{"update:visible":function($event){_vm.drawerOpen=$event}}},[(_vm.drawerOpen)?_c('div',{staticClass:"tab-button close",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-right"})]):_vm._e(),_c('el-container',{staticClass:"opacity-container"},[_c('el-header',{staticClass:"header",attrs:{"height":"37px"}},[_c('div',[_vm._v("Opacity")])]),_c('el-main',{staticClass:"main"},[_c('div',{staticClass:"block"},[_c('span',{staticClass:"display"},[_vm._v(_vm._s(_vm.displayString))]),_c('el-slider',{staticClass:"my-slider",attrs:{"step":0.01,"min":0,"max":1,"format-tooltip":_vm.formatTooltip,"show-tooltip":false},model:{value:(_vm.material.opacity),callback:function ($$v) {_vm.$set(_vm.material, "opacity", $$v)},expression:"material.opacity"}})],1)])],1)],1),(!_vm.drawerOpen)?_c('div',{staticClass:"tab-button open",on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})]):_vm._e()],1):_vm._e()}
|
|
2388
2118
|
var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
|
|
2389
2119
|
|
|
@@ -2684,7 +2414,7 @@ var component = normalizeComponent(
|
|
|
2684
2414
|
)
|
|
2685
2415
|
|
|
2686
2416
|
/* harmony default export */ var OpacityControls = (component.exports);
|
|
2687
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2417
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"643474d0-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=b0ace276&scoped=true&
|
|
2688
2418
|
var TraditionalControlsvue_type_template_id_b0ace276_scoped_true_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"traditional-location",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen }},[_c('div',{staticClass:"traditional-container"},[_c('el-row',[_c('el-col',{attrs:{"span":12}},[_c('div',{staticClass:"regions-display-text"},[_vm._v(" Regions ")])]),_c('el-col',{attrs:{"span":12}},[_c('el-checkbox',{staticClass:"all-checkbox",attrs:{"indeterminate":_vm.isIndeterminate},on:{"change":_vm.handleCheckAllChange},model:{value:(_vm.checkAll),callback:function ($$v) {_vm.checkAll=$$v},expression:"checkAll"}},[_vm._v(" Display all ")])],1)],1),_c('el-checkbox-group',{staticClass:"checkbox-group",attrs:{"size":"small"},on:{"change":_vm.handleCheckedItemsChange},model:{value:(_vm.checkedItems),callback:function ($$v) {_vm.checkedItems=$$v},expression:"checkedItems"}},[_c('div',{staticClass:"checkbox-group-inner"},_vm._l((_vm.sortedPrimitiveGroups),function(item){return _c('el-row',{key:item,attrs:{"label":item}},[_c('div',{staticClass:"checkbox-container"},[_c('el-checkbox',{staticClass:"my-checkbox",class:{ activeItem: _vm.activeRegion === item,
|
|
2689
2419
|
hoverItem: _vm.hoverRegion === item },attrs:{"label":item,"checked":true},on:{"change":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{"click":function($event){return _vm.itemClicked(item, $event)},"mouseover":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{"value":_vm.getColour(item),"size":"small","popper-class":_vm.myPopperClass},on:{"change":function($event){return _vm.setColour(item, $event)}}}),_vm._v(" "+_vm._s(item)+" ")],1)],1)])}),1)])],1),_c('div',{staticClass:"drawer-button",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})])])}
|
|
2690
2420
|
var TraditionalControlsvue_type_template_id_b0ace276_scoped_true_staticRenderFns = []
|
|
@@ -3487,9 +3217,9 @@ external_vue_default.a.use(slider_default.a);
|
|
|
3487
3217
|
external_vue_default.a.use(tab_pane_default.a);
|
|
3488
3218
|
external_vue_default.a.use(tabs_default.a);
|
|
3489
3219
|
|
|
3490
|
-
var OrgansViewer = __webpack_require__("
|
|
3220
|
+
var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
|
|
3491
3221
|
|
|
3492
|
-
var EventNotifier = __webpack_require__("
|
|
3222
|
+
var EventNotifier = __webpack_require__("9b21").EventNotifier;
|
|
3493
3223
|
/**
|
|
3494
3224
|
* A vue component of the scaffold viewer.
|
|
3495
3225
|
*
|
|
@@ -3766,7 +3496,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3766
3496
|
this.$module.addOrganPartAddedCallback(this.organsAdded);
|
|
3767
3497
|
this.$module.initialiseRenderer(this.$refs.display);
|
|
3768
3498
|
this.toggleRendering(this.render);
|
|
3769
|
-
this.$module.toolTip = undefined;
|
|
3770
3499
|
this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
|
|
3771
3500
|
this.defaultRate = this.$module.getPlayRate();
|
|
3772
3501
|
},
|
|
@@ -3926,6 +3655,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3926
3655
|
}
|
|
3927
3656
|
}
|
|
3928
3657
|
},
|
|
3658
|
+
getRendererInfo: function getRendererInfo() {
|
|
3659
|
+
if (this.$module.zincRenderer) {
|
|
3660
|
+
return this.$module.zincRenderer.getThreeJSRenderer().info;
|
|
3661
|
+
}
|
|
3662
|
+
|
|
3663
|
+
return undefined;
|
|
3664
|
+
},
|
|
3929
3665
|
|
|
3930
3666
|
/**
|
|
3931
3667
|
* Function used to rotate the scene.
|
|
@@ -4306,8 +4042,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4306
4042
|
});
|
|
4307
4043
|
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
|
|
4308
4044
|
/* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
|
|
4309
|
-
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=
|
|
4310
|
-
var
|
|
4045
|
+
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=3d37f502&scoped=true&lang=scss&
|
|
4046
|
+
var ScaffoldVuervue_type_style_index_0_id_3d37f502_scoped_true_lang_scss_ = __webpack_require__("27fc");
|
|
4311
4047
|
|
|
4312
4048
|
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
|
|
4313
4049
|
var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
|
|
@@ -4328,7 +4064,7 @@ var ScaffoldVuer_component = normalizeComponent(
|
|
|
4328
4064
|
staticRenderFns,
|
|
4329
4065
|
false,
|
|
4330
4066
|
null,
|
|
4331
|
-
"
|
|
4067
|
+
"3d37f502",
|
|
4332
4068
|
null
|
|
4333
4069
|
|
|
4334
4070
|
)
|