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