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