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