-
-
Notifications
You must be signed in to change notification settings - Fork 51
/
index.js
90 lines (74 loc) · 2.71 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
import 'normalize.css';
import React from 'react';
import ReactDOM from 'react-dom';
import equals from 'mout/src/array/equals';
import jsonData from 'tonic-arctic-sample-data/data/probe/index.json';
import MultiLayoutRenderer from 'paraviewweb/src/React/Renderers/MultiLayoutRenderer';
import LookupTableManager from 'paraviewweb/src/Common/Core/LookupTableManager';
import QueryDataModel from 'paraviewweb/src/IO/Core/QueryDataModel';
import ImageBuilder from 'paraviewweb/src/Rendering/Image/DataProberImageBuilder';
const container = document.querySelector('.content');
const dataModel = new QueryDataModel(jsonData, `${__BASE_PATH__}/data/probe/`);
const lutManager = new LookupTableManager();
const imageBuilderA = new ImageBuilder(dataModel, lutManager);
const imageBuilderB = new ImageBuilder(dataModel, lutManager);
const imageBuilderC = new ImageBuilder(dataModel, lutManager);
// Configure Image builders
const field = imageBuilderA.getFields()[0];
imageBuilderA.setField(field);
imageBuilderB.setField(field);
imageBuilderC.setField(field);
imageBuilderA.setProbe(10, 10, 10);
imageBuilderB.setProbe(10, 10, 10);
imageBuilderC.setProbe(10, 10, 10);
imageBuilderA.renderMethod = 'XY';
imageBuilderB.renderMethod = 'ZY';
imageBuilderC.renderMethod = 'XZ';
imageBuilderA.update();
imageBuilderB.update();
imageBuilderC.update();
function updateProbeLocationFromA(data, envelope) {
const builders = [imageBuilderB, imageBuilderC];
builders.forEach((builder) => {
if (!equals(data, builder.getProbe())) {
builder.setProbe(data[0], data[1], data[2]);
}
});
}
function updateProbeLocationFromB(data, envelope) {
const builders = [imageBuilderA, imageBuilderC];
builders.forEach((builder) => {
if (!equals(data, builder.getProbe())) {
builder.setProbe(data[0], data[1], data[2]);
}
});
}
function updateProbeLocationFromC(data, envelope) {
const builders = [imageBuilderA, imageBuilderB];
builders.forEach((builder) => {
if (!equals(data, builder.getProbe())) {
builder.setProbe(data[0], data[1], data[2]);
}
});
}
imageBuilderA.onProbeChange(updateProbeLocationFromA);
imageBuilderB.onProbeChange(updateProbeLocationFromB);
imageBuilderC.onProbeChange(updateProbeLocationFromC);
// Configure container
document.body.style.margin = '0';
document.body.style.padding = '0';
document.body.style.overflow = 'hidden';
container.style.width = '100%';
container.style.height = '100%';
container.style.position = 'absolute';
ReactDOM.render(
React.createElement(MultiLayoutRenderer, {
renderers: {
XY: { builder: imageBuilderA, name: 'XY' },
ZY: { builder: imageBuilderB, name: 'ZY' },
XZ: { builder: imageBuilderC, name: 'XZ' },
},
}),
container
);
dataModel.fetchData();