@abi-software/scaffoldvuer 0.1.50-beta-0 → 0.1.51
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 +1320 -1568
- package/dist/scaffoldvuer.common.js.map +1 -1
- package/dist/scaffoldvuer.css +1 -1
- package/dist/scaffoldvuer.umd.js +1320 -1568
- 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 +2872 -1645
- package/package.json +5 -6
- package/src/App.vue +79 -4
- package/src/components/OpacityControls.vue +9 -20
- package/src/components/ScaffoldVuer.vue +66 -30
- package/src/components/TraditionalControls.vue +17 -23
- package/src/scripts/BaseModule.js +80 -0
- package/src/scripts/RendererModule.js +263 -0
- package/src/scripts/WebGL.js +94 -0
- package/src/scripts/annotation.js +5 -0
- package/src/scripts/eventNotifier.js +65 -0
- package/src/scripts/graphicsHighlight.js +132 -0
- package/src/scripts/organsRenderer.js +536 -0
- package/vue.config.js +1 -1
package/dist/scaffoldvuer.umd.js
CHANGED
|
@@ -110,7 +110,7 @@ module.exports = require("element-ui/lib/checkbox-group");
|
|
|
110
110
|
|
|
111
111
|
/***/ }),
|
|
112
112
|
|
|
113
|
-
/***/ "
|
|
113
|
+
/***/ "09a4":
|
|
114
114
|
/***/ (function(module, exports, __webpack_require__) {
|
|
115
115
|
|
|
116
116
|
// extracted by mini-css-extract-plugin
|
|
@@ -136,114 +136,6 @@ module.exports = require("element-ui/lib/select");
|
|
|
136
136
|
|
|
137
137
|
module.exports = require("element-ui/lib/theme-chalk/select.css");
|
|
138
138
|
|
|
139
|
-
/***/ }),
|
|
140
|
-
|
|
141
|
-
/***/ "10a8":
|
|
142
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
143
|
-
|
|
144
|
-
// extracted by mini-css-extract-plugin
|
|
145
|
-
|
|
146
|
-
/***/ }),
|
|
147
|
-
|
|
148
|
-
/***/ "10c9":
|
|
149
|
-
/***/ (function(module, exports) {
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* @author alteredq / http://alteredqualia.com/
|
|
153
|
-
* @author mr.doob / http://mrdoob.com/
|
|
154
|
-
*/
|
|
155
|
-
|
|
156
|
-
exports.WEBGL = {
|
|
157
|
-
|
|
158
|
-
isWebGLAvailable: function () {
|
|
159
|
-
|
|
160
|
-
try {
|
|
161
|
-
|
|
162
|
-
var canvas = document.createElement( 'canvas' );
|
|
163
|
-
return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
|
|
164
|
-
|
|
165
|
-
} catch ( e ) {
|
|
166
|
-
|
|
167
|
-
return false;
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
},
|
|
172
|
-
|
|
173
|
-
isWebGL2Available: function () {
|
|
174
|
-
|
|
175
|
-
try {
|
|
176
|
-
|
|
177
|
-
var canvas = document.createElement( 'canvas' );
|
|
178
|
-
return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
|
|
179
|
-
|
|
180
|
-
} catch ( e ) {
|
|
181
|
-
|
|
182
|
-
return false;
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
},
|
|
187
|
-
|
|
188
|
-
getWebGLErrorMessage: function () {
|
|
189
|
-
|
|
190
|
-
return this.getErrorMessage( 1 );
|
|
191
|
-
|
|
192
|
-
},
|
|
193
|
-
|
|
194
|
-
getWebGL2ErrorMessage: function () {
|
|
195
|
-
|
|
196
|
-
return this.getErrorMessage( 2 );
|
|
197
|
-
|
|
198
|
-
},
|
|
199
|
-
|
|
200
|
-
getErrorMessage: function ( version ) {
|
|
201
|
-
|
|
202
|
-
var names = {
|
|
203
|
-
1: 'WebGL',
|
|
204
|
-
2: 'WebGL 2'
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
var contexts = {
|
|
208
|
-
1: window.WebGLRenderingContext,
|
|
209
|
-
2: window.WebGL2RenderingContext
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
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.';
|
|
213
|
-
|
|
214
|
-
var element = document.createElement( 'div' );
|
|
215
|
-
element.id = 'webglmessage';
|
|
216
|
-
element.style.fontFamily = 'monospace';
|
|
217
|
-
element.style.fontSize = '20px';
|
|
218
|
-
element.style.fontWeight = 'normal';
|
|
219
|
-
element.style.textAlign = 'center';
|
|
220
|
-
element.style.background = '#fff';
|
|
221
|
-
element.style.color = '#000';
|
|
222
|
-
element.style.padding = '1.5em';
|
|
223
|
-
element.style.width = '400px';
|
|
224
|
-
element.style.margin = '5em auto 0';
|
|
225
|
-
|
|
226
|
-
if ( contexts[ version ] ) {
|
|
227
|
-
|
|
228
|
-
message = message.replace( '$0', 'graphics card' );
|
|
229
|
-
|
|
230
|
-
} else {
|
|
231
|
-
|
|
232
|
-
message = message.replace( '$0', 'browser' );
|
|
233
|
-
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
message = message.replace( '$1', names[ version ] );
|
|
237
|
-
|
|
238
|
-
element.innerHTML = message;
|
|
239
|
-
|
|
240
|
-
return element;
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
};
|
|
245
|
-
|
|
246
|
-
|
|
247
139
|
/***/ }),
|
|
248
140
|
|
|
249
141
|
/***/ "139f":
|
|
@@ -253,24 +145,6 @@ module.exports = require("core-js/modules/es.array.for-each");
|
|
|
253
145
|
|
|
254
146
|
/***/ }),
|
|
255
147
|
|
|
256
|
-
/***/ "17b8":
|
|
257
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
258
|
-
|
|
259
|
-
"use strict";
|
|
260
|
-
/* 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_OpacityControls_vue_vue_type_style_index_0_id_4fb32d85_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("10a8");
|
|
261
|
-
/* 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_OpacityControls_vue_vue_type_style_index_0_id_4fb32d85_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_OpacityControls_vue_vue_type_style_index_0_id_4fb32d85_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
262
|
-
/* unused harmony reexport * */
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
/***/ }),
|
|
266
|
-
|
|
267
|
-
/***/ "1823":
|
|
268
|
-
/***/ (function(module, exports) {
|
|
269
|
-
|
|
270
|
-
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"
|
|
271
|
-
|
|
272
|
-
/***/ }),
|
|
273
|
-
|
|
274
148
|
/***/ "18d2":
|
|
275
149
|
/***/ (function(module, exports) {
|
|
276
150
|
|
|
@@ -290,6 +164,17 @@ module.exports = require("element-ui/lib/container");
|
|
|
290
164
|
|
|
291
165
|
module.exports = require("core-js/modules/web.dom-collections.iterator");
|
|
292
166
|
|
|
167
|
+
/***/ }),
|
|
168
|
+
|
|
169
|
+
/***/ "1f67":
|
|
170
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
171
|
+
|
|
172
|
+
"use strict";
|
|
173
|
+
/* 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_023c058f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("09a4");
|
|
174
|
+
/* 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_023c058f_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_023c058f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
175
|
+
/* unused harmony reexport * */
|
|
176
|
+
|
|
177
|
+
|
|
293
178
|
/***/ }),
|
|
294
179
|
|
|
295
180
|
/***/ "1fe8":
|
|
@@ -306,10 +191,14 @@ module.exports = require("core-js/modules/es.object.keys");
|
|
|
306
191
|
|
|
307
192
|
/***/ }),
|
|
308
193
|
|
|
309
|
-
/***/ "
|
|
310
|
-
/***/ (function(module,
|
|
194
|
+
/***/ "21a1":
|
|
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_OpacityControls_vue_vue_type_style_index_0_id_4c00a30f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("5810");
|
|
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_OpacityControls_vue_vue_type_style_index_0_id_4c00a30f_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_OpacityControls_vue_vue_type_style_index_0_id_4c00a30f_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
200
|
+
/* unused harmony reexport * */
|
|
311
201
|
|
|
312
|
-
// extracted by mini-css-extract-plugin
|
|
313
202
|
|
|
314
203
|
/***/ }),
|
|
315
204
|
|
|
@@ -367,129 +256,6 @@ module.exports = require("element-ui/lib/theme-chalk/color-picker.css");
|
|
|
367
256
|
|
|
368
257
|
module.exports = require("element-ui/lib/drawer");
|
|
369
258
|
|
|
370
|
-
/***/ }),
|
|
371
|
-
|
|
372
|
-
/***/ "3966":
|
|
373
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
374
|
-
|
|
375
|
-
var MODULE_CHANGE = { ALL: 0, DESTROYED: 1, NAME_CHANGED: 2, SETTINGS_CHANGED: 3 };
|
|
376
|
-
|
|
377
|
-
var BaseModule = function() {
|
|
378
|
-
this.typeName = "Base Module";
|
|
379
|
-
this.instanceName = "default";
|
|
380
|
-
this.onChangedCallbacks = [];
|
|
381
|
-
this.messageFunction = undefined;
|
|
382
|
-
/** Notifier handle for informing other modules of any changes **/
|
|
383
|
-
this.eventNotifiers = [];
|
|
384
|
-
this.broadcastChannels = {};
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
BaseModule.prototype.setName = function(name) {
|
|
388
|
-
if (name && this.instanceName !== name) {
|
|
389
|
-
this.instanceName = name;
|
|
390
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
391
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
392
|
-
callbackArray[i]( this, MODULE_CHANGE.NAME_CHANGED );
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
BaseModule.prototype.addBroadcastChannels = function(ChannelName) {
|
|
398
|
-
if (ChannelName in this.broadcastChannels)
|
|
399
|
-
return false;
|
|
400
|
-
var newChannel = new (__webpack_require__("c45a")).default(ChannelName);
|
|
401
|
-
this.broadcastChannels[ChannelName] = newChannel;
|
|
402
|
-
return true;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
BaseModule.prototype.removeBroadcastChannels = function(ChannelName) {
|
|
406
|
-
if (ChannelName in this.broadcastChannels) {
|
|
407
|
-
this.broadcastChannels[ChannelName].close();
|
|
408
|
-
delete broadcastChannels[ChannelName];
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
BaseModule.prototype.settingsChanged = function() {
|
|
414
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
415
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
416
|
-
callbackArray[i]( this, MODULE_CHANGE.SETTINGS_CHANGED );
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
BaseModule.prototype.exportSettings = function() {
|
|
421
|
-
var settings = {};
|
|
422
|
-
settings.dialog = this.typeName;
|
|
423
|
-
settings.name = this.instanceName;
|
|
424
|
-
return settings;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
BaseModule.prototype.importSettings = function(settings) {
|
|
428
|
-
if (settings.dialog == this.typeName) {
|
|
429
|
-
this.setName(settings.name);
|
|
430
|
-
return true;
|
|
431
|
-
}
|
|
432
|
-
return false;
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
BaseModule.prototype.publishChanges = function(annotations, eventType) {
|
|
436
|
-
for (var i = 0; i < this.eventNotifiers.length; i++) {
|
|
437
|
-
this.eventNotifiers[i].publish(this, eventType, annotations);
|
|
438
|
-
}
|
|
439
|
-
if (eventType === __webpack_require__("549c").EVENT_TYPE.SELECTED) {
|
|
440
|
-
if (annotations && annotations[0]) {
|
|
441
|
-
var annotation = annotations[0];
|
|
442
|
-
var data = {action: "query-data", resource: annotation.data.id, data: annotation.data, sender: this.instanceName};
|
|
443
|
-
for (var key in this.broadcastChannels) {
|
|
444
|
-
this.broadcastChannels[key].postMessage(data);
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
BaseModule.prototype.setMessageFunction = function(functionIn) {
|
|
451
|
-
this.messageFunction = functionIn;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
BaseModule.prototype.displayMessage = function(message) {
|
|
455
|
-
if (this.messageFunction)
|
|
456
|
-
this.messageFunction(message);
|
|
457
|
-
}
|
|
458
|
-
|
|
459
|
-
BaseModule.prototype.getName = function() {
|
|
460
|
-
return this.instanceName;
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
BaseModule.prototype.destroy = function() {
|
|
464
|
-
//Make a temorary copy as the array may be altered during the loop
|
|
465
|
-
var callbackArray = this.onChangedCallbacks.slice();
|
|
466
|
-
for (var i = 0; i < callbackArray.length; i++) {
|
|
467
|
-
callbackArray[i]( this, MODULE_CHANGE.DESTROYED );
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
delete this;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
BaseModule.prototype.addChangedCallback = function(callback) {
|
|
474
|
-
if (this.onChangedCallbacks.includes(callback) == false)
|
|
475
|
-
this.onChangedCallbacks.push(callback);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
BaseModule.prototype.removeChangedCallback = function(callback) {
|
|
479
|
-
var index = this.onChangedCallbacks.indexOf(callback);
|
|
480
|
-
if (index > -1) {
|
|
481
|
-
this.onChangedCallbacks.splice(index, 1);
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
|
|
485
|
-
BaseModule.prototype.addNotifier = function(eventNotifier) {
|
|
486
|
-
this.eventNotifiers.push(eventNotifier);
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
exports.BaseModule = BaseModule;
|
|
490
|
-
exports.MODULE_CHANGE = MODULE_CHANGE;
|
|
491
|
-
|
|
492
|
-
|
|
493
259
|
/***/ }),
|
|
494
260
|
|
|
495
261
|
/***/ "429c":
|
|
@@ -520,13 +286,6 @@ module.exports = require("lodash/uniq");
|
|
|
520
286
|
|
|
521
287
|
/***/ }),
|
|
522
288
|
|
|
523
|
-
/***/ "4e8a":
|
|
524
|
-
/***/ (function(module, exports) {
|
|
525
|
-
|
|
526
|
-
module.exports = "precision highp float;\nuniform sampler2D myTex;\nvarying vec2 vUv;\n\nvoid main() {\n\tgl_FragColor = texture2D( myTex, vUv );\n\n}\n"
|
|
527
|
-
|
|
528
|
-
/***/ }),
|
|
529
|
-
|
|
530
289
|
/***/ "51c7":
|
|
531
290
|
/***/ (function(module, exports) {
|
|
532
291
|
|
|
@@ -548,132 +307,31 @@ module.exports = require("core-js/modules/es.regexp.exec");
|
|
|
548
307
|
|
|
549
308
|
/***/ }),
|
|
550
309
|
|
|
551
|
-
/***/ "
|
|
552
|
-
/***/ (function(module, exports) {
|
|
553
|
-
|
|
554
|
-
var EVENT_TYPE = { ALL: 0, SELECTED: 1, HIGHLIGHTED: 2 };
|
|
555
|
-
|
|
556
|
-
var SelectionEvent = function(eventTypeIn, identifiersIn) {
|
|
557
|
-
this.eventType = eventTypeIn;
|
|
558
|
-
this.identifiers = identifiersIn;
|
|
559
|
-
}
|
|
560
|
-
|
|
561
|
-
var returnFullID = function(sourceId) {
|
|
562
|
-
//return full annotations with all different name
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
var Subscription = function(subscriberIn, callbackIn, eventType) {
|
|
566
|
-
this.targetedID = [];
|
|
567
|
-
var subscriber = subscriberIn;
|
|
568
|
-
if (eventType === undefined)
|
|
569
|
-
this.targetEventType = EVENT_TYPE.ALL;
|
|
570
|
-
else
|
|
571
|
-
this.targetEventType = eventType;
|
|
572
|
-
var callback = callbackIn;
|
|
573
|
-
|
|
574
|
-
var _this = this;
|
|
575
|
-
|
|
576
|
-
this.getEventType = function() {
|
|
577
|
-
return eventType;
|
|
578
|
-
}
|
|
579
|
-
|
|
580
|
-
this.notify = function(source, eventType, ids) {
|
|
581
|
-
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL ||
|
|
582
|
-
_this.targetEventType === eventType)) {
|
|
583
|
-
//should support different type of id e.g lyph, name, fmas...
|
|
584
|
-
//need a function that finds all relavant ids
|
|
585
|
-
var event = new SelectionEvent(eventType, ids);
|
|
586
|
-
callback(event);
|
|
587
|
-
}
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
|
|
591
|
-
exports.EventNotifier = function() {
|
|
592
|
-
var events = [];
|
|
593
|
-
var subscriptions = [];
|
|
594
|
-
var _this = this;
|
|
595
|
-
|
|
596
|
-
this.publish = function(source, eventType, id) {
|
|
597
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
598
|
-
subscriptions[i].notify(source, eventType, id);
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
this.subscribe = function(subscriber, callbackFunction, eventType) {
|
|
603
|
-
if (typeof callbackFunction === "function") {
|
|
604
|
-
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
605
|
-
subscriptions.push(subscription);
|
|
606
|
-
return subscription;
|
|
607
|
-
}
|
|
608
|
-
return undefined;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
this.unsubscribe = function(subscription) {
|
|
612
|
-
for (var i = 0; i < subscriptions.length;i++) {
|
|
613
|
-
if (subscription === subscriptions[i]) {
|
|
614
|
-
subscriptions.splice(i, 1);
|
|
615
|
-
return;
|
|
616
|
-
}
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
exports.EVENT_TYPE = EVENT_TYPE;
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
/***/ }),
|
|
625
|
-
|
|
626
|
-
/***/ "55ee":
|
|
627
|
-
/***/ (function(module, exports) {
|
|
628
|
-
|
|
629
|
-
module.exports = require("element-ui/lib/theme-chalk/checkbox.css");
|
|
630
|
-
|
|
631
|
-
/***/ }),
|
|
632
|
-
|
|
633
|
-
/***/ "5fef":
|
|
634
|
-
/***/ (function(module, exports) {
|
|
635
|
-
|
|
636
|
-
module.exports = require("core-js/modules/es.regexp.to-string");
|
|
637
|
-
|
|
638
|
-
/***/ }),
|
|
639
|
-
|
|
640
|
-
/***/ "6049":
|
|
641
|
-
/***/ (function(module, exports) {
|
|
642
|
-
|
|
643
|
-
module.exports = require("core-js/modules/es.symbol");
|
|
644
|
-
|
|
645
|
-
/***/ }),
|
|
646
|
-
|
|
647
|
-
/***/ "642d":
|
|
648
|
-
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
649
|
-
|
|
650
|
-
"use strict";
|
|
651
|
-
/* 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");
|
|
652
|
-
/* 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__);
|
|
653
|
-
/* unused harmony reexport * */
|
|
310
|
+
/***/ "53d7":
|
|
311
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
654
312
|
|
|
313
|
+
__webpack_require__("ab7e");
|
|
655
314
|
|
|
656
|
-
|
|
315
|
+
__webpack_require__("7c81");
|
|
657
316
|
|
|
658
|
-
|
|
659
|
-
/***/ (function(module, exports) {
|
|
317
|
+
__webpack_require__("bcd8");
|
|
660
318
|
|
|
661
|
-
|
|
319
|
+
__webpack_require__("2175");
|
|
662
320
|
|
|
663
|
-
|
|
321
|
+
__webpack_require__("fd48");
|
|
664
322
|
|
|
665
|
-
|
|
666
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
323
|
+
var _typeof = __webpack_require__("7037");
|
|
667
324
|
|
|
668
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
669
|
-
// 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
|
|
670
326
|
// informations,
|
|
671
327
|
// these are proived in the organsFileMap array.
|
|
672
|
-
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
var OrgansSceneData = function OrgansSceneData() {
|
|
673
331
|
this.currentName = "";
|
|
674
332
|
this.currentSystem = "";
|
|
675
333
|
this.currentPart = "";
|
|
676
|
-
this.currentSpecies
|
|
334
|
+
this.currentSpecies = "";
|
|
677
335
|
this.metaURL = "";
|
|
678
336
|
this.viewURL = "";
|
|
679
337
|
this.geometries = [];
|
|
@@ -682,12 +340,7 @@ var OrgansSceneData = function() {
|
|
|
682
340
|
this.pointsets = [];
|
|
683
341
|
this.currentTime = 0.0;
|
|
684
342
|
this.timeVarying = false;
|
|
685
|
-
|
|
686
|
-
// informations,
|
|
687
|
-
this.nerveMap = undefined;
|
|
688
|
-
this.nerveMapIsActive = false;
|
|
689
|
-
}
|
|
690
|
-
|
|
343
|
+
};
|
|
691
344
|
/**
|
|
692
345
|
* Viewer of 3D-organs models. Users can toggle on/off different views. Data is
|
|
693
346
|
* displayed instead if models are not available.
|
|
@@ -702,619 +355,870 @@ var OrgansSceneData = function() {
|
|
|
702
355
|
* @author Alan Wu
|
|
703
356
|
* @returns {PJP.OrgansViewer}
|
|
704
357
|
*/
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
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();
|
|
712
369
|
var organPartAddedCallbacks = new Array();
|
|
713
370
|
var finishDownloadCallback = undefined;
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
if (_this.scene)
|
|
729
|
-
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();
|
|
730
385
|
var actualTime = value / 100.0 * duration;
|
|
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
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
_this.sceneData.currentTime = currentTime / duration * 100.0;
|
|
761
|
-
}
|
|
762
|
-
|
|
763
|
-
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() {
|
|
764
415
|
if (_this.selectedCenter) {
|
|
765
|
-
|
|
416
|
+
var vector = new THREE.Vector3();
|
|
766
417
|
vector.copy(_this.selectedCenter);
|
|
418
|
+
|
|
767
419
|
var coord = _this.scene.vectorToScreenXY(vector);
|
|
420
|
+
|
|
768
421
|
_this.selectedScreenCoordinates.x = coord.x;
|
|
769
422
|
_this.selectedScreenCoordinates.y = coord.y;
|
|
770
423
|
}
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
424
|
+
};
|
|
425
|
+
|
|
426
|
+
var preRenderUpdateCallback = function preRenderUpdateCallback() {
|
|
427
|
+
return function () {
|
|
775
428
|
preRenderTimeUpdate();
|
|
776
|
-
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
var postRenderUpdateCallback = function() {
|
|
780
|
-
|
|
429
|
+
};
|
|
430
|
+
};
|
|
431
|
+
|
|
432
|
+
var postRenderUpdateCallback = function postRenderUpdateCallback() {
|
|
433
|
+
return function () {
|
|
781
434
|
postRenderSelectedCoordinatesUpdate();
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
*/
|
|
788
|
-
this.addTimeChangedCallback = function(callback) {
|
|
789
|
-
if (typeof(callback === "function"))
|
|
790
|
-
timeChangedCallbacks.push(callback);
|
|
791
|
-
}
|
|
792
|
-
|
|
793
|
-
this.setTexturePos = function(value) {
|
|
794
|
-
if (_this.sceneData.nerveMap && _this.sceneData.nerveMap.additionalReader)
|
|
795
|
-
_this.sceneData.nerveMap.additionalReader.setSliderPos(value);
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
this.addLayoutUpdateRequiredCallback = function(callback) {
|
|
799
|
-
if (typeof(callback === "function")) {
|
|
800
|
-
layoutUpdateRequiredCallbacks.push(callback);
|
|
801
|
-
}
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
this.addSceneChangedCallback = function(callback) {
|
|
805
|
-
if (typeof(callback === "function")) {
|
|
806
|
-
sceneChangedCallbacks.push(callback);
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
|
|
810
|
-
this.addOrganPartAddedCallback = function(callback) {
|
|
811
|
-
if (typeof(callback === "function"))
|
|
812
|
-
organPartAddedCallbacks.push(callback);
|
|
813
|
-
}
|
|
435
|
+
};
|
|
436
|
+
};
|
|
437
|
+
/**
|
|
438
|
+
* Add a callback which will be called when time has changed
|
|
439
|
+
*/
|
|
814
440
|
|
|
815
|
-
this.setFinishDownloadCallback = function(callback) {
|
|
816
|
-
if (typeof(callback === "function"))
|
|
817
|
-
finishDownloadCallback = callback;
|
|
818
|
-
}
|
|
819
441
|
|
|
820
|
-
this.
|
|
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 () {
|
|
821
465
|
finishDownloadCallback = undefined;
|
|
822
|
-
}
|
|
466
|
+
};
|
|
823
467
|
|
|
824
|
-
this.getNamedObjectsToScreenCoordinates = function(name, camera) {
|
|
468
|
+
this.getNamedObjectsToScreenCoordinates = function (name, camera) {
|
|
825
469
|
var vector = new THREE.Vector3();
|
|
826
|
-
vector.setFromMatrixPosition(
|
|
827
|
-
var widthHalf =
|
|
828
|
-
var heightHalf =
|
|
470
|
+
vector.setFromMatrixPosition(obj.matrixWorld);
|
|
471
|
+
var widthHalf = width / 2;
|
|
472
|
+
var heightHalf = height / 2;
|
|
829
473
|
vector.project(camera);
|
|
830
|
-
vector.x =
|
|
831
|
-
vector.y = -
|
|
474
|
+
vector.x = vector.x * widthHalf + widthHalf;
|
|
475
|
+
vector.y = -(vector.y * heightHalf) + heightHalf;
|
|
832
476
|
return vector;
|
|
833
|
-
}
|
|
477
|
+
};
|
|
834
478
|
|
|
835
|
-
var getIdObjectFromIntersect = function(intersected) {
|
|
479
|
+
var getIdObjectFromIntersect = function getIdObjectFromIntersect(intersected) {
|
|
836
480
|
var id = undefined;
|
|
837
481
|
var intersectedObject = undefined;
|
|
482
|
+
|
|
838
483
|
if (intersected !== undefined) {
|
|
839
|
-
if (intersected.object.userData &&
|
|
840
|
-
intersected.object.userData.isMarker) {
|
|
484
|
+
if (intersected.object.userData && intersected.object.userData.isMarker) {
|
|
841
485
|
intersectedObject = intersected.object.userData.parent.morph;
|
|
842
486
|
} else {
|
|
843
487
|
intersectedObject = intersected.object;
|
|
844
488
|
}
|
|
489
|
+
|
|
845
490
|
if (intersectedObject) {
|
|
846
491
|
if (intersectedObject.name) {
|
|
847
492
|
id = intersectedObject.name;
|
|
848
493
|
} else {
|
|
849
|
-
var annotations = _this.getAnnotationsFromObjects(
|
|
850
|
-
|
|
494
|
+
var annotations = _this.getAnnotationsFromObjects([intersectedObject]);
|
|
495
|
+
|
|
851
496
|
if (annotations && annotations[0]) {
|
|
852
497
|
id = annotations[0].data.group;
|
|
853
498
|
}
|
|
854
499
|
}
|
|
855
500
|
}
|
|
856
501
|
}
|
|
857
|
-
|
|
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
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
};
|
|
1158
|
+
|
|
1159
|
+
BaseModule.prototype.settingsChanged = function () {
|
|
1160
|
+
var callbackArray = this.onChangedCallbacks.slice();
|
|
1161
|
+
|
|
1162
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1163
|
+
callbackArray[i](this, MODULE_CHANGE.SETTINGS_CHANGED);
|
|
858
1164
|
}
|
|
859
|
-
|
|
860
|
-
/**
|
|
861
|
-
* Callback function when a pickable object has been picked. It will then
|
|
862
|
-
* call functions in tissueViewer and cellPanel to show corresponding
|
|
863
|
-
* informations.
|
|
864
|
-
*
|
|
865
|
-
* @callback
|
|
866
|
-
*/
|
|
867
|
-
var _pickingCallback = function() {
|
|
868
|
-
return function(intersects, window_x, window_y) {
|
|
869
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
870
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
871
|
-
if (idObject.id) {
|
|
872
|
-
if (_this.toolTip !== undefined) {
|
|
873
|
-
_this.toolTip.setText(idObject.id);
|
|
874
|
-
_this.toolTip.show(window_x, window_y);
|
|
875
|
-
}
|
|
876
|
-
_this.displayMessage(idObject.object.name + " selected.");
|
|
1165
|
+
};
|
|
877
1166
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
_this.toolTip.hide();
|
|
890
|
-
}
|
|
891
|
-
_this.setSelectedByObjects([], true);
|
|
892
|
-
}
|
|
893
|
-
}
|
|
894
|
-
};
|
|
895
|
-
|
|
896
|
-
/**
|
|
897
|
-
* Callback function when a pickable object has been hovered over. It will
|
|
898
|
-
* show objecty id/name as _this.toolTip text.
|
|
899
|
-
*
|
|
900
|
-
* @callback
|
|
901
|
-
*/
|
|
902
|
-
var _hoverCallback = function() {
|
|
903
|
-
return function(intersects, window_x, window_y) {
|
|
904
|
-
var intersected = _this.getIntersectedObject(intersects);
|
|
905
|
-
var idObject = getIdObjectFromIntersect(intersected);
|
|
906
|
-
if (idObject.id) {
|
|
907
|
-
_this.displayArea.style.cursor = "pointer";
|
|
908
|
-
if (_this.toolTip !== undefined) {
|
|
909
|
-
_this.toolTip.setText(idObject.id);
|
|
910
|
-
_this.toolTip.show(window_x, window_y);
|
|
911
|
-
}
|
|
912
|
-
_this.setHighlightedByObjects([idObject.object], true);
|
|
913
|
-
return;
|
|
914
|
-
}
|
|
915
|
-
else {
|
|
916
|
-
if (_this.toolTip !== undefined) {
|
|
917
|
-
_this.toolTip.hide();
|
|
918
|
-
}
|
|
919
|
-
_this.displayArea.style.cursor = "auto";
|
|
920
|
-
_this.setHighlightedByObjects([], true);
|
|
921
|
-
}
|
|
922
|
-
}
|
|
923
|
-
};
|
|
924
|
-
|
|
925
|
-
var changeOrganPartsVisibilityForScene = function(scene, name, value, type) {
|
|
926
|
-
if (type == "all" || type == "geometries") {
|
|
927
|
-
var geometries = scene.findGeometriesWithGroupName(name);
|
|
928
|
-
for (var i = 0; i < geometries.length; i ++ ) {
|
|
929
|
-
geometries[i].setVisibility(value);
|
|
930
|
-
}
|
|
931
|
-
}
|
|
932
|
-
if (type == "all" || type == "glyphsets") {
|
|
933
|
-
var glyphsets = scene.findGlyphsetsWithGroupName(name);
|
|
934
|
-
for (var i = 0; i < glyphsets.length; i ++ ) {
|
|
935
|
-
glyphsets[i].setVisibility(value);
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
if (type == "all" || type == "pointsets") {
|
|
939
|
-
var pointsets = scene.findPointsetsWithGroupName(name);
|
|
940
|
-
for (var i = 0; i < pointsets.length; i ++ ) {
|
|
941
|
-
pointsets[i].setVisibility(value);
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
if (type == "all" || type == "lines") {
|
|
945
|
-
var lines = scene.findLinesWithGroupName(name);
|
|
946
|
-
for (var i = 0; i < lines.length; i ++ ) {
|
|
947
|
-
lines[i].setVisibility(value);
|
|
948
|
-
}
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
|
|
952
|
-
/**
|
|
953
|
-
* Change visibility for parts of the current scene.
|
|
954
|
-
*/
|
|
955
|
-
this.changeGeometriesVisibility = function(name, value) {
|
|
956
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'geometries');
|
|
957
|
-
if (pickerScene)
|
|
958
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'geometries');
|
|
959
|
-
}
|
|
960
|
-
|
|
961
|
-
/**
|
|
962
|
-
* Change visibility for parts of the current scene.
|
|
963
|
-
*/
|
|
964
|
-
this.changeGlyphsetsVisibility = function(name, value) {
|
|
965
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'glyphsets');
|
|
966
|
-
if (pickerScene)
|
|
967
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'glyphsets');
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
/**
|
|
971
|
-
* Change visibility for parts of the current scene.
|
|
972
|
-
*/
|
|
973
|
-
this.changeLinesVisibility = function(name, value) {
|
|
974
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'lines');
|
|
975
|
-
if (pickerScene)
|
|
976
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'lines');
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
/**
|
|
980
|
-
* Change visibility for parts of the current scene.
|
|
981
|
-
*/
|
|
982
|
-
this.changePointsetsVisibility = function(name, value) {
|
|
983
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, 'pointsets');
|
|
984
|
-
if (pickerScene)
|
|
985
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, 'pointsets');
|
|
1167
|
+
BaseModule.prototype.exportSettings = function () {
|
|
1168
|
+
var settings = {};
|
|
1169
|
+
settings.dialog = this.typeName;
|
|
1170
|
+
settings.name = this.instanceName;
|
|
1171
|
+
return settings;
|
|
1172
|
+
};
|
|
1173
|
+
|
|
1174
|
+
BaseModule.prototype.importSettings = function (settings) {
|
|
1175
|
+
if (settings.dialog == this.typeName) {
|
|
1176
|
+
this.setName(settings.name);
|
|
1177
|
+
return true;
|
|
986
1178
|
}
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
type = typeIn;
|
|
995
|
-
changeOrganPartsVisibilityForScene(_this.scene, name, value, type);
|
|
996
|
-
if (pickerScene)
|
|
997
|
-
changeOrganPartsVisibilityForScene(pickerScene, name, value, type);
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
this.changeOrganPartsVisibilityCallback = function(name) {
|
|
1001
|
-
return function(value) {
|
|
1002
|
-
_this.changeOrganPartsVisibility(name, value);
|
|
1003
|
-
}
|
|
1004
|
-
}
|
|
1005
|
-
|
|
1006
|
-
/**
|
|
1007
|
-
* Change some of the ZincGeometry property for never map geometry
|
|
1008
|
-
*
|
|
1009
|
-
* @callback
|
|
1010
|
-
*/
|
|
1011
|
-
var _addNerveMapGeometryCallback = function(GroupName) {
|
|
1012
|
-
return function(geometry) {
|
|
1013
|
-
geometry.groupName = GroupName;
|
|
1014
|
-
if (imageCombiner && geometry.morph && geometry.morph.material.map) {
|
|
1015
|
-
geometry.morph.material.map = new THREE.Texture(imageCombiner.getCombinedImage());
|
|
1016
|
-
geometry.morph.material.map.needsUpdate = true;
|
|
1017
|
-
geometry.morph.material.needsUpdate = true;
|
|
1018
|
-
}
|
|
1019
|
-
}
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
/**
|
|
1023
|
-
* Read in the nerve map models onto the primary renderer when nerve map has
|
|
1024
|
-
* been toggled on.
|
|
1025
|
-
*/
|
|
1026
|
-
var setupNerveMapPrimaryRenderer = function() {
|
|
1027
|
-
var sceneName = _this.sceneData.currentName + "_nervemap";
|
|
1028
|
-
nerveMapScene = _this.zincRenderer.getSceneByName(sceneName);
|
|
1029
|
-
if (nerveMapScene == undefined) {
|
|
1030
|
-
var downloadPath = modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.meta;
|
|
1031
|
-
nerveMapScene = _this.zincRenderer.createScene(sceneName);
|
|
1032
|
-
nerveMapScene.loadMetadataURL(downloadPath, _addNerveMapGeometryCallback("threed"));
|
|
1033
|
-
if (_this.sceneData.nerveMap.threed.view !== undefined)
|
|
1034
|
-
nerveMapScene.loadViewURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + _this.sceneData.nerveMap.threed.view);
|
|
1035
|
-
else {
|
|
1036
|
-
nerveMapScene.loadViewURL(modelsLoader.getBodyDirectoryPrefix() + "/body_view.json");
|
|
1037
|
-
}
|
|
1038
|
-
nerveMapScene.ambient.intensity = 8.0;
|
|
1039
|
-
nerveMapScene.directionalLight.intensity = 0;
|
|
1040
|
-
var zincCameraControl = nerveMapScene.getZincCameraControls();
|
|
1041
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1042
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1043
|
-
_this.sceneData.nerveMap.additionalReader = new (__webpack_require__("6fd2").VaryingTexCoordsReader)(nerveMapScene);
|
|
1044
|
-
var urlsArray = [ modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_0.json",
|
|
1045
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi1_time_1.json",
|
|
1046
|
-
modelsLoader.getOrgansDirectoryPrefix() + "/digestive/stomach/nerve_map/3d/xi0_time_0.json"];
|
|
1047
|
-
_this.sceneData.nerveMap.additionalReader.loadURLsIntoBufferGeometry(urlsArray);
|
|
1048
|
-
}
|
|
1049
|
-
_this.zincRenderer.setCurrentScene(nerveMapScene);
|
|
1050
|
-
_this.graphicsHighlight.reset();
|
|
1051
|
-
}
|
|
1052
|
-
|
|
1053
|
-
var activateAdditionalNerveMapRenderer = function() {
|
|
1054
|
-
for (var i = 0; i < layoutUpdateRequiredCallbacks.length;i++) {
|
|
1055
|
-
layoutUpdateRequiredCallbacks[i](false, true);
|
|
1056
|
-
}
|
|
1057
|
-
}
|
|
1058
|
-
|
|
1059
|
-
/**
|
|
1060
|
-
* Nerve map has been toggled on/off, change organs renderer layput.
|
|
1061
|
-
*/
|
|
1062
|
-
this.changeNerveMapVisibility = function() {
|
|
1063
|
-
_this.sceneData.nerveMapIsActive = !_this.sceneData.nerveMapIsActive;
|
|
1064
|
-
if (_this.sceneData.nerveMapIsActive)
|
|
1065
|
-
setupNerveMapPrimaryRenderer();
|
|
1066
|
-
else {
|
|
1067
|
-
_this.zincRenderer.setCurrentScene(_this.scene);
|
|
1068
|
-
_this.graphicsHighlight.reset();
|
|
1069
|
-
}
|
|
1070
|
-
activateAdditionalNerveMapRenderer();
|
|
1071
|
-
}
|
|
1072
|
-
|
|
1073
|
-
this.changeBackgroundColour = function(backgroundColourString) {
|
|
1074
|
-
var colour = new THREE.Color(backgroundColourString);
|
|
1075
|
-
if (_this.zincRenderer) {
|
|
1076
|
-
var internalRenderer = _this.zincRenderer.getThreeJSRenderer();
|
|
1077
|
-
internalRenderer.setClearColor( colour, 1 );
|
|
1078
|
-
}
|
|
1079
|
-
}
|
|
1080
|
-
|
|
1081
|
-
var addOrganPartToSceneData = function(zincObject) {
|
|
1082
|
-
if (zincObject.groupName) {
|
|
1083
|
-
if (zincObject.isGeometry) {
|
|
1084
|
-
if (!_this.sceneData.geometries.includes(zincObject.groupName)) {
|
|
1085
|
-
_this.sceneData.geometries.push(zincObject.groupName);
|
|
1086
|
-
}
|
|
1087
|
-
} else if (zincObject.isGlyphset) {
|
|
1088
|
-
if (!_this.sceneData.glyphsets.includes(zincObject.groupName)) {
|
|
1089
|
-
_this.sceneData.glyphsets.push(zincObject.groupName);
|
|
1090
|
-
}
|
|
1091
|
-
} else if (zincObject.isLines) {
|
|
1092
|
-
if (!_this.sceneData.lines.includes(zincObject.groupName)) {
|
|
1093
|
-
_this.sceneData.lines.push(zincObject.groupName);
|
|
1094
|
-
}
|
|
1095
|
-
} else if (zincObject.isPointset) {
|
|
1096
|
-
if (!_this.sceneData.pointsets.includes(zincObject.groupName)) {
|
|
1097
|
-
_this.sceneData.pointsets.push(zincObject.groupName);
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
}
|
|
1101
|
-
}
|
|
1102
|
-
|
|
1103
|
-
var addOrganPart = function(systemName, partName, useDefautColour, zincObject) {
|
|
1104
|
-
for (var i = 0; i < organPartAddedCallbacks.length;i++) {
|
|
1105
|
-
organPartAddedCallbacks[i](zincObject.groupName, _this.scene.isTimeVarying(), zincObject);
|
|
1106
|
-
}
|
|
1107
|
-
if (useDefautColour)
|
|
1108
|
-
modelsLoader.setGeometryColour(zincObject, systemName, partName);
|
|
1109
|
-
addOrganPartToSceneData(zincObject);
|
|
1110
|
-
if (zincObject.groupName) {
|
|
1111
|
-
_this.displayMessage(zincObject.groupName + " loaded.");
|
|
1112
|
-
} else {
|
|
1113
|
-
_this.displayMessage("Resource loaded.");
|
|
1114
|
-
}
|
|
1115
|
-
var annotation = new (__webpack_require__("a0d7").annotation)();
|
|
1116
|
-
annotation.data = {species:_this.sceneData.currentSpecies, system:systemName, part:partName, group:zincObject.groupName};
|
|
1117
|
-
zincObject.userData = [annotation];
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
/**
|
|
1121
|
-
* New organs geometry has been added to the scene, add UIs and make
|
|
1122
|
-
* sure the viewport is correct.
|
|
1123
|
-
*/
|
|
1124
|
-
var _addOrganPartCallback = function(systemName, partName, useDefautColour) {
|
|
1125
|
-
return function(zincObject) {
|
|
1126
|
-
addOrganPart(systemName, partName, useDefautColour, zincObject);
|
|
1127
|
-
}
|
|
1128
|
-
}
|
|
1129
|
-
|
|
1130
|
-
var downloadCompletedCallback = function() {
|
|
1131
|
-
return function() {
|
|
1132
|
-
_this.settingsChanged();
|
|
1133
|
-
_this.sceneData.timeVarying = _this.scene.isTimeVarying();
|
|
1134
|
-
_this.displayMessage("All resources loaded.");
|
|
1135
|
-
if (finishDownloadCallback)
|
|
1136
|
-
finishDownloadCallback();
|
|
1137
|
-
}
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
|
|
1141
|
-
return function(geometry) {
|
|
1142
|
-
addOrganPart(systemName, partName, useDefautColour, geometry);
|
|
1143
|
-
_this.settingsChanged();
|
|
1144
|
-
}
|
|
1145
|
-
}
|
|
1146
|
-
|
|
1147
|
-
/**
|
|
1148
|
-
* Toggle data field displays. Data fields displays flow/pressure and <button @click="play">Play</button>
|
|
1149
|
-
* other activities of the organs.
|
|
1150
|
-
*/
|
|
1151
|
-
this.updateFieldvisibility = function(dataFields, value) {
|
|
1152
|
-
for ( var i = 0; i < dataFields.length; i ++ ) {
|
|
1153
|
-
if (value != i) {
|
|
1154
|
-
var geometryName = dataFields[i].PartName;
|
|
1155
|
-
_this.changeOrganPartsVisibility(geometryName, false);
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
if (value > -1) {
|
|
1159
|
-
var partName = dataFields[value].PartName;
|
|
1160
|
-
if ((_this.scene.findGeometriesWithGroupName(partName).length > 0) ||
|
|
1161
|
-
(_this.scene.findGlyphsetsWithGroupName(partName).length > 0)) {
|
|
1162
|
-
_this.changeOrganPartsVisibility(partName, true);
|
|
1163
|
-
} else {
|
|
1164
|
-
var partDetails = getOrganDetails(dataFields[value].SystemName, partName);
|
|
1165
|
-
if (partDetails != undefined) {
|
|
1166
|
-
_this.scene.loadMetadataURL(modelsLoader.getOrgansDirectoryPrefix() + "/" + partDetails.meta);
|
|
1167
|
-
}
|
|
1168
|
-
}
|
|
1169
|
-
}
|
|
1170
|
-
}
|
|
1171
|
-
|
|
1172
|
-
/**
|
|
1173
|
-
* Return an array containing name(s) of species that also contains the
|
|
1174
|
-
* currently displayed organs.
|
|
1175
|
-
*
|
|
1176
|
-
* @returns {Array} containing species name
|
|
1177
|
-
*/
|
|
1178
|
-
this.getAvailableSpecies = function(currentSpecies, currentSystem, currentPart) {
|
|
1179
|
-
var availableSpecies = new Array();
|
|
1180
|
-
availableSpecies.push("none");
|
|
1181
|
-
var keysArray = Object.keys(organsFileMap);
|
|
1182
|
-
for (index in keysArray) {
|
|
1183
|
-
var species = keysArray[index];
|
|
1184
|
-
if (species != currentSpecies) {
|
|
1185
|
-
if (organsFileMap[species].hasOwnProperty(currentSystem) &&
|
|
1186
|
-
organsFileMap[species][currentSystem].hasOwnProperty(currentPart)) {
|
|
1187
|
-
availableSpecies.push(species);
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
return availableSpecies;
|
|
1192
|
-
}
|
|
1193
|
-
|
|
1194
|
-
var setSceneData = function(speciesName, systemName, partName, organsDetails) {
|
|
1195
|
-
_this.sceneData.nerveMapIsActive = false;
|
|
1196
|
-
_this.sceneData.nerveMap = undefined;
|
|
1197
|
-
_this.sceneData.metaURL = "";
|
|
1198
|
-
_this.sceneData.viewURL = "";
|
|
1199
|
-
_this.sceneData.currentSpecies = speciesName;
|
|
1200
|
-
_this.sceneData.currentSystem = systemName;
|
|
1201
|
-
_this.sceneData.currentPart = partName;
|
|
1202
|
-
_this.sceneData.currentTime = 0.0;
|
|
1203
|
-
_this.sceneData.geometries.splice(0);
|
|
1204
|
-
_this.sceneData.lines.splice(0);
|
|
1205
|
-
_this.sceneData.glyphsets.splice(0);
|
|
1206
|
-
_this.sceneData.pointsets.splice(0);
|
|
1207
|
-
_this.sceneData.timeVarying = false;
|
|
1208
|
-
// This is used as title
|
|
1209
|
-
var name = "";
|
|
1210
|
-
if (speciesName)
|
|
1211
|
-
name = speciesName + "/";
|
|
1212
|
-
if (systemName)
|
|
1213
|
-
name = systemName + "/";
|
|
1214
|
-
if (partName)
|
|
1215
|
-
name = partName;
|
|
1216
|
-
_this.sceneData.currentName = name;
|
|
1217
|
-
}
|
|
1218
|
-
|
|
1219
|
-
this.loadOrgansFromURL = function(url, speciesName, systemName, partName, viewURL) {
|
|
1220
|
-
if (_this.zincRenderer) {
|
|
1221
|
-
if (partName && (_this.sceneData.metaURL !== url)) {
|
|
1222
|
-
setSceneData(speciesName, systemName, partName, undefined);
|
|
1223
|
-
var name = _this.sceneData.currentName;
|
|
1224
|
-
var organScene = _this.zincRenderer.getSceneByName(name);
|
|
1225
|
-
if (organScene) {
|
|
1226
|
-
organScene.clearAll();
|
|
1227
|
-
} else {
|
|
1228
|
-
organScene = _this.zincRenderer.createScene(name);
|
|
1229
|
-
}
|
|
1230
|
-
for (var i = 0; i < sceneChangedCallbacks.length;i++) {
|
|
1231
|
-
sceneChangedCallbacks[i](_this.sceneData);
|
|
1232
|
-
}
|
|
1233
|
-
if (viewURL && viewURL != "") {
|
|
1234
|
-
_this.sceneData.viewURL = viewURL;
|
|
1235
|
-
organScene.loadViewURL(_this.sceneData.viewURL);
|
|
1236
|
-
} else
|
|
1237
|
-
_this.sceneData.viewURL = undefined;
|
|
1238
|
-
_this.sceneData.metaURL = url;
|
|
1239
|
-
_this.displayMessage("Downloading...");
|
|
1240
|
-
organScene.loadMetadataURL(url, _addOrganPartCallback(systemName, partName, false),
|
|
1241
|
-
downloadCompletedCallback());
|
|
1242
|
-
_this.scene = organScene;
|
|
1243
|
-
_this.zincRenderer.setCurrentScene(organScene);
|
|
1244
|
-
_this.graphicsHighlight.reset();
|
|
1245
|
-
var zincCameraControl = organScene.getZincCameraControls();
|
|
1246
|
-
zincCameraControl.enableRaycaster(organScene, _pickingCallback(), _hoverCallback());
|
|
1247
|
-
zincCameraControl.setMouseButtonAction("AUXILIARY", "ZOOM");
|
|
1248
|
-
zincCameraControl.setMouseButtonAction("SECONDARY", "PAN");
|
|
1249
|
-
}
|
|
1250
|
-
}
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
this.alignCameraWithSelectedObject = function(transitionTime) {
|
|
1254
|
-
var objects = _this.graphicsHighlight.getSelected();
|
|
1255
|
-
if (objects && objects[0] && objects[0].userData) {
|
|
1256
|
-
_this.scene.alignObjectToCameraView(objects[0].userData, transitionTime);
|
|
1257
|
-
}
|
|
1258
|
-
}
|
|
1259
|
-
|
|
1260
|
-
this.exportSettings = function() {
|
|
1261
|
-
var settings = {};
|
|
1262
|
-
settings.name = _this.instanceName;
|
|
1263
|
-
if (_this.sceneData.currentSystem)
|
|
1264
|
-
settings.system = _this.sceneData.currentSystem;
|
|
1265
|
-
if (_this.sceneData.currentSpecies)
|
|
1266
|
-
settings.species = _this.sceneData.currentSpecies;
|
|
1267
|
-
if (_this.sceneData.currentPart)
|
|
1268
|
-
settings.part = _this.sceneData.currentPart;
|
|
1269
|
-
settings.metaURL = _this.sceneData.metaURL;
|
|
1270
|
-
if (_this.sceneData.viewURL)
|
|
1271
|
-
settings.viewURL = _this.sceneData.viewURL;
|
|
1272
|
-
settings.dialog = "Organ Viewer";
|
|
1273
|
-
return settings;
|
|
1274
|
-
}
|
|
1275
|
-
|
|
1276
|
-
this.importSettings = function(settings) {
|
|
1277
|
-
if (settings && (settings.dialog == this.typeName)) {
|
|
1278
|
-
_this.setName(settings.name);
|
|
1279
|
-
if (settings.metaURL !== undefined && settings.metaURL != "") {
|
|
1280
|
-
_this.loadOrgansFromURL(settings.metaURL, settings.species,
|
|
1281
|
-
settings.system, settings.part, settings.viewURL);
|
|
1282
|
-
} else {
|
|
1283
|
-
_this.loadOrgans(settings.species, settings.system, settings.part);
|
|
1284
|
-
}
|
|
1285
|
-
return true;
|
|
1286
|
-
}
|
|
1287
|
-
return false;
|
|
1288
|
-
}
|
|
1289
|
-
|
|
1290
|
-
/**
|
|
1291
|
-
* initialise loading of the html layout for the organs panel, this is
|
|
1292
|
-
* called when the {@link PJP.OrgansViewer} is created.
|
|
1293
|
-
*
|
|
1294
|
-
* @async
|
|
1295
|
-
*/
|
|
1296
|
-
var initialise = function() {
|
|
1297
|
-
_this.initialiseRenderer(undefined);
|
|
1298
|
-
if (_this.zincRenderer) {
|
|
1299
|
-
_this.zincRenderer.addPreRenderCallbackFunction(preRenderUpdateCallback());
|
|
1300
|
-
_this.zincRenderer.addPostRenderCallbackFunction(postRenderUpdateCallback());
|
|
1301
|
-
}
|
|
1179
|
+
|
|
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);
|
|
1302
1186
|
}
|
|
1303
|
-
|
|
1304
|
-
initialise();
|
|
1187
|
+
};
|
|
1305
1188
|
|
|
1306
|
-
|
|
1189
|
+
BaseModule.prototype.getName = function () {
|
|
1190
|
+
return this.instanceName;
|
|
1191
|
+
};
|
|
1307
1192
|
|
|
1308
|
-
|
|
1309
|
-
|
|
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();
|
|
1310
1196
|
|
|
1197
|
+
for (var i = 0; i < callbackArray.length; i++) {
|
|
1198
|
+
callbackArray[i](this, MODULE_CHANGE.DESTROYED);
|
|
1199
|
+
}
|
|
1311
1200
|
|
|
1312
|
-
|
|
1201
|
+
delete this;
|
|
1202
|
+
};
|
|
1313
1203
|
|
|
1314
|
-
|
|
1315
|
-
|
|
1204
|
+
BaseModule.prototype.addChangedCallback = function (callback) {
|
|
1205
|
+
if (this.onChangedCallbacks.includes(callback) == false) this.onChangedCallbacks.push(callback);
|
|
1206
|
+
};
|
|
1316
1207
|
|
|
1317
|
-
|
|
1208
|
+
BaseModule.prototype.removeChangedCallback = function (callback) {
|
|
1209
|
+
var index = this.onChangedCallbacks.indexOf(callback);
|
|
1210
|
+
|
|
1211
|
+
if (index > -1) {
|
|
1212
|
+
this.onChangedCallbacks.splice(index, 1);
|
|
1213
|
+
}
|
|
1214
|
+
};
|
|
1215
|
+
|
|
1216
|
+
BaseModule.prototype.addNotifier = function (eventNotifier) {
|
|
1217
|
+
this.eventNotifiers.push(eventNotifier);
|
|
1218
|
+
};
|
|
1219
|
+
|
|
1220
|
+
exports.BaseModule = BaseModule;
|
|
1221
|
+
exports.MODULE_CHANGE = MODULE_CHANGE;
|
|
1318
1222
|
|
|
1319
1223
|
/***/ }),
|
|
1320
1224
|
|
|
@@ -1339,160 +1243,40 @@ module.exports = require("element-ui/lib/row");
|
|
|
1339
1243
|
|
|
1340
1244
|
/***/ }),
|
|
1341
1245
|
|
|
1342
|
-
/***/ "
|
|
1246
|
+
/***/ "7037":
|
|
1343
1247
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1344
1248
|
|
|
1345
|
-
|
|
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");
|
|
1346
1260
|
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
var shadersUniforms = THREE.UniformsUtils.merge( [
|
|
1364
|
-
{
|
|
1365
|
-
ambient : { type: "c", value: new THREE.Color( 0x000000 ) },
|
|
1366
|
-
diffuse : { type: "c", value: new THREE.Color( 0xffffff ) },
|
|
1367
|
-
emissive : { type: "c", value: new THREE.Color( 0xbbbbbb ) },
|
|
1368
|
-
specular : { type: "c", value: new THREE.Color( 0x111111 ) },
|
|
1369
|
-
shininess: { type: "f", value: 100 },
|
|
1370
|
-
opacity: { type: "f", value: 1.0 },
|
|
1371
|
-
ambientLightColor: { type: "c", value: new THREE.Color( 0xF0F0F0 ) },
|
|
1372
|
-
directionalLightColor: { type: "c", value: new THREE.Color( 0x555555) },
|
|
1373
|
-
directionalLightDirection: { type: "v3", value: new THREE.Vector3() },
|
|
1374
|
-
offsetRepeat: { value: new THREE.Vector4( 0, 0, 1, 1 ) },
|
|
1375
|
-
time: { type: "f", value: 0.0 },
|
|
1376
|
-
slide_pos: { type: "f", value: 1.0 },
|
|
1377
|
-
myTex: {type: 't', value: null}
|
|
1378
|
-
} ] );
|
|
1379
|
-
|
|
1380
|
-
var addGeometryIntoBufferGeometry = function(order, geometry)
|
|
1381
|
-
{
|
|
1382
|
-
var arrayLength = geometry.faces.length * 3 * 3;
|
|
1383
|
-
var positions = new Float32Array( arrayLength );
|
|
1384
|
-
var colors = new Float32Array( arrayLength );
|
|
1385
|
-
var normals = new Float32Array( arrayLength );
|
|
1386
|
-
var texCoords = new Float32Array( geometry.faces.length * 3 * 2 );
|
|
1387
|
-
if (bufferGeometry === undefined)
|
|
1388
|
-
bufferGeometry = new THREE.BufferGeometry();
|
|
1389
|
-
|
|
1390
|
-
geometry.faces.forEach( function ( face, index ) {
|
|
1391
|
-
positions[ index * 9 + 0 ] = geometry.vertices[ face.a ].x;
|
|
1392
|
-
positions[ index * 9 + 1 ] = geometry.vertices[ face.a ].y;
|
|
1393
|
-
positions[ index * 9 + 2 ] = geometry.vertices[ face.a ].z;
|
|
1394
|
-
positions[ index * 9 + 3 ] = geometry.vertices[ face.b ].x;
|
|
1395
|
-
positions[ index * 9 + 4 ] = geometry.vertices[ face.b ].y;
|
|
1396
|
-
positions[ index * 9 + 5 ] = geometry.vertices[ face.b ].z;
|
|
1397
|
-
positions[ index * 9 + 6 ] = geometry.vertices[ face.c ].x;
|
|
1398
|
-
positions[ index * 9 + 7 ] = geometry.vertices[ face.c ].y;
|
|
1399
|
-
positions[ index * 9 + 8 ] = geometry.vertices[ face.c ].z;
|
|
1400
|
-
|
|
1401
|
-
normals[ index * 9 + 0 ] = face.vertexNormals[0].x;
|
|
1402
|
-
normals[ index * 9 + 1 ] = face.vertexNormals[0].y;
|
|
1403
|
-
normals[ index * 9 + 2 ] = face.vertexNormals[0].z;
|
|
1404
|
-
normals[ index * 9 + 3 ] = face.vertexNormals[1].x;
|
|
1405
|
-
normals[ index * 9 + 4 ] = face.vertexNormals[1].y;
|
|
1406
|
-
normals[ index * 9 + 5 ] = face.vertexNormals[1].z;
|
|
1407
|
-
normals[ index * 9 + 6 ] = face.vertexNormals[2].x;
|
|
1408
|
-
normals[ index * 9 + 7 ] = face.vertexNormals[2].y;
|
|
1409
|
-
normals[ index * 9 + 8 ] = face.vertexNormals[2].z;
|
|
1410
|
-
|
|
1411
|
-
texCoords[ index * 6 + 0] = geometry.faceVertexUvs[ 0 ][index][0].x;
|
|
1412
|
-
texCoords[ index * 6 + 1] = geometry.faceVertexUvs[ 0 ][index][0].y;
|
|
1413
|
-
texCoords[ index * 6 + 2] = geometry.faceVertexUvs[ 0 ][index][1].x;
|
|
1414
|
-
texCoords[ index * 6 + 3] = geometry.faceVertexUvs[ 0 ][index][1].y;
|
|
1415
|
-
texCoords[ index * 6 + 4] = geometry.faceVertexUvs[ 0 ][index][2].x;
|
|
1416
|
-
texCoords[ index * 6 + 5] = geometry.faceVertexUvs[ 0 ][index][2].y;
|
|
1417
|
-
} );
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
if (order == 0) {
|
|
1421
|
-
bufferGeometry.addAttribute( "position", new THREE.BufferAttribute( positions, 3) );
|
|
1422
|
-
bufferGeometry.addAttribute( "normal", new THREE.BufferAttribute( normals, 3 ) );
|
|
1423
|
-
bufferGeometry.addAttribute( "uv", new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1424
|
-
} else {
|
|
1425
|
-
var positionStr = "position_" + order;
|
|
1426
|
-
var normalStr = "normal_" + order;
|
|
1427
|
-
var uvsStr = "uv_" + order;
|
|
1428
|
-
bufferGeometry.addAttribute( positionStr, new THREE.BufferAttribute( positions, 3) );
|
|
1429
|
-
bufferGeometry.addAttribute( normalStr, new THREE.BufferAttribute( normals, 3 ) );
|
|
1430
|
-
bufferGeometry.addAttribute( uvsStr, new THREE.BufferAttribute( texCoords, 2 ) );
|
|
1431
|
-
}
|
|
1432
|
-
|
|
1433
|
-
}
|
|
1434
|
-
|
|
1435
|
-
var meshReady = function(bufferGeometryIn, shaderText, material){
|
|
1436
|
-
var shaderMaterial = new THREE.RawShaderMaterial( {
|
|
1437
|
-
vertexShader: shaderText[0],
|
|
1438
|
-
fragmentShader: shaderText[1],
|
|
1439
|
-
uniforms: shadersUniforms
|
|
1440
|
-
} );
|
|
1441
|
-
shaderMaterial.uniforms.myTex.value = texture;
|
|
1442
|
-
shaderMaterial.side = THREE.DoubleSide;
|
|
1443
|
-
shaderMaterial.depthTest = true;
|
|
1444
|
-
shaderMaterial.needsUpdate = true;
|
|
1445
|
-
shaderMaterial.map = texture;
|
|
1446
|
-
shaderMaterial.uniforms.myTex.value.needsUpdate = true;
|
|
1447
|
-
shaderMaterial.opacity = 1.0;
|
|
1448
|
-
zincGeometry = scene.addZincGeometry(bufferGeometryIn, 30001, undefined, undefined, false, false, true, undefined, shaderMaterial);
|
|
1449
|
-
zincGeometry.groupName = "varyingTexture";
|
|
1450
|
-
}
|
|
1451
|
-
|
|
1452
|
-
var myLoader = function(order, shaderText) {
|
|
1453
|
-
return function(geometry, materials){
|
|
1454
|
-
var material = 0;
|
|
1455
|
-
addGeometryIntoBufferGeometry(order, geometry);
|
|
1456
|
-
completedInputs++;
|
|
1457
|
-
if (completedInputs == numberOfInputs) {
|
|
1458
|
-
meshReady(bufferGeometry, shaderText, material);
|
|
1459
|
-
if (finishCallbackFunction != undefined && (typeof finishCallbackFunction == 'function'))
|
|
1460
|
-
finishCallbackFunction(bufferGeometry);
|
|
1461
|
-
}
|
|
1462
|
-
}
|
|
1463
|
-
}
|
|
1464
|
-
|
|
1465
|
-
this.setSliderPos = function(pos) {
|
|
1466
|
-
if (zincGeometry)
|
|
1467
|
-
zincGeometry.morph.material.uniforms.slide_pos.value = pos;
|
|
1468
|
-
}
|
|
1469
|
-
|
|
1470
|
-
this.setTime = function(time) {
|
|
1471
|
-
if (zincGeometry) {
|
|
1472
|
-
zincGeometry.morph.material.uniforms.time.value = time;
|
|
1473
|
-
}
|
|
1474
|
-
}
|
|
1475
|
-
|
|
1476
|
-
this.setTexture = function(textureIn) {
|
|
1477
|
-
if (zincGeometry) {
|
|
1478
|
-
zincGeometry.morph.material.uniforms.myTex.value = textureIn;
|
|
1479
|
-
zincGeometry.morph.material.uniforms.myTex.value.needsUpdate = true;
|
|
1480
|
-
}
|
|
1481
|
-
}
|
|
1482
|
-
|
|
1483
|
-
this.loadURLsIntoBufferGeometry = function(urls, finishCallback, progressCallback, errorCallback) {
|
|
1484
|
-
var loader = new THREE.JSONLoader( true );
|
|
1485
|
-
numberOfInputs = urls.length;
|
|
1486
|
-
finishCallbackFunction = finishCallback;
|
|
1487
|
-
var shaderText = [
|
|
1488
|
-
__webpack_require__("1823"),
|
|
1489
|
-
__webpack_require__("4e8a")
|
|
1490
|
-
];
|
|
1491
|
-
for (var i = 0; i < numberOfInputs; i++)
|
|
1492
|
-
loader.load( urls[i], myLoader(i, shaderText), progressCallback, errorCallback);
|
|
1493
|
-
}
|
|
1261
|
+
__webpack_require__("1ce0");
|
|
1262
|
+
|
|
1263
|
+
function _typeof(obj) {
|
|
1264
|
+
"@babel/helpers - typeof";
|
|
1265
|
+
|
|
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);
|
|
1494
1277
|
}
|
|
1495
1278
|
|
|
1279
|
+
module.exports = _typeof;
|
|
1496
1280
|
|
|
1497
1281
|
/***/ }),
|
|
1498
1282
|
|
|
@@ -1503,105 +1287,68 @@ module.exports = require("element-ui/lib/theme-chalk/col.css");
|
|
|
1503
1287
|
|
|
1504
1288
|
/***/ }),
|
|
1505
1289
|
|
|
1506
|
-
/***/ "
|
|
1507
|
-
/***/ (function(module,
|
|
1508
|
-
|
|
1509
|
-
"use strict";
|
|
1510
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("24f0");
|
|
1511
|
-
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_318fd7c8_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
1512
|
-
/* unused harmony reexport * */
|
|
1290
|
+
/***/ "73ef":
|
|
1291
|
+
/***/ (function(module, exports) {
|
|
1513
1292
|
|
|
1293
|
+
module.exports = require("element-ui/lib/theme-chalk/main.css");
|
|
1514
1294
|
|
|
1515
1295
|
/***/ }),
|
|
1516
1296
|
|
|
1517
|
-
/***/ "
|
|
1297
|
+
/***/ "7c81":
|
|
1518
1298
|
/***/ (function(module, exports) {
|
|
1519
1299
|
|
|
1520
|
-
module.exports = require("
|
|
1300
|
+
module.exports = require("core-js/modules/es.array.splice");
|
|
1521
1301
|
|
|
1522
1302
|
/***/ }),
|
|
1523
1303
|
|
|
1524
|
-
/***/ "
|
|
1304
|
+
/***/ "7d9b":
|
|
1525
1305
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1526
1306
|
|
|
1527
|
-
|
|
1307
|
+
// extracted by mini-css-extract-plugin
|
|
1528
1308
|
|
|
1529
|
-
|
|
1530
|
-
var tooltipcontainerElement = undefined;
|
|
1531
|
-
var tipElement = undefined;
|
|
1532
|
-
var tiptextElement = undefined;
|
|
1533
|
-
var template = '<div class="mptooltip" id="tip"><span class="mptooltiptext" id="tiptext"> Tooltip text</span></div>';
|
|
1534
|
-
var _this = this;
|
|
1535
|
-
|
|
1536
|
-
/**
|
|
1537
|
-
* Show tool tip on the specified windows coordinates.
|
|
1538
|
-
* @param {Number} x - Style sheet with the same title.
|
|
1539
|
-
* @param {Number} y - selector string to match.
|
|
1540
|
-
*/
|
|
1541
|
-
this.show = function(x, y) {
|
|
1542
|
-
tooltipcontainerElement.style.left = x +"px";
|
|
1543
|
-
tooltipcontainerElement.style.top = (y - 20) + "px";
|
|
1544
|
-
tipElement.style.visibility = "visible";
|
|
1545
|
-
tipElement.style.opacity = 1;
|
|
1546
|
-
tiptextElement.style.visibility = "visible";
|
|
1547
|
-
tiptextElement.style.opacity = 1;
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
|
-
this.hide = function() {
|
|
1551
|
-
tipElement.style.visibility = "hidden";
|
|
1552
|
-
tipElement.style.opacity = 0;
|
|
1553
|
-
tiptextElement.style.visibility = "hidden";
|
|
1554
|
-
tiptextElement.style.opacity = 0;
|
|
1555
|
-
}
|
|
1556
|
-
|
|
1557
|
-
/**
|
|
1558
|
-
* Change the tooltip text.
|
|
1559
|
-
* @param {String} text - Text to update the tooltip to.
|
|
1560
|
-
*/
|
|
1561
|
-
this.setText = function(text) {
|
|
1562
|
-
tiptextElement.innerHTML = text;
|
|
1563
|
-
}
|
|
1309
|
+
/***/ }),
|
|
1564
1310
|
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
parent[0].appendChild(childNodes[i]);
|
|
1572
|
-
}
|
|
1573
|
-
*/
|
|
1574
|
-
tipElement = tooltipcontainerElement.querySelector("#tip");
|
|
1575
|
-
tiptextElement = tooltipcontainerElement.querySelector("#tiptext");
|
|
1576
|
-
container.appendChild(tooltipcontainerElement);
|
|
1577
|
-
|
|
1578
|
-
}
|
|
1579
|
-
|
|
1580
|
-
setupToolTipContainer();
|
|
1581
|
-
}
|
|
1311
|
+
/***/ "7f9f":
|
|
1312
|
+
/***/ (function(module, exports) {
|
|
1313
|
+
|
|
1314
|
+
module.exports = require("element-ui/lib/locale");
|
|
1315
|
+
|
|
1316
|
+
/***/ }),
|
|
1582
1317
|
|
|
1318
|
+
/***/ "80c4":
|
|
1319
|
+
/***/ (function(module, exports) {
|
|
1583
1320
|
|
|
1321
|
+
module.exports = require("element-ui/lib/theme-chalk/option.css");
|
|
1584
1322
|
|
|
1585
1323
|
/***/ }),
|
|
1586
1324
|
|
|
1587
|
-
/***/ "
|
|
1325
|
+
/***/ "8278":
|
|
1588
1326
|
/***/ (function(module, exports, __webpack_require__) {
|
|
1589
1327
|
|
|
1590
|
-
|
|
1328
|
+
__webpack_require__("bcd8");
|
|
1329
|
+
|
|
1330
|
+
var _readOnlyError = __webpack_require__("da60");
|
|
1591
1331
|
|
|
1332
|
+
var THREE = __webpack_require__("9206").THREE;
|
|
1592
1333
|
/**
|
|
1593
1334
|
* Create a {@link Zinc.Renderer} on the dom element with corresponding elementID.
|
|
1594
1335
|
* @param {String} elementID - id of the target dom element.
|
|
1595
1336
|
* @returns {Zinc.Renderer}
|
|
1596
1337
|
*/
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
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
|
+
;
|
|
1601
1346
|
localContainer.style.height = "100%";
|
|
1347
|
+
|
|
1602
1348
|
if (WEBGL.isWebGLAvailable()) {
|
|
1603
1349
|
var Zinc = __webpack_require__("9206");
|
|
1604
|
-
|
|
1350
|
+
|
|
1351
|
+
localRenderer = new Zinc.Renderer(localContainer, window);
|
|
1605
1352
|
Zinc.defaultMaterialColor = 0xFFFF9C;
|
|
1606
1353
|
localRenderer.initialiseVisualisation();
|
|
1607
1354
|
localRenderer.playAnimation = false;
|
|
@@ -1609,278 +1356,253 @@ var createRenderer = function () {
|
|
|
1609
1356
|
var warning = WEBGL.getWebGLErrorMessage();
|
|
1610
1357
|
localContainer.appendChild(warning);
|
|
1611
1358
|
}
|
|
1612
|
-
return {"renderer":localRenderer, "container":localContainer};
|
|
1613
|
-
}
|
|
1614
1359
|
|
|
1615
|
-
|
|
1616
|
-
|
|
1360
|
+
return {
|
|
1361
|
+
"renderer": localRenderer,
|
|
1362
|
+
"container": localContainer
|
|
1363
|
+
};
|
|
1364
|
+
};
|
|
1365
|
+
|
|
1366
|
+
var RendererModule = function RendererModule() {
|
|
1367
|
+
__webpack_require__("6aa6").BaseModule.call(this);
|
|
1368
|
+
|
|
1617
1369
|
this.scene = undefined;
|
|
1618
|
-
this.toolTip = undefined;
|
|
1619
1370
|
this.rendererContainer = undefined;
|
|
1620
1371
|
this.displayArea = undefined;
|
|
1621
|
-
this.graphicsHighlight = new (__webpack_require__("
|
|
1372
|
+
this.graphicsHighlight = new (__webpack_require__("5ec5").GraphicsHighlight)();
|
|
1622
1373
|
this.zincRenderer = null;
|
|
1623
1374
|
this.selectedScreenCoordinates = new THREE.Vector3();
|
|
1624
1375
|
this.selectedCenter = undefined;
|
|
1625
|
-
}
|
|
1626
|
-
|
|
1627
|
-
RendererModule.prototype = Object.create((__webpack_require__("3966").BaseModule).prototype);
|
|
1376
|
+
};
|
|
1628
1377
|
|
|
1378
|
+
RendererModule.prototype = Object.create(__webpack_require__("6aa6").BaseModule.prototype);
|
|
1629
1379
|
/**
|
|
1630
1380
|
* This function will get the the first intersected object with name or
|
|
1631
1381
|
* the first glyph object with name.
|
|
1632
1382
|
*/
|
|
1633
|
-
RendererModule.prototype.getIntersectedObject = function(intersects) {
|
|
1634
|
-
if (intersects) {
|
|
1635
|
-
for (var i = 0; i < intersects.length; i++) {
|
|
1636
|
-
if (intersects[i] !== undefined) {
|
|
1637
|
-
if (intersects[i].object &&
|
|
1638
|
-
intersects[i].object.userData &&
|
|
1639
|
-
intersects[i].object.userData.isZincObject &&
|
|
1640
|
-
(intersects[i].object.name ||
|
|
1641
|
-
intersects[i].object.userData.isMarker))
|
|
1642
|
-
return intersects[i];
|
|
1643
|
-
}
|
|
1644
|
-
}
|
|
1645
|
-
}
|
|
1646
|
-
return undefined;
|
|
1647
|
-
}
|
|
1648
1383
|
|
|
1649
|
-
RendererModule.prototype.
|
|
1650
|
-
|
|
1651
|
-
for (var i = 0; i <
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
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
|
+
var count = 0;
|
|
1399
|
+
|
|
1400
|
+
for (var i = 0; i < objects.length; i++) {
|
|
1401
|
+
var zincObject = objects[i].userData;
|
|
1402
|
+
var annotation = undefined;
|
|
1403
|
+
|
|
1404
|
+
if (zincObject) {
|
|
1405
|
+
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1406
|
+
var glyphset = zincObject;
|
|
1407
|
+
if (zincObject.isGlyph) glyphset = (_readOnlyError("glyphset"), zincObject.getGlyphset());
|
|
1408
|
+
annotation = glyphset.userData ? glyphset.userData[0] : undefined;
|
|
1409
|
+
|
|
1410
|
+
if (annotation && annotation.data) {
|
|
1411
|
+
if (objects[i].name && objects[i].name != "") annotation.data.id = objects[i].name;else annotation.data.id = glyphset.groupName;
|
|
1412
|
+
}
|
|
1413
|
+
} else {
|
|
1414
|
+
annotation = zincObject.userData ? zincObject.userData[0] : undefined;
|
|
1415
|
+
|
|
1416
|
+
if (annotation && annotation.data) {
|
|
1417
|
+
annotation.data.id = objects[i].name;
|
|
1671
1418
|
}
|
|
1672
1419
|
}
|
|
1673
|
-
annotations[i] = annotation;
|
|
1674
1420
|
}
|
|
1675
|
-
return annotations;
|
|
1676
|
-
}
|
|
1677
1421
|
|
|
1678
|
-
|
|
1422
|
+
if (annotation) annotations[count++] = annotation;
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1425
|
+
return annotations;
|
|
1426
|
+
};
|
|
1427
|
+
|
|
1428
|
+
RendererModule.prototype.setHighlightedByObjects = function (objects, propagateChanges) {
|
|
1679
1429
|
var changed = this.graphicsHighlight.setHighlighted(objects);
|
|
1430
|
+
|
|
1680
1431
|
if (changed && propagateChanges) {
|
|
1681
|
-
var eventType = __webpack_require__("
|
|
1432
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.HIGHLIGHTED;
|
|
1433
|
+
|
|
1682
1434
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1683
1435
|
this.publishChanges(annotations, eventType);
|
|
1684
1436
|
}
|
|
1685
|
-
return changed;
|
|
1686
|
-
}
|
|
1687
1437
|
|
|
1438
|
+
return changed;
|
|
1439
|
+
};
|
|
1688
1440
|
|
|
1689
|
-
RendererModule.prototype.setHighlightedByZincObject = function(
|
|
1690
|
-
zincObject, propagateChanges)
|
|
1691
|
-
|
|
1692
|
-
}
|
|
1441
|
+
RendererModule.prototype.setHighlightedByZincObject = function (zincObject, propagateChanges) {
|
|
1442
|
+
return this.setHighlightedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1443
|
+
};
|
|
1693
1444
|
|
|
1694
|
-
RendererModule.prototype.setupLiveCoordinates = function(zincObjects) {
|
|
1695
|
-
if (zincObjects &&
|
|
1445
|
+
RendererModule.prototype.setupLiveCoordinates = function (zincObjects) {
|
|
1446
|
+
if (zincObjects && zincObjects.length > 0) {
|
|
1696
1447
|
var boundingBox = this.scene.getBoundingBoxOfZincObjects(zincObjects);
|
|
1697
|
-
|
|
1448
|
+
var newSelectedCenter = new THREE.Vector3();
|
|
1698
1449
|
boundingBox.getCenter(newSelectedCenter);
|
|
1699
|
-
if (this.selectedCenter == undefined)
|
|
1700
|
-
this.selectedCenter = newSelectedCenter;
|
|
1701
|
-
else {
|
|
1450
|
+
if (this.selectedCenter == undefined) this.selectedCenter = newSelectedCenter;else {
|
|
1702
1451
|
this.selectedCenter.x = newSelectedCenter.x;
|
|
1703
1452
|
this.selectedCenter.y = newSelectedCenter.y;
|
|
1704
1453
|
}
|
|
1705
1454
|
} else {
|
|
1706
1455
|
this.selectedCenter = undefined;
|
|
1707
1456
|
}
|
|
1708
|
-
}
|
|
1457
|
+
};
|
|
1709
1458
|
|
|
1710
|
-
RendererModule.prototype.objectsToZincObjects = function(objects) {
|
|
1459
|
+
RendererModule.prototype.objectsToZincObjects = function (objects) {
|
|
1711
1460
|
var zincObjects = [];
|
|
1461
|
+
|
|
1712
1462
|
for (var i = 0; i < objects.length; i++) {
|
|
1713
1463
|
var zincObject = objects[i].userData;
|
|
1464
|
+
|
|
1714
1465
|
if (zincObject) {
|
|
1715
1466
|
if (zincObject.isGlyph || zincObject.isGlyphset) {
|
|
1716
1467
|
var glyphset = zincObject;
|
|
1717
|
-
if (zincObject.isGlyph)
|
|
1718
|
-
|
|
1719
|
-
zincObjects. push(glyphset);
|
|
1468
|
+
if (zincObject.isGlyph) glyphset = zincObject.getGlyphset();
|
|
1469
|
+
zincObjects.push(glyphset);
|
|
1720
1470
|
} else {
|
|
1721
|
-
zincObjects.
|
|
1471
|
+
zincObjects.push(zincObject);
|
|
1722
1472
|
}
|
|
1723
1473
|
}
|
|
1724
1474
|
}
|
|
1725
|
-
return zincObjects;
|
|
1726
|
-
}
|
|
1727
1475
|
|
|
1476
|
+
return zincObjects;
|
|
1477
|
+
};
|
|
1728
1478
|
|
|
1729
|
-
RendererModule.prototype.setSelectedByObjects = function(
|
|
1730
|
-
objects, propagateChanges) {
|
|
1479
|
+
RendererModule.prototype.setSelectedByObjects = function (objects, propagateChanges) {
|
|
1731
1480
|
var changed = this.graphicsHighlight.setSelected(objects);
|
|
1481
|
+
|
|
1732
1482
|
if (changed) {
|
|
1733
1483
|
var zincObjects = this.objectsToZincObjects(objects);
|
|
1734
1484
|
this.setupLiveCoordinates(zincObjects);
|
|
1485
|
+
|
|
1735
1486
|
if (propagateChanges) {
|
|
1736
|
-
var eventType = __webpack_require__("
|
|
1487
|
+
var eventType = __webpack_require__("9b21").EVENT_TYPE.SELECTED;
|
|
1488
|
+
|
|
1737
1489
|
var annotations = this.getAnnotationsFromObjects(objects);
|
|
1738
1490
|
this.publishChanges(annotations, eventType);
|
|
1739
1491
|
}
|
|
1740
1492
|
}
|
|
1493
|
+
|
|
1741
1494
|
return changed;
|
|
1742
|
-
}
|
|
1495
|
+
};
|
|
1743
1496
|
|
|
1744
|
-
RendererModule.prototype.setSelectedByZincObject = function(
|
|
1745
|
-
zincObject, propagateChanges) {
|
|
1497
|
+
RendererModule.prototype.setSelectedByZincObject = function (zincObject, propagateChanges) {
|
|
1746
1498
|
return this.setSelectedByObjects([zincObject ? zincObject.morph : undefined], propagateChanges);
|
|
1747
|
-
}
|
|
1499
|
+
};
|
|
1748
1500
|
|
|
1749
|
-
var addGlyphToArray = function(objects) {
|
|
1750
|
-
return function(glyph) {
|
|
1501
|
+
var addGlyphToArray = function addGlyphToArray(objects) {
|
|
1502
|
+
return function (glyph) {
|
|
1751
1503
|
objects.push(glyph.getMesh());
|
|
1752
|
-
}
|
|
1753
|
-
}
|
|
1504
|
+
};
|
|
1505
|
+
};
|
|
1754
1506
|
|
|
1755
|
-
RendererModule.prototype.findObjectsByGroupName = function(groupName) {
|
|
1507
|
+
RendererModule.prototype.findObjectsByGroupName = function (groupName) {
|
|
1756
1508
|
var geometries = this.scene.findGeometriesWithGroupName(groupName);
|
|
1757
1509
|
var objects = [];
|
|
1758
|
-
|
|
1510
|
+
|
|
1511
|
+
for (var i = 0; i < geometries.length; i++) {
|
|
1759
1512
|
objects.push(geometries[i].morph);
|
|
1760
1513
|
}
|
|
1514
|
+
|
|
1761
1515
|
var glyphsets = this.scene.findGlyphsetsWithGroupName(groupName);
|
|
1762
|
-
|
|
1763
|
-
|
|
1516
|
+
|
|
1517
|
+
for (var _i = 0; _i < glyphsets.length; _i++) {
|
|
1518
|
+
glyphsets[_i].forEachGlyph(addGlyphToArray(objects));
|
|
1764
1519
|
}
|
|
1765
|
-
|
|
1520
|
+
|
|
1766
1521
|
return objects;
|
|
1767
|
-
}
|
|
1522
|
+
};
|
|
1768
1523
|
|
|
1769
|
-
RendererModule.prototype.setHighlightedByGroupName = function(groupName, propagateChanges) {
|
|
1524
|
+
RendererModule.prototype.setHighlightedByGroupName = function (groupName, propagateChanges) {
|
|
1770
1525
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1771
1526
|
return this.setHighlightedByObjects(objects, propagateChanges);
|
|
1772
|
-
}
|
|
1527
|
+
};
|
|
1773
1528
|
|
|
1774
|
-
RendererModule.prototype.setSelectedByGroupName = function(groupName, propagateChanges) {
|
|
1529
|
+
RendererModule.prototype.setSelectedByGroupName = function (groupName, propagateChanges) {
|
|
1775
1530
|
var objects = this.findObjectsByGroupName(groupName);
|
|
1776
1531
|
return this.setSelectedByObjects(objects, propagateChanges);
|
|
1777
|
-
}
|
|
1532
|
+
};
|
|
1778
1533
|
|
|
1779
|
-
RendererModule.prototype.changeBackgroundColour = function(backgroundColourString) {
|
|
1534
|
+
RendererModule.prototype.changeBackgroundColour = function (backgroundColourString) {
|
|
1780
1535
|
var colour = new THREE.Color(backgroundColourString);
|
|
1536
|
+
|
|
1781
1537
|
if (this.zincRenderer) {
|
|
1782
1538
|
var internalRenderer = this.zincRenderer.getThreeJSRenderer();
|
|
1783
|
-
internalRenderer.setClearColor(
|
|
1539
|
+
internalRenderer.setClearColor(colour, 1);
|
|
1784
1540
|
}
|
|
1785
|
-
}
|
|
1541
|
+
};
|
|
1786
1542
|
|
|
1787
|
-
RendererModule.prototype.resetView = function() {
|
|
1788
|
-
if (this.zincRenderer)
|
|
1789
|
-
|
|
1790
|
-
}
|
|
1791
|
-
|
|
1792
|
-
RendererModule.prototype.viewAll = function() {
|
|
1793
|
-
if (this.zincRenderer)
|
|
1794
|
-
this.zincRenderer.viewAll();
|
|
1795
|
-
}
|
|
1543
|
+
RendererModule.prototype.resetView = function () {
|
|
1544
|
+
if (this.zincRenderer) this.zincRenderer.resetView();
|
|
1545
|
+
};
|
|
1796
1546
|
|
|
1547
|
+
RendererModule.prototype.viewAll = function () {
|
|
1548
|
+
if (this.zincRenderer) this.zincRenderer.viewAll();
|
|
1549
|
+
};
|
|
1797
1550
|
/**
|
|
1798
1551
|
* Start the animation and let the renderer to processs with
|
|
1799
1552
|
* time progression
|
|
1800
1553
|
*/
|
|
1801
|
-
RendererModule.prototype.playAnimation = function(flag) {
|
|
1802
|
-
if (this.zincRenderer)
|
|
1803
|
-
this.zincRenderer.playAnimation = flag;
|
|
1804
|
-
}
|
|
1805
1554
|
|
|
1555
|
+
|
|
1556
|
+
RendererModule.prototype.playAnimation = function (flag) {
|
|
1557
|
+
if (this.zincRenderer) this.zincRenderer.playAnimation = flag;
|
|
1558
|
+
};
|
|
1806
1559
|
/**
|
|
1807
1560
|
* Set the speed of playback
|
|
1808
1561
|
*/
|
|
1809
|
-
RendererModule.prototype.setPlayRate = function(value) {
|
|
1810
|
-
if (this.zincRenderer)
|
|
1811
|
-
this.zincRenderer.setPlayRate(value);
|
|
1812
|
-
}
|
|
1813
1562
|
|
|
1563
|
+
|
|
1564
|
+
RendererModule.prototype.setPlayRate = function (value) {
|
|
1565
|
+
if (this.zincRenderer) this.zincRenderer.setPlayRate(value);
|
|
1566
|
+
};
|
|
1814
1567
|
/**
|
|
1815
1568
|
* Get the speed of playback
|
|
1816
1569
|
*/
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
else
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
RendererModule.prototype.initialiseRenderer = function(displayAreaIn) {
|
|
1570
|
+
|
|
1571
|
+
|
|
1572
|
+
RendererModule.prototype.getPlayRate = function (value) {
|
|
1573
|
+
if (this.zincRenderer) return this.zincRenderer.getPlayRate();else return 0.0;
|
|
1574
|
+
};
|
|
1575
|
+
/** Initialise everything in the renderer, including the 3D renderer,
|
|
1576
|
+
* and picker for the 3D renderer.
|
|
1577
|
+
*
|
|
1578
|
+
*/
|
|
1579
|
+
|
|
1580
|
+
|
|
1581
|
+
RendererModule.prototype.initialiseRenderer = function (displayAreaIn) {
|
|
1829
1582
|
if (this.zincRenderer === undefined || this.rendererContainer === undefined) {
|
|
1830
1583
|
var returnedValue = createRenderer();
|
|
1831
1584
|
this.zincRenderer = returnedValue["renderer"];
|
|
1832
1585
|
this.rendererContainer = returnedValue["container"];
|
|
1833
1586
|
}
|
|
1834
|
-
if (displayAreaIn) {
|
|
1835
|
-
this.displayArea = displayAreaIn;
|
|
1836
|
-
this.displayArea.appendChild( this.rendererContainer );
|
|
1837
|
-
if (this.zincRenderer) {
|
|
1838
|
-
this.zincRenderer.animate();
|
|
1839
|
-
if (this.toolTip === undefined)
|
|
1840
|
-
this.toolTip = new (__webpack_require__("76bf").ToolTip)(this.displayArea);
|
|
1841
|
-
}
|
|
1842
|
-
}
|
|
1843
|
-
}
|
|
1844
|
-
|
|
1845
|
-
RendererModule.prototype.destroy = function() {
|
|
1846
|
-
if (this.zincRenderer) {
|
|
1847
|
-
this.zincRenderer.dispose();
|
|
1848
|
-
this.zincRenderer.getThreeJSRenderer().dispose();
|
|
1849
|
-
this.zincRenderer = undefined;
|
|
1850
|
-
}
|
|
1851
|
-
(__webpack_require__("3966").BaseModule).prototype.destroy.call( this );
|
|
1852
|
-
}
|
|
1853
|
-
|
|
1854
|
-
exports.RendererModule = RendererModule;
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
/***/ }),
|
|
1858
|
-
|
|
1859
|
-
/***/ "7c81":
|
|
1860
|
-
/***/ (function(module, exports) {
|
|
1861
|
-
|
|
1862
|
-
module.exports = require("core-js/modules/es.array.splice");
|
|
1863
|
-
|
|
1864
|
-
/***/ }),
|
|
1865
|
-
|
|
1866
|
-
/***/ "7d9b":
|
|
1867
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1868
1587
|
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
module.exports = require("element-ui/lib/locale");
|
|
1588
|
+
if (displayAreaIn) {
|
|
1589
|
+
this.displayArea = displayAreaIn;
|
|
1590
|
+
this.displayArea.appendChild(this.rendererContainer);
|
|
1591
|
+
if (this.zincRenderer) this.zincRenderer.animate();
|
|
1592
|
+
}
|
|
1593
|
+
};
|
|
1877
1594
|
|
|
1878
|
-
|
|
1595
|
+
RendererModule.prototype.destroy = function () {
|
|
1596
|
+
if (this.zincRenderer) {
|
|
1597
|
+
this.zincRenderer.dispose();
|
|
1598
|
+
this.zincRenderer.getThreeJSRenderer().dispose();
|
|
1599
|
+
this.zincRenderer = undefined;
|
|
1600
|
+
}
|
|
1879
1601
|
|
|
1880
|
-
|
|
1881
|
-
|
|
1602
|
+
__webpack_require__("6aa6").BaseModule.prototype.destroy.call(this);
|
|
1603
|
+
};
|
|
1882
1604
|
|
|
1883
|
-
|
|
1605
|
+
exports.RendererModule = RendererModule;
|
|
1884
1606
|
|
|
1885
1607
|
/***/ }),
|
|
1886
1608
|
|
|
@@ -1910,146 +1632,6 @@ module.exports = require("element-ui/lib/tabs");
|
|
|
1910
1632
|
|
|
1911
1633
|
module.exports = require("core-js/modules/es.array.iterator");
|
|
1912
1634
|
|
|
1913
|
-
/***/ }),
|
|
1914
|
-
|
|
1915
|
-
/***/ "8cec":
|
|
1916
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
1917
|
-
|
|
1918
|
-
var THREE = __webpack_require__("9206").THREE;
|
|
1919
|
-
|
|
1920
|
-
/**
|
|
1921
|
-
* This module manages highlighted and selected objects in 3D modules.
|
|
1922
|
-
*
|
|
1923
|
-
* @class
|
|
1924
|
-
* @returns {exports.GraphicsHighlight}
|
|
1925
|
-
*/
|
|
1926
|
-
exports.GraphicsHighlight = function() {
|
|
1927
|
-
var currentHighlightedObjects = [];
|
|
1928
|
-
var currentSelectedObjects = [];
|
|
1929
|
-
this.highlightColour = 0x0000FF;
|
|
1930
|
-
this.selectColour = 0x00FF00;
|
|
1931
|
-
this.originalColour = 0x000000;
|
|
1932
|
-
var _this = this;
|
|
1933
|
-
|
|
1934
|
-
var isDifferent = function(array1, array2) {
|
|
1935
|
-
if ((array1.length == 0) && (array2.length == 0))
|
|
1936
|
-
return false;
|
|
1937
|
-
|
|
1938
|
-
for (var i = 0; i < array1.length; i++) {
|
|
1939
|
-
var matched = false;
|
|
1940
|
-
for (var j = 0; j < array2.length; j++) {
|
|
1941
|
-
if (array1[i] === array2[j]) {
|
|
1942
|
-
matched = true;
|
|
1943
|
-
}
|
|
1944
|
-
}
|
|
1945
|
-
if (!matched)
|
|
1946
|
-
return true;
|
|
1947
|
-
}
|
|
1948
|
-
for (var i = 0; i < array2.length; i++) {
|
|
1949
|
-
var matched = false;
|
|
1950
|
-
for (var j = 0; j < array1.length; j++) {
|
|
1951
|
-
if (array2[i] === array1[j]) {
|
|
1952
|
-
matched = true;
|
|
1953
|
-
}
|
|
1954
|
-
}
|
|
1955
|
-
if (!matched)
|
|
1956
|
-
return true;
|
|
1957
|
-
}
|
|
1958
|
-
return false;
|
|
1959
|
-
}
|
|
1960
|
-
|
|
1961
|
-
var getUnmatchingObjects = function(objectsArray1, objectsArray2) {
|
|
1962
|
-
var unmatchingObjects = [];
|
|
1963
|
-
if (objectsArray2.length == 0)
|
|
1964
|
-
return objectsArray1;
|
|
1965
|
-
for (var i = 0; i < objectsArray1.length; i++) {
|
|
1966
|
-
var matched = false;
|
|
1967
|
-
for (var j = 0; j < objectsArray2.length; j++) {
|
|
1968
|
-
if (objectsArray1[i] === objectsArray2[j]) {
|
|
1969
|
-
matched = true;
|
|
1970
|
-
}
|
|
1971
|
-
}
|
|
1972
|
-
if (!matched)
|
|
1973
|
-
unmatchingObjects.push(objectsArray1[i]);
|
|
1974
|
-
}
|
|
1975
|
-
return unmatchingObjects;
|
|
1976
|
-
}
|
|
1977
|
-
|
|
1978
|
-
this.setHighlighted = function(objects) {
|
|
1979
|
-
var previousHighlightedObjects = currentHighlightedObjects;
|
|
1980
|
-
_this.resetHighlighted();
|
|
1981
|
-
// Selected object cannot be highlighted
|
|
1982
|
-
var array = getUnmatchingObjects(objects, currentSelectedObjects);
|
|
1983
|
-
var fullList = getFullListOfObjects(array);
|
|
1984
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
1985
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
1986
|
-
fullList[i].material.emissive.setHex(_this.highlightColour);
|
|
1987
|
-
}
|
|
1988
|
-
currentHighlightedObjects = array;
|
|
1989
|
-
return isDifferent(currentHighlightedObjects, previousHighlightedObjects);
|
|
1990
|
-
}
|
|
1991
|
-
|
|
1992
|
-
this.setSelected = function(objects) {
|
|
1993
|
-
// first find highlighted object that are not selected
|
|
1994
|
-
var previousHSelectedObjects = currentSelectedObjects;
|
|
1995
|
-
var array = getUnmatchingObjects(currentHighlightedObjects, objects);
|
|
1996
|
-
currentHighlightedObjects = array;
|
|
1997
|
-
_this.resetSelected();
|
|
1998
|
-
var fullList = getFullListOfObjects(objects);
|
|
1999
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2000
|
-
if (fullList[i] && fullList[i].material && fullList[i].material.emissive)
|
|
2001
|
-
fullList[i].material.emissive.setHex(_this.selectColour);
|
|
2002
|
-
}
|
|
2003
|
-
currentSelectedObjects = objects;
|
|
2004
|
-
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
|
|
2005
|
-
}
|
|
2006
|
-
|
|
2007
|
-
var getFullListOfObjects = function(objects) {
|
|
2008
|
-
let fullList = [];
|
|
2009
|
-
for (var i = 0; i < objects.length; i++) {
|
|
2010
|
-
if (objects[i].material)
|
|
2011
|
-
fullList.push(objects[i]);
|
|
2012
|
-
}
|
|
2013
|
-
return fullList;
|
|
2014
|
-
}
|
|
2015
|
-
|
|
2016
|
-
this.resetHighlighted = function() {
|
|
2017
|
-
let fullList = getFullListOfObjects(currentHighlightedObjects);
|
|
2018
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2019
|
-
if (fullList[i] && fullList[i].material) {
|
|
2020
|
-
if (fullList[i].material.emissive)
|
|
2021
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
2022
|
-
if (fullList[i].material.depthFunc)
|
|
2023
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2024
|
-
}
|
|
2025
|
-
}
|
|
2026
|
-
currentHighlightedObjects = [];
|
|
2027
|
-
}
|
|
2028
|
-
|
|
2029
|
-
this.resetSelected = function() {
|
|
2030
|
-
let fullList = getFullListOfObjects(currentSelectedObjects);
|
|
2031
|
-
for (var i = 0; i < fullList.length; i++) {
|
|
2032
|
-
if (fullList[i] && fullList[i].material) {
|
|
2033
|
-
if (fullList[i].material.emissive)
|
|
2034
|
-
fullList[i].material.emissive.setHex(_this.originalColour);
|
|
2035
|
-
if (fullList[i].material.depthFunc)
|
|
2036
|
-
fullList[i].material.depthFunc = THREE.LessEqualDepth;
|
|
2037
|
-
}
|
|
2038
|
-
}
|
|
2039
|
-
currentSelectedObjects = [];
|
|
2040
|
-
}
|
|
2041
|
-
|
|
2042
|
-
this.getSelected = function() {
|
|
2043
|
-
return currentSelectedObjects;
|
|
2044
|
-
}
|
|
2045
|
-
|
|
2046
|
-
this.reset = function() {
|
|
2047
|
-
_this.resetSelected();
|
|
2048
|
-
_this.resetHighlighted();
|
|
2049
|
-
}
|
|
2050
|
-
}
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
1635
|
/***/ }),
|
|
2054
1636
|
|
|
2055
1637
|
/***/ "8f11":
|
|
@@ -2071,6 +1653,17 @@ module.exports = require("core-js/modules/es.string.iterator");
|
|
|
2071
1653
|
|
|
2072
1654
|
module.exports = require("zincjs");
|
|
2073
1655
|
|
|
1656
|
+
/***/ }),
|
|
1657
|
+
|
|
1658
|
+
/***/ "920c":
|
|
1659
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
1660
|
+
|
|
1661
|
+
"use strict";
|
|
1662
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_b0ace276_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("dd89");
|
|
1663
|
+
/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_b0ace276_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_ref_8_oneOf_1_0_node_modules_vue_cli_service_node_modules_css_loader_dist_cjs_js_ref_8_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_src_index_js_ref_8_oneOf_1_2_node_modules_sass_loader_dist_cjs_js_ref_8_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_TraditionalControls_vue_vue_type_style_index_0_id_b0ace276_scoped_true_lang_scss___WEBPACK_IMPORTED_MODULE_0__);
|
|
1664
|
+
/* unused harmony reexport * */
|
|
1665
|
+
|
|
1666
|
+
|
|
2074
1667
|
/***/ }),
|
|
2075
1668
|
|
|
2076
1669
|
/***/ "93e6":
|
|
@@ -2087,6 +1680,17 @@ module.exports = require("element-ui/lib/theme-chalk/slider.css");
|
|
|
2087
1680
|
|
|
2088
1681
|
/***/ }),
|
|
2089
1682
|
|
|
1683
|
+
/***/ "984d":
|
|
1684
|
+
/***/ (function(module, exports) {
|
|
1685
|
+
|
|
1686
|
+
exports.annotation = function () {
|
|
1687
|
+
this.type = "anatomical";
|
|
1688
|
+
this.data = undefined;
|
|
1689
|
+
this.isAnnotation = true;
|
|
1690
|
+
};
|
|
1691
|
+
|
|
1692
|
+
/***/ }),
|
|
1693
|
+
|
|
2090
1694
|
/***/ "9985":
|
|
2091
1695
|
/***/ (function(module, exports) {
|
|
2092
1696
|
|
|
@@ -2101,22 +1705,86 @@ module.exports = require("element-ui/lib/theme-chalk/base.css");
|
|
|
2101
1705
|
|
|
2102
1706
|
/***/ }),
|
|
2103
1707
|
|
|
2104
|
-
/***/ "
|
|
2105
|
-
/***/ (function(module, exports) {
|
|
1708
|
+
/***/ "9b21":
|
|
1709
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
2106
1710
|
|
|
2107
|
-
|
|
1711
|
+
__webpack_require__("7c81");
|
|
1712
|
+
|
|
1713
|
+
var EVENT_TYPE = {
|
|
1714
|
+
ALL: 0,
|
|
1715
|
+
SELECTED: 1,
|
|
1716
|
+
HIGHLIGHTED: 2
|
|
1717
|
+
};
|
|
1718
|
+
|
|
1719
|
+
var SelectionEvent = function SelectionEvent(eventTypeIn, identifiersIn) {
|
|
1720
|
+
this.eventType = eventTypeIn;
|
|
1721
|
+
this.identifiers = identifiersIn;
|
|
1722
|
+
};
|
|
1723
|
+
|
|
1724
|
+
var returnFullID = function returnFullID(sourceId) {//return full annotations with all different name
|
|
1725
|
+
};
|
|
1726
|
+
|
|
1727
|
+
var Subscription = function Subscription(subscriberIn, callbackIn, eventType) {
|
|
1728
|
+
this.targetedID = [];
|
|
1729
|
+
var subscriber = subscriberIn;
|
|
1730
|
+
var callback = callbackIn;
|
|
1731
|
+
this.targetEventType = eventType;
|
|
1732
|
+
|
|
1733
|
+
var _this = this;
|
|
1734
|
+
|
|
1735
|
+
if (eventType === undefined) this.targetEventType = EVENT_TYPE.ALL;
|
|
1736
|
+
|
|
1737
|
+
this.getEventType = function () {
|
|
1738
|
+
return eventType;
|
|
1739
|
+
};
|
|
1740
|
+
|
|
1741
|
+
this.notify = function (source, eventType, ids) {
|
|
1742
|
+
if (source !== subscriber && (_this.targetEventType === EVENT_TYPE.ALL || _this.targetEventType === eventType)) {
|
|
1743
|
+
//should support different type of id e.g lyph, name, fmas...
|
|
1744
|
+
//need a function that finds all relavant ids
|
|
1745
|
+
var event = new SelectionEvent(eventType, ids);
|
|
1746
|
+
callback(event);
|
|
1747
|
+
}
|
|
1748
|
+
};
|
|
1749
|
+
};
|
|
1750
|
+
|
|
1751
|
+
exports.EventNotifier = function () {
|
|
1752
|
+
var subscriptions = [];
|
|
1753
|
+
|
|
1754
|
+
this.publish = function (source, eventType, id) {
|
|
1755
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1756
|
+
subscriptions[i].notify(source, eventType, id);
|
|
1757
|
+
}
|
|
1758
|
+
};
|
|
1759
|
+
|
|
1760
|
+
this.subscribe = function (subscriber, callbackFunction, eventType) {
|
|
1761
|
+
if (typeof callbackFunction === "function") {
|
|
1762
|
+
var subscription = new Subscription(subscriber, callbackFunction, eventType);
|
|
1763
|
+
subscriptions.push(subscription);
|
|
1764
|
+
return subscription;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
return undefined;
|
|
1768
|
+
};
|
|
1769
|
+
|
|
1770
|
+
this.unsubscribe = function (subscription) {
|
|
1771
|
+
for (var i = 0; i < subscriptions.length; i++) {
|
|
1772
|
+
if (subscription === subscriptions[i]) {
|
|
1773
|
+
subscriptions.splice(i, 1);
|
|
1774
|
+
return;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
};
|
|
1778
|
+
};
|
|
1779
|
+
|
|
1780
|
+
exports.EVENT_TYPE = EVENT_TYPE;
|
|
2108
1781
|
|
|
2109
1782
|
/***/ }),
|
|
2110
1783
|
|
|
2111
|
-
/***/ "
|
|
1784
|
+
/***/ "9bb0":
|
|
2112
1785
|
/***/ (function(module, exports) {
|
|
2113
1786
|
|
|
2114
|
-
exports
|
|
2115
|
-
this.type = "anatomical";
|
|
2116
|
-
this.data = undefined;
|
|
2117
|
-
this.isAnnotation = true;
|
|
2118
|
-
}
|
|
2119
|
-
|
|
1787
|
+
module.exports = require("@soda/get-current-script");
|
|
2120
1788
|
|
|
2121
1789
|
/***/ }),
|
|
2122
1790
|
|
|
@@ -2180,13 +1848,6 @@ module.exports = require("element-ui/lib/icon");
|
|
|
2180
1848
|
|
|
2181
1849
|
/***/ }),
|
|
2182
1850
|
|
|
2183
|
-
/***/ "b723":
|
|
2184
|
-
/***/ (function(module, exports, __webpack_require__) {
|
|
2185
|
-
|
|
2186
|
-
// extracted by mini-css-extract-plugin
|
|
2187
|
-
|
|
2188
|
-
/***/ }),
|
|
2189
|
-
|
|
2190
1851
|
/***/ "b777":
|
|
2191
1852
|
/***/ (function(module, exports) {
|
|
2192
1853
|
|
|
@@ -2222,21 +1883,91 @@ module.exports = require("element-ui/lib/option");
|
|
|
2222
1883
|
|
|
2223
1884
|
/***/ }),
|
|
2224
1885
|
|
|
2225
|
-
/***/ "
|
|
2226
|
-
/***/ (function(module, exports) {
|
|
1886
|
+
/***/ "cf41":
|
|
1887
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1888
|
+
|
|
1889
|
+
__webpack_require__("51f7");
|
|
1890
|
+
|
|
1891
|
+
__webpack_require__("bfab");
|
|
1892
|
+
|
|
1893
|
+
/**
|
|
1894
|
+
* @author alteredq / http://alteredqualia.com/
|
|
1895
|
+
* @author mr.doob / http://mrdoob.com/
|
|
1896
|
+
*/
|
|
1897
|
+
exports.WEBGL = {
|
|
1898
|
+
isWebGLAvailable: function isWebGLAvailable() {
|
|
1899
|
+
try {
|
|
1900
|
+
var canvas = document.createElement('canvas');
|
|
1901
|
+
return !!(window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl')));
|
|
1902
|
+
} catch (e) {
|
|
1903
|
+
return false;
|
|
1904
|
+
}
|
|
1905
|
+
},
|
|
1906
|
+
isWebGL2Available: function isWebGL2Available() {
|
|
1907
|
+
try {
|
|
1908
|
+
var canvas = document.createElement('canvas');
|
|
1909
|
+
return !!(window.WebGL2RenderingContext && canvas.getContext('webgl2'));
|
|
1910
|
+
} catch (e) {
|
|
1911
|
+
return false;
|
|
1912
|
+
}
|
|
1913
|
+
},
|
|
1914
|
+
getWebGLErrorMessage: function getWebGLErrorMessage() {
|
|
1915
|
+
return this.getErrorMessage(1);
|
|
1916
|
+
},
|
|
1917
|
+
getWebGL2ErrorMessage: function getWebGL2ErrorMessage() {
|
|
1918
|
+
return this.getErrorMessage(2);
|
|
1919
|
+
},
|
|
1920
|
+
getErrorMessage: function getErrorMessage(version) {
|
|
1921
|
+
var names = {
|
|
1922
|
+
1: 'WebGL',
|
|
1923
|
+
2: 'WebGL 2'
|
|
1924
|
+
};
|
|
1925
|
+
var contexts = {
|
|
1926
|
+
1: window.WebGLRenderingContext,
|
|
1927
|
+
2: window.WebGL2RenderingContext
|
|
1928
|
+
};
|
|
1929
|
+
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.';
|
|
1930
|
+
var element = document.createElement('div');
|
|
1931
|
+
element.id = 'webglmessage';
|
|
1932
|
+
element.style.fontFamily = 'monospace';
|
|
1933
|
+
element.style.fontSize = '20px';
|
|
1934
|
+
element.style.fontWeight = 'normal';
|
|
1935
|
+
element.style.textAlign = 'center';
|
|
1936
|
+
element.style.background = '#fff';
|
|
1937
|
+
element.style.color = '#000';
|
|
1938
|
+
element.style.padding = '1.5em';
|
|
1939
|
+
element.style.width = '400px';
|
|
1940
|
+
element.style.margin = '5em auto 0';
|
|
1941
|
+
|
|
1942
|
+
if (contexts[version]) {
|
|
1943
|
+
message = message.replace('$0', 'graphics card');
|
|
1944
|
+
} else {
|
|
1945
|
+
message = message.replace('$0', 'browser');
|
|
1946
|
+
}
|
|
2227
1947
|
|
|
2228
|
-
|
|
1948
|
+
message = message.replace('$1', names[version]);
|
|
1949
|
+
element.innerHTML = message;
|
|
1950
|
+
return element;
|
|
1951
|
+
}
|
|
1952
|
+
};
|
|
2229
1953
|
|
|
2230
1954
|
/***/ }),
|
|
2231
1955
|
|
|
2232
|
-
/***/ "
|
|
2233
|
-
/***/ (function(module,
|
|
1956
|
+
/***/ "da60":
|
|
1957
|
+
/***/ (function(module, exports) {
|
|
2234
1958
|
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
|
|
2238
|
-
|
|
1959
|
+
function _readOnlyError(name) {
|
|
1960
|
+
throw new Error("\"" + name + "\" is read-only");
|
|
1961
|
+
}
|
|
1962
|
+
|
|
1963
|
+
module.exports = _readOnlyError;
|
|
1964
|
+
|
|
1965
|
+
/***/ }),
|
|
2239
1966
|
|
|
1967
|
+
/***/ "dd89":
|
|
1968
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
1969
|
+
|
|
1970
|
+
// extracted by mini-css-extract-plugin
|
|
2240
1971
|
|
|
2241
1972
|
/***/ }),
|
|
2242
1973
|
|
|
@@ -2288,12 +2019,12 @@ if (typeof window !== 'undefined') {
|
|
|
2288
2019
|
// Indicate to webpack that this file can be concatenated
|
|
2289
2020
|
/* harmony default export */ var setPublicPath = (null);
|
|
2290
2021
|
|
|
2291
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2292
|
-
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('
|
|
2022
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-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=023c058f&scoped=true&
|
|
2023
|
+
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"loading",rawName:"v-loading",value:(_vm.loading),expression:"loading"}],ref:"scaffoldContainer",staticClass:"scaffold-container",attrs:{"element-loading-text":"Loading...","element-loading-spinner":"el-icon-loading","element-loading-background":"rgba(0, 0, 0, 0.3)"}},[_c('map-svg-sprite-color'),_c('div',{ref:"display",staticStyle:{"height":"100%","width":"100%"},attrs:{"id":"organsDisplayArea","tabindex":"-1"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==66){ return null; }return _vm.backgroundChangeCallback($event)}}}),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.displayUI && !_vm.isTransitioning),expression:"displayUI && !isTransitioning"}]},[(_vm.displayWarning)?_c('el-popover',{ref:"warningPopover",attrs:{"content":_vm.warningMessage,"placement":"right","append-to-body":false,"trigger":"manual","popper-class":"warning-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[6].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[6], "value", $$v)},expression:"hoverVisabilities[6].value"}}):_vm._e(),(_vm.displayWarning)?_c('i',{directives:[{name:"popover",rawName:"v-popover:warningPopover",arg:"warningPopover"}],staticClass:"el-icon-warning warning-icon",on:{"mouseover":function($event){return _vm.showToolitip(6)},"mouseout":function($event){return _vm.hideToolitip(6)}}},[_c('span',{staticClass:"warning-text"},[_vm._v("Beta")])]):_vm._e(),_c('el-popover',{ref:"checkBoxPopover",attrs:{"content":"Change region visibility","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[5].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[5], "value", $$v)},expression:"hoverVisabilities[5].value"}}),_c('TraditionalControls',{directives:[{name:"popover",rawName:"v-popover:checkBoxPopover",arg:"checkBoxPopover"}],ref:"traditionalControl",attrs:{"help-mode":_vm.helpMode,"module":_vm.$module,"show-colour-picker":_vm.showColourPicker},on:{"object-selected":_vm.objectSelected,"object-hovered":_vm.objectHovered,"drawer-toggled":_vm.drawerToggled}}),_c('div',{staticClass:"opacity-box"},[_c('OpacityControls',{ref:"opacityControl"})],1),(_vm.sceneData.timeVarying)?_c('el-popover',{ref:"sliderPopover",attrs:{"content":"Move the slider to animate the region","placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper top-popper non-selectable"},model:{value:(_vm.hoverVisabilities[4].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[4], "value", $$v)},expression:"hoverVisabilities[4].value"}}):_vm._e(),(_vm.sceneData.timeVarying)?_c('div',{directives:[{name:"popover",rawName:"v-popover:sliderPopover",arg:"sliderPopover"}],staticClass:"time-slider-container",class:[ _vm.minimisedSlider ? 'minimised' : '', _vm.sliderPosition]},[_c('el-tabs',{attrs:{"type":"card"}},[_c('el-tab-pane',{attrs:{"label":"Animate scaffold"}},[_c('el-row',{staticClass:"tab-content"},[(_vm.isPlaying)?_c('map-svg-icon',{staticClass:"icon-button video-button",attrs:{"icon":"pause"},nativeOn:{"click":function($event){return _vm.play(false)}}}):_c('map-svg-icon',{staticClass:"video-button icon-button",attrs:{"icon":"play"},nativeOn:{"click":function($event){return _vm.play(true)}}}),_c('el-slider',{staticClass:"slider",attrs:{"min":0,"max":_vm.timeMax,"value":_vm.sceneData.currentTime / 100 * _vm.timeMax,"step":0.1,"tooltip-class":"time-slider-tooltip","format-tooltip":_vm.formatTooltip,"marks":_vm.timeStamps},on:{"input":function($event){return _vm.timeChange($event)}}})],1)],1),_c('el-tab-pane',{attrs:{"label":"Animation data"}},[_c('el-row',{staticClass:"tab-content"},[_c('div',{staticClass:"animation-data"},[_vm._v(" Original duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.orginalDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Animation duration: "),_c('div',{staticClass:"purple"},[_vm._v(" "+_vm._s(_vm.animateDuration)+" ")])]),_c('div',{staticClass:"animation-data"},[_vm._v(" Playback speed "),_c('el-select',{staticClass:"select-box",attrs:{"popper-append-to-body":true,"value":_vm.currentSpeed,"placeholder":"Select","popper-class":"scaffold_viewer_dropdown"},on:{"change":function($event){return _vm.speedChanged($event)}}},_vm._l((_vm.playSpeed),function(item){return _c('el-option',{key:item.value,attrs:{"label":item.label,"value":item.value}})}),1)],1)])],1)],1)],1):_vm._e(),_c('div',{staticClass:"bottom-right-control"},[_c('el-popover',{attrs:{"content":"Zoom in","placement":"left","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper left-popper non-selectable"},model:{value:(_vm.hoverVisabilities[0].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[0], "value", $$v)},expression:"hoverVisabilities[0].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomIn",attrs:{"slot":"reference","icon":"zoomIn"},nativeOn:{"click":function($event){return _vm.zoomIn()},"mouseover":function($event){return _vm.showToolitip(0)},"mouseout":function($event){return _vm.hideToolitip(0)}},slot:"reference"})],1),_c('el-popover',{attrs:{"content":"Zoom out","placement":"top-end","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper popper-zoomout non-selectable"},model:{value:(_vm.hoverVisabilities[1].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[1], "value", $$v)},expression:"hoverVisabilities[1].value"}},[_c('map-svg-icon',{staticClass:"icon-button zoomOut",attrs:{"slot":"reference","icon":"zoomOut"},nativeOn:{"click":function($event){return _vm.zoomOut()},"mouseover":function($event){return _vm.showToolitip(1)},"mouseout":function($event){return _vm.hideToolitip(1)}},slot:"reference"})],1),_c('el-popover',{attrs:{"placement":"top","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper non-selectable"},model:{value:(_vm.hoverVisabilities[2].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[2], "value", $$v)},expression:"hoverVisabilities[2].value"}},[_c('div',[_vm._v(" Fit to "),_c('br'),_vm._v(" window ")]),_c('map-svg-icon',{staticClass:"icon-button fitWindow",attrs:{"slot":"reference","icon":"fitWindow"},nativeOn:{"click":function($event){return _vm.fitWindow()},"mouseover":function($event){return _vm.showToolitip(2)},"mouseout":function($event){return _vm.hideToolitip(2)}},slot:"reference"})],1)],1),_c('el-popover',{ref:"backgroundPopover",attrs:{"placement":"top-start","width":"128","append-to-body":false,"trigger":"click","popper-class":"background-popper non-selectable"}},[_c('el-row',{staticClass:"backgroundText"},[_vm._v(" Change background ")]),_c('el-row',{staticClass:"backgroundChooser"},_vm._l((_vm.availableBackground),function(item){return _c('div',{key:item,class:['backgroundChoice', item, item == _vm.currentBackground ? 'active' :''],on:{"click":function($event){return _vm.backgroundChangeCallback(item)}}})}),0)],1),_c('el-popover',{attrs:{"content":"Change background color","placement":"right","append-to-body":false,"trigger":"manual","popper-class":"scaffold-popper right-popper non-selectable"},model:{value:(_vm.hoverVisabilities[3].value),callback:function ($$v) {_vm.$set(_vm.hoverVisabilities[3], "value", $$v)},expression:"hoverVisabilities[3].value"}},[_c('map-svg-icon',{directives:[{name:"popover",rawName:"v-popover:backgroundPopover",arg:"backgroundPopover"}],staticClass:"icon-button background-colour",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },attrs:{"slot":"reference","icon":"changeBckgd"},nativeOn:{"mouseover":function($event){return _vm.showToolitip(3)},"mouseout":function($event){return _vm.hideToolitip(3)}},slot:"reference"})],1)],1)],1)}
|
|
2293
2024
|
var staticRenderFns = []
|
|
2294
2025
|
|
|
2295
2026
|
|
|
2296
|
-
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=
|
|
2027
|
+
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=template&id=023c058f&scoped=true&
|
|
2297
2028
|
|
|
2298
2029
|
// EXTERNAL MODULE: external "core-js/modules/es.array.for-each"
|
|
2299
2030
|
var es_array_for_each_ = __webpack_require__("139f");
|
|
@@ -2392,12 +2123,12 @@ var col_default = /*#__PURE__*/__webpack_require__.n(col_);
|
|
|
2392
2123
|
var external_vue_ = __webpack_require__("8bbf");
|
|
2393
2124
|
var external_vue_default = /*#__PURE__*/__webpack_require__.n(external_vue_);
|
|
2394
2125
|
|
|
2395
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2396
|
-
var
|
|
2397
|
-
var
|
|
2126
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-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&
|
|
2127
|
+
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()}
|
|
2128
|
+
var OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns = []
|
|
2398
2129
|
|
|
2399
2130
|
|
|
2400
|
-
// CONCATENATED MODULE: ./src/components/OpacityControls.vue?vue&type=template&id=
|
|
2131
|
+
// CONCATENATED MODULE: ./src/components/OpacityControls.vue?vue&type=template&id=4c00a30f&scoped=true&
|
|
2401
2132
|
|
|
2402
2133
|
// EXTERNAL MODULE: external "element-ui/lib/theme-chalk/main.css"
|
|
2403
2134
|
var main_css_ = __webpack_require__("73ef");
|
|
@@ -2569,8 +2300,8 @@ external_vue_default.a.use(slider_default.a);
|
|
|
2569
2300
|
});
|
|
2570
2301
|
// CONCATENATED MODULE: ./src/components/OpacityControls.vue?vue&type=script&lang=js&
|
|
2571
2302
|
/* harmony default export */ var components_OpacityControlsvue_type_script_lang_js_ = (OpacityControlsvue_type_script_lang_js_);
|
|
2572
|
-
// EXTERNAL MODULE: ./src/components/OpacityControls.vue?vue&type=style&index=0&id=
|
|
2573
|
-
var
|
|
2303
|
+
// EXTERNAL MODULE: ./src/components/OpacityControls.vue?vue&type=style&index=0&id=4c00a30f&scoped=true&lang=scss&
|
|
2304
|
+
var OpacityControlsvue_type_style_index_0_id_4c00a30f_scoped_true_lang_scss_ = __webpack_require__("21a1");
|
|
2574
2305
|
|
|
2575
2306
|
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
|
|
2576
2307
|
/* globals __VUE_SSR_CONTEXT__ */
|
|
@@ -2683,23 +2414,23 @@ function normalizeComponent (
|
|
|
2683
2414
|
|
|
2684
2415
|
var component = normalizeComponent(
|
|
2685
2416
|
components_OpacityControlsvue_type_script_lang_js_,
|
|
2686
|
-
|
|
2687
|
-
|
|
2417
|
+
OpacityControlsvue_type_template_id_4c00a30f_scoped_true_render,
|
|
2418
|
+
OpacityControlsvue_type_template_id_4c00a30f_scoped_true_staticRenderFns,
|
|
2688
2419
|
false,
|
|
2689
2420
|
null,
|
|
2690
|
-
"
|
|
2421
|
+
"4c00a30f",
|
|
2691
2422
|
null
|
|
2692
2423
|
|
|
2693
2424
|
)
|
|
2694
2425
|
|
|
2695
2426
|
/* harmony default export */ var OpacityControls = (component.exports);
|
|
2696
|
-
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"
|
|
2697
|
-
var
|
|
2427
|
+
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"de8fb6da-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&
|
|
2428
|
+
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
2429
|
hoverItem: _vm.hoverRegion === item },attrs:{"label":item,"checked":true},on:{"change":function($event){return _vm.visibilityToggle(item, $event)}},nativeOn:{"click":function($event){return _vm.itemClicked(item, $event)},"mouseover":function($event){return _vm.checkboxHover(item)}}},[_c('el-color-picker',{class:{ 'show-picker' : _vm.showColourPicker },attrs:{"value":_vm.getColour(item),"size":"small","popper-class":_vm.myPopperClass},on:{"change":function($event){return _vm.setColour(item, $event)}}}),_vm._v(" "+_vm._s(item)+" ")],1)],1)])}),1)])],1),_c('div',{staticClass:"drawer-button",class:{ open: _vm.drawerOpen, close: !_vm.drawerOpen },on:{"click":_vm.toggleDrawer}},[_c('i',{staticClass:"el-icon-arrow-left"})])])}
|
|
2699
|
-
var
|
|
2430
|
+
var TraditionalControlsvue_type_template_id_b0ace276_scoped_true_staticRenderFns = []
|
|
2700
2431
|
|
|
2701
2432
|
|
|
2702
|
-
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=
|
|
2433
|
+
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=template&id=b0ace276&scoped=true&
|
|
2703
2434
|
|
|
2704
2435
|
// EXTERNAL MODULE: external "core-js/modules/es.array.concat"
|
|
2705
2436
|
var es_array_concat_ = __webpack_require__("18d2");
|
|
@@ -2997,55 +2728,47 @@ external_vue_default.a.use(row_default.a);
|
|
|
2997
2728
|
/**
|
|
2998
2729
|
* Select a region by its name.
|
|
2999
2730
|
*/
|
|
3000
|
-
changeActiveByName: function changeActiveByName(name) {
|
|
2731
|
+
changeActiveByName: function changeActiveByName(name, propagate) {
|
|
3001
2732
|
var targetObject = this.getFirstZincObjectWithGroupName(name);
|
|
3002
2733
|
|
|
3003
2734
|
if (targetObject && targetObject.getVisibility()) {
|
|
3004
2735
|
this.activeRegion = name;
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
* @property {object} target selected object.
|
|
3009
|
-
*/
|
|
3010
|
-
|
|
3011
|
-
this.$emit("object-selected", targetObject);
|
|
2736
|
+
this.$emit("object-selected", targetObject, propagate);
|
|
2737
|
+
} else {
|
|
2738
|
+
this.removeActive(propagate);
|
|
3012
2739
|
}
|
|
3013
2740
|
|
|
3014
|
-
this.removeHover();
|
|
2741
|
+
this.removeHover(propagate);
|
|
3015
2742
|
},
|
|
3016
2743
|
|
|
3017
2744
|
/**
|
|
3018
2745
|
* Hover a region by its name.
|
|
3019
2746
|
*/
|
|
3020
|
-
changeHoverByName: function changeHoverByName(name) {
|
|
2747
|
+
changeHoverByName: function changeHoverByName(name, propagate) {
|
|
3021
2748
|
var targetObject = this.getFirstZincObjectWithGroupName(name);
|
|
3022
2749
|
|
|
3023
2750
|
if (targetObject) {
|
|
3024
2751
|
this.hoverRegion = name;
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3028
|
-
* @property {object} target hovered object.
|
|
3029
|
-
*/
|
|
3030
|
-
|
|
3031
|
-
this.$emit("object-hovered", targetObject);
|
|
2752
|
+
this.$emit("object-hovered", targetObject, propagate);
|
|
2753
|
+
} else {
|
|
2754
|
+
this.removeHover(propagate);
|
|
3032
2755
|
}
|
|
3033
2756
|
},
|
|
3034
2757
|
|
|
3035
2758
|
/**
|
|
3036
2759
|
* Unselect the current selected region.
|
|
3037
2760
|
*/
|
|
3038
|
-
removeActive: function removeActive() {
|
|
2761
|
+
removeActive: function removeActive(propagate) {
|
|
3039
2762
|
this.activeRegion = "";
|
|
3040
|
-
this.$emit("object-selected", undefined);
|
|
2763
|
+
this.$emit("object-selected", undefined, propagate);
|
|
3041
2764
|
},
|
|
3042
2765
|
|
|
3043
2766
|
/**
|
|
3044
2767
|
* Unselect the current hover region.
|
|
3045
2768
|
*/
|
|
3046
|
-
removeHover: function removeHover() {
|
|
2769
|
+
removeHover: function removeHover(propagate) {
|
|
3047
2770
|
this.hoverRegion = "";
|
|
3048
|
-
this.$emit("object-hovered", undefined);
|
|
2771
|
+
this.$emit("object-hovered", undefined, propagate);
|
|
3049
2772
|
},
|
|
3050
2773
|
|
|
3051
2774
|
/**
|
|
@@ -3093,11 +2816,11 @@ external_vue_default.a.use(row_default.a);
|
|
|
3093
2816
|
}
|
|
3094
2817
|
},
|
|
3095
2818
|
checkboxHover: function checkboxHover(name) {
|
|
3096
|
-
this.changeHoverByName(name);
|
|
2819
|
+
this.changeHoverByName(name, true);
|
|
3097
2820
|
},
|
|
3098
2821
|
itemClicked: function itemClicked(name, event) {
|
|
3099
2822
|
if (!(event.target.classList.contains("el-checkbox__inner") || event.target.classList.contains("el-checkbox__original"))) {
|
|
3100
|
-
this.changeActiveByName(name);
|
|
2823
|
+
this.changeActiveByName(name, true);
|
|
3101
2824
|
event.preventDefault();
|
|
3102
2825
|
}
|
|
3103
2826
|
},
|
|
@@ -3124,11 +2847,11 @@ external_vue_default.a.use(row_default.a);
|
|
|
3124
2847
|
|
|
3125
2848
|
if (event == false) {
|
|
3126
2849
|
if (this.activeRegion === item) {
|
|
3127
|
-
this.removeActive();
|
|
2850
|
+
this.removeActive(true);
|
|
3128
2851
|
}
|
|
3129
2852
|
|
|
3130
2853
|
if (this.hoverRegion === item) {
|
|
3131
|
-
this.removeHover();
|
|
2854
|
+
this.removeHover(true);
|
|
3132
2855
|
}
|
|
3133
2856
|
}
|
|
3134
2857
|
},
|
|
@@ -3179,8 +2902,8 @@ external_vue_default.a.use(row_default.a);
|
|
|
3179
2902
|
});
|
|
3180
2903
|
// CONCATENATED MODULE: ./src/components/TraditionalControls.vue?vue&type=script&lang=js&
|
|
3181
2904
|
/* harmony default export */ var components_TraditionalControlsvue_type_script_lang_js_ = (TraditionalControlsvue_type_script_lang_js_);
|
|
3182
|
-
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=
|
|
3183
|
-
var
|
|
2905
|
+
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=0&id=b0ace276&scoped=true&lang=scss&
|
|
2906
|
+
var TraditionalControlsvue_type_style_index_0_id_b0ace276_scoped_true_lang_scss_ = __webpack_require__("920c");
|
|
3184
2907
|
|
|
3185
2908
|
// EXTERNAL MODULE: ./src/components/TraditionalControls.vue?vue&type=style&index=1&lang=css&
|
|
3186
2909
|
var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("add8");
|
|
@@ -3197,11 +2920,11 @@ var TraditionalControlsvue_type_style_index_1_lang_css_ = __webpack_require__("a
|
|
|
3197
2920
|
|
|
3198
2921
|
var TraditionalControls_component = normalizeComponent(
|
|
3199
2922
|
components_TraditionalControlsvue_type_script_lang_js_,
|
|
3200
|
-
|
|
3201
|
-
|
|
2923
|
+
TraditionalControlsvue_type_template_id_b0ace276_scoped_true_render,
|
|
2924
|
+
TraditionalControlsvue_type_template_id_b0ace276_scoped_true_staticRenderFns,
|
|
3202
2925
|
false,
|
|
3203
2926
|
null,
|
|
3204
|
-
"
|
|
2927
|
+
"b0ace276",
|
|
3205
2928
|
null
|
|
3206
2929
|
|
|
3207
2930
|
)
|
|
@@ -3483,6 +3206,8 @@ var svg_sprite_ = __webpack_require__("429c");
|
|
|
3483
3206
|
//
|
|
3484
3207
|
//
|
|
3485
3208
|
//
|
|
3209
|
+
//
|
|
3210
|
+
//
|
|
3486
3211
|
|
|
3487
3212
|
/* eslint-disable no-alert, no-console */
|
|
3488
3213
|
|
|
@@ -3502,9 +3227,9 @@ external_vue_default.a.use(slider_default.a);
|
|
|
3502
3227
|
external_vue_default.a.use(tab_pane_default.a);
|
|
3503
3228
|
external_vue_default.a.use(tabs_default.a);
|
|
3504
3229
|
|
|
3505
|
-
var OrgansViewer = __webpack_require__("
|
|
3230
|
+
var OrgansViewer = __webpack_require__("53d7").OrgansViewer;
|
|
3506
3231
|
|
|
3507
|
-
var EventNotifier = __webpack_require__("
|
|
3232
|
+
var EventNotifier = __webpack_require__("9b21").EventNotifier;
|
|
3508
3233
|
/**
|
|
3509
3234
|
* A vue component of the scaffold viewer.
|
|
3510
3235
|
*
|
|
@@ -3517,8 +3242,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3517
3242
|
name: "ScaffoldVuer",
|
|
3518
3243
|
components: {
|
|
3519
3244
|
OpacityControls: OpacityControls,
|
|
3520
|
-
|
|
3521
|
-
|
|
3245
|
+
MapSvgIcon: svg_sprite_["MapSvgIcon"],
|
|
3246
|
+
MapSvgSpriteColor: svg_sprite_["MapSvgSpriteColor"],
|
|
3522
3247
|
TraditionalControls: TraditionalControls
|
|
3523
3248
|
},
|
|
3524
3249
|
props: {
|
|
@@ -3781,7 +3506,6 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3781
3506
|
this.$module.addOrganPartAddedCallback(this.organsAdded);
|
|
3782
3507
|
this.$module.initialiseRenderer(this.$refs.display);
|
|
3783
3508
|
this.toggleRendering(this.render);
|
|
3784
|
-
this.$module.toolTip = undefined;
|
|
3785
3509
|
this.ro = new ResizeObserver(this.adjustLayout).observe(this.$refs.scaffoldContainer);
|
|
3786
3510
|
this.defaultRate = this.$module.getPlayRate();
|
|
3787
3511
|
},
|
|
@@ -3941,6 +3665,13 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3941
3665
|
}
|
|
3942
3666
|
}
|
|
3943
3667
|
},
|
|
3668
|
+
getRendererInfo: function getRendererInfo() {
|
|
3669
|
+
if (this.$module.zincRenderer) {
|
|
3670
|
+
return this.$module.zincRenderer.getThreeJSRenderer().info;
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3673
|
+
return undefined;
|
|
3674
|
+
},
|
|
3944
3675
|
|
|
3945
3676
|
/**
|
|
3946
3677
|
* Function used to rotate the scene.
|
|
@@ -3964,12 +3695,12 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3964
3695
|
*/
|
|
3965
3696
|
eventNotifierCallback: function eventNotifierCallback(event) {
|
|
3966
3697
|
if (event.eventType == 1) {
|
|
3967
|
-
if (this.
|
|
3698
|
+
if (this.$refs.traditionalControl) {
|
|
3968
3699
|
if (event.identifiers[0]) {
|
|
3969
3700
|
var id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
|
|
3970
|
-
this.
|
|
3701
|
+
this.$refs.traditionalControl.changeActiveByName(id, true);
|
|
3971
3702
|
} else {
|
|
3972
|
-
this.
|
|
3703
|
+
this.$refs.traditionalControl.removeActive(true);
|
|
3973
3704
|
}
|
|
3974
3705
|
}
|
|
3975
3706
|
/**
|
|
@@ -3982,12 +3713,12 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
3982
3713
|
|
|
3983
3714
|
this.$emit("scaffold-selected", event.identifiers);
|
|
3984
3715
|
} else if (event.eventType == 2) {
|
|
3985
|
-
if (this.
|
|
3716
|
+
if (this.$refs.traditionalControl) {
|
|
3986
3717
|
if (event.identifiers[0]) {
|
|
3987
3718
|
var _id = event.identifiers[0].data.id ? event.identifiers[0].data.id : event.identifiers[0].data.group;
|
|
3988
3719
|
|
|
3989
|
-
this.
|
|
3990
|
-
} else this.
|
|
3720
|
+
this.$refs.traditionalControl.changeHoverByName(_id, true);
|
|
3721
|
+
} else this.$refs.traditionalControl.removeHover(true);
|
|
3991
3722
|
}
|
|
3992
3723
|
/**
|
|
3993
3724
|
* Triggers when an object has been highlighted
|
|
@@ -4034,30 +3765,48 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4034
3765
|
},
|
|
4035
3766
|
|
|
4036
3767
|
/**
|
|
4037
|
-
* Set the selected zinc object
|
|
3768
|
+
* A callback used by children components. Set the selected zinc object
|
|
4038
3769
|
*
|
|
4039
3770
|
* @param {object} object Zinc object
|
|
4040
3771
|
*/
|
|
4041
|
-
objectSelected: function objectSelected(object) {
|
|
3772
|
+
objectSelected: function objectSelected(object, propagate) {
|
|
4042
3773
|
if (object !== this.selectedObject) {
|
|
4043
3774
|
this.selectedObject = object;
|
|
4044
3775
|
this.$refs.opacityControl.setObject(this.selectedObject);
|
|
4045
|
-
if (object) this.$module.setSelectedByZincObject(object,
|
|
3776
|
+
if (object) this.$module.setSelectedByZincObject(object, propagate);else this.$module.setSelectedByObjects([], propagate);
|
|
4046
3777
|
}
|
|
4047
3778
|
},
|
|
4048
3779
|
|
|
4049
3780
|
/**
|
|
4050
|
-
* Set the highlighted zinc object
|
|
3781
|
+
* A callback used by children components. Set the highlighted zinc object
|
|
4051
3782
|
*
|
|
4052
3783
|
* @param {object} object Zinc object
|
|
4053
3784
|
*/
|
|
4054
|
-
objectHovered: function objectHovered(object) {
|
|
3785
|
+
objectHovered: function objectHovered(object, propagate) {
|
|
4055
3786
|
if (object !== this.hoveredObject) {
|
|
4056
3787
|
this.hoveredObject = object;
|
|
4057
|
-
if (object) this.$module.setHighlightedByZincObject(object,
|
|
3788
|
+
if (object) this.$module.setHighlightedByZincObject(object, propagate);else this.$module.setHighlightedByObjects([], propagate);
|
|
4058
3789
|
}
|
|
4059
3790
|
},
|
|
4060
3791
|
|
|
3792
|
+
/**
|
|
3793
|
+
* Set the selected by name.
|
|
3794
|
+
*
|
|
3795
|
+
* @param {name} name Name of the region
|
|
3796
|
+
*/
|
|
3797
|
+
changeActiveByName: function changeActiveByName(name, propagate) {
|
|
3798
|
+
if (name === undefined) this.$refs.traditionalControl.removeActive(propagate);else this.$refs.traditionalControl.changeActiveByName(name, propagate);
|
|
3799
|
+
},
|
|
3800
|
+
|
|
3801
|
+
/**
|
|
3802
|
+
* Set the highlighted by name.
|
|
3803
|
+
*
|
|
3804
|
+
* @param {name} name Name of the region
|
|
3805
|
+
*/
|
|
3806
|
+
changeHighlightedByName: function changeHighlightedByName(name, propagate) {
|
|
3807
|
+
if (name === undefined) this.$refs.traditionalControl.removeHover(propagate);else this.$refs.traditionalControl.changeHoverByName(name, propagate);
|
|
3808
|
+
},
|
|
3809
|
+
|
|
4061
3810
|
/**
|
|
4062
3811
|
* Start the animation.
|
|
4063
3812
|
*
|
|
@@ -4220,6 +3969,9 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4220
3969
|
}
|
|
4221
3970
|
}
|
|
4222
3971
|
},
|
|
3972
|
+
exportGLTF: function exportGLTF(binary) {
|
|
3973
|
+
return this.$module.scene.exportGLTF(binary);
|
|
3974
|
+
},
|
|
4223
3975
|
|
|
4224
3976
|
/**
|
|
4225
3977
|
* Function used for reading in new scaffold metadata and a custom
|
|
@@ -4300,8 +4052,8 @@ var EventNotifier = __webpack_require__("549c").EventNotifier;
|
|
|
4300
4052
|
});
|
|
4301
4053
|
// CONCATENATED MODULE: ./src/components/ScaffoldVuer.vue?vue&type=script&lang=js&
|
|
4302
4054
|
/* harmony default export */ var components_ScaffoldVuervue_type_script_lang_js_ = (ScaffoldVuervue_type_script_lang_js_);
|
|
4303
|
-
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=
|
|
4304
|
-
var
|
|
4055
|
+
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=0&id=023c058f&scoped=true&lang=scss&
|
|
4056
|
+
var ScaffoldVuervue_type_style_index_0_id_023c058f_scoped_true_lang_scss_ = __webpack_require__("1f67");
|
|
4305
4057
|
|
|
4306
4058
|
// EXTERNAL MODULE: ./src/components/ScaffoldVuer.vue?vue&type=style&index=1&lang=scss&
|
|
4307
4059
|
var ScaffoldVuervue_type_style_index_1_lang_scss_ = __webpack_require__("642d");
|
|
@@ -4322,7 +4074,7 @@ var ScaffoldVuer_component = normalizeComponent(
|
|
|
4322
4074
|
staticRenderFns,
|
|
4323
4075
|
false,
|
|
4324
4076
|
null,
|
|
4325
|
-
"
|
|
4077
|
+
"023c058f",
|
|
4326
4078
|
null
|
|
4327
4079
|
|
|
4328
4080
|
)
|