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