@webviz/subsurface-viewer 0.0.1-alpha.1 → 0.0.2-alpha.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/package.json +5 -2
- package/package.json +6 -3
- package/src/DashSubsurfaceViewer.tsx +0 -270
- package/src/SubsurfaceViewer.stories.tsx +0 -449
- package/src/SubsurfaceViewer.test.tsx +0 -98
- package/src/SubsurfaceViewer.tsx +0 -356
- package/src/__snapshots__/SubsurfaceViewer.test.tsx.snap +0 -178
- package/src/assets/glTF/north_arrow/scene.bin +0 -0
- package/src/assets/glTF/north_arrow/scene.gltf +0 -315
- package/src/assets/glTF/north_arrow/textures/Arrow5_baseColor.png +0 -0
- package/src/assets/glTF/north_arrow/textures/Arrow5_metallicRoughness.png +0 -0
- package/src/assets/glTF/north_arrow/textures/Arrow5_normal.png +0 -0
- package/src/components/ColorLegend.test.tsx +0 -32
- package/src/components/ColorLegend.tsx +0 -80
- package/src/components/ColorLegends.test.tsx +0 -97
- package/src/components/ColorLegends.tsx +0 -46
- package/src/components/DistanceScale.stories.tsx +0 -28
- package/src/components/DistanceScale.test.tsx +0 -36
- package/src/components/DistanceScale.tsx +0 -84
- package/src/components/InfoCard.test.tsx +0 -110
- package/src/components/InfoCard.tsx +0 -263
- package/src/components/Map.test.tsx +0 -142
- package/src/components/Map.tsx +0 -1435
- package/src/components/StatusIndicator.test.tsx +0 -14
- package/src/components/StatusIndicator.tsx +0 -38
- package/src/components/ViewAnnotation.tsx +0 -16
- package/src/components/ViewFooter.test.tsx +0 -12
- package/src/components/ViewFooter.tsx +0 -30
- package/src/components/__snapshots__/ColorLegends.test.tsx.snap +0 -15
- package/src/components/__snapshots__/DistanceScale.test.tsx.snap +0 -33
- package/src/components/__snapshots__/InfoCard.test.tsx.snap +0 -561
- package/src/components/__snapshots__/Map.test.tsx.snap +0 -119
- package/src/components/__snapshots__/StatusIndicator.test.tsx.snap +0 -3
- package/src/components/__snapshots__/ViewFooter.test.tsx.snap +0 -7
- package/src/components/settings/DrawModeSelector.test.tsx +0 -45
- package/src/components/settings/DrawModeSelector.tsx +0 -58
- package/src/components/settings/DrawModeSelector_performance.test.tsx +0 -35
- package/src/components/settings/LayerProperty.test.tsx +0 -35
- package/src/components/settings/LayerProperty.tsx +0 -153
- package/src/components/settings/LayerProperty_performance.test.tsx +0 -39
- package/src/components/settings/LayerSettingsButton.test.tsx +0 -133
- package/src/components/settings/LayerSettingsButton.tsx +0 -95
- package/src/components/settings/LayersButton.test.tsx +0 -102
- package/src/components/settings/LayersButton.tsx +0 -97
- package/src/components/settings/NumericInput.test.tsx +0 -25
- package/src/components/settings/NumericInput.tsx +0 -67
- package/src/components/settings/Settings.tsx +0 -71
- package/src/components/settings/SliderInput.test.tsx +0 -28
- package/src/components/settings/SliderInput.tsx +0 -71
- package/src/components/settings/ToggleButton.test.tsx +0 -25
- package/src/components/settings/ToggleButton.tsx +0 -53
- package/src/components/settings/__snapshots__/DrawModeSelector.test.tsx.snap +0 -124
- package/src/components/settings/__snapshots__/LayerProperty.test.tsx.snap +0 -124
- package/src/components/settings/__snapshots__/LayerSettingsButton.test.tsx.snap +0 -36
- package/src/components/settings/__snapshots__/LayersButton.test.tsx.snap +0 -83
- package/src/components/settings/__snapshots__/NumericInput.test.tsx.snap +0 -123
- package/src/components/settings/__snapshots__/SliderInput.test.tsx.snap +0 -244
- package/src/components/settings/__snapshots__/ToggleButton.test.tsx.snap +0 -182
- package/src/custom.d.ts +0 -9
- package/src/index.ts +0 -5
- package/src/inputSchema/ColorTables.json +0 -51
- package/src/inputSchema/FaultPolygons.json +0 -80
- package/src/inputSchema/Grid.json +0 -39
- package/src/inputSchema/PieChart.json +0 -72
- package/src/inputSchema/WellLog.json +0 -126
- package/src/inputSchema/WellLogTemplate.json +0 -136
- package/src/inputSchema/WellLogs.json +0 -5
- package/src/inputSchema/Wells.json +0 -106
- package/src/inputSchema/schemaValidationUtil.tsx +0 -55
- package/src/inputSchema/validator.tsx +0 -72
- package/src/inputSchema/wellCompletions.json +0 -108
- package/src/layers/BoxSelectionLayer/boxSelectionLayer.stories.tsx +0 -172
- package/src/layers/BoxSelectionLayer/boxSelectionLayer.tsx +0 -136
- package/src/layers/axes/axes-fragment.glsl.ts +0 -15
- package/src/layers/axes/axesLayer.stories.tsx +0 -87
- package/src/layers/axes/axesLayer.ts +0 -692
- package/src/layers/axes/boxLayer.ts +0 -71
- package/src/layers/axes/grid-vertex.glsl.ts +0 -14
- package/src/layers/axes2d/axes2DLayer.stories.tsx +0 -150
- package/src/layers/axes2d/axes2DLayer.ts +0 -841
- package/src/layers/axes2d/font-atlas.png +0 -0
- package/src/layers/axes2d/label-fragment.glsl.js +0 -37
- package/src/layers/axes2d/label-vertex.glsl.js +0 -20
- package/src/layers/axes2d/line-fragment.glsl.js +0 -14
- package/src/layers/axes2d/line-vertex.glsl.js +0 -13
- package/src/layers/colormap/colormap.fs.glsl.ts +0 -42
- package/src/layers/colormap/colormapLayer.ts +0 -247
- package/src/layers/drawing/drawingLayer.tsx +0 -256
- package/src/layers/fault_polygons/faultPolygonsLayer.ts +0 -54
- package/src/layers/grid3d/fragment.fs.glsl.ts +0 -109
- package/src/layers/grid3d/fragment_lines.glsl.ts +0 -21
- package/src/layers/grid3d/grid3dLayer.stories.tsx +0 -172
- package/src/layers/grid3d/grid3dLayer.ts +0 -248
- package/src/layers/grid3d/privateLayer.ts +0 -292
- package/src/layers/grid3d/vertex.glsl.ts +0 -43
- package/src/layers/grid3d/vertex_lines.glsl.ts +0 -15
- package/src/layers/grid3d/webworker.ts +0 -173
- package/src/layers/hillshading2d/hillshading2d.fs.glsl.ts +0 -62
- package/src/layers/hillshading2d/hillshading2dLayer.ts +0 -172
- package/src/layers/index.ts +0 -35
- package/src/layers/intersection/intersectionView.stories.tsx +0 -294
- package/src/layers/intersection/unfoldedGeoJsonLayer.ts +0 -92
- package/src/layers/map/fragment.fs.glsl.ts +0 -127
- package/src/layers/map/fragment_lines.glsl.ts +0 -21
- package/src/layers/map/mapLayer.stories.tsx +0 -1369
- package/src/layers/map/mapLayer.ts +0 -470
- package/src/layers/map/privateMapLayer.ts +0 -317
- package/src/layers/map/vertex.glsl.ts +0 -45
- package/src/layers/map/vertex_lines.glsl.ts +0 -15
- package/src/layers/map/webworker.ts +0 -479
- package/src/layers/northarrow/northArrow.stories.tsx +0 -108
- package/src/layers/northarrow/northArrow3DLayer.ts +0 -204
- package/src/layers/northarrow/northarrow-fragment.glsl.js +0 -14
- package/src/layers/northarrow/northarrow-vertex.glsl.js +0 -13
- package/src/layers/piechart/fragment.glsl.js +0 -42
- package/src/layers/piechart/pieChartLayer.ts +0 -246
- package/src/layers/piechart/vertex.glsl.js +0 -42
- package/src/layers/points/pointsLayer.stories.tsx +0 -141
- package/src/layers/points/pointsLayer.ts +0 -143
- package/src/layers/polylines/polylinesLayer.stories.tsx +0 -144
- package/src/layers/polylines/polylinesLayer.ts +0 -263
- package/src/layers/selectable_geojson/selectableGeoJsonLayer.ts +0 -25
- package/src/layers/shader_modules/decoder.fs.glsl.ts +0 -41
- package/src/layers/shader_modules/decoder.ts +0 -46
- package/src/layers/shader_modules/index.ts +0 -1
- package/src/layers/terrain/map3DLayer.stories.tsx +0 -340
- package/src/layers/terrain/map3DLayer.ts +0 -556
- package/src/layers/terrain/terrainMapLayer.ts +0 -334
- package/src/layers/terrain/terrainmap.fs.glsl.ts +0 -134
- package/src/layers/triangle/fragment.fs.glsl.ts +0 -126
- package/src/layers/triangle/fragment_lines.glsl.ts +0 -21
- package/src/layers/triangle/privateTriangleLayer.ts +0 -203
- package/src/layers/triangle/test_data/surfacePoints.ts +0 -4344
- package/src/layers/triangle/test_data/surfaceTriangles.ts +0 -7392
- package/src/layers/triangle/triangleLayer.stories.tsx +0 -191
- package/src/layers/triangle/triangleLayer.ts +0 -273
- package/src/layers/triangle/vertex.glsl.ts +0 -35
- package/src/layers/triangle/vertex_lines.glsl.ts +0 -15
- package/src/layers/triangle/webworker.ts +0 -165
- package/src/layers/utils/glsl.d.ts +0 -4
- package/src/layers/utils/layerTools.ts +0 -182
- package/src/layers/utils/propertyMapTools.ts +0 -43
- package/src/layers/wells/utils/spline.ts +0 -318
- package/src/layers/wells/wellsLayer.stories.tsx +0 -625
- package/src/layers/wells/wellsLayer.ts +0 -1377
- package/src/redux/actions.ts +0 -8
- package/src/redux/reducer.ts +0 -43
- package/src/redux/store.ts +0 -15
- package/src/redux/types.ts +0 -114
- package/src/storybook/SubsurfaceViewer.stories.jsx +0 -644
- package/src/storybook/components/InfoCard.stories.jsx +0 -39
- package/src/storybook/components/colorLegends/ContinuousLegend.stories.jsx +0 -32
- package/src/storybook/components/colorLegends/DiscreteLegend.stories.jsx +0 -33
- package/src/storybook/components/colorLegends/IndividualScaleForMap.stories.jsx +0 -99
- package/src/storybook/components/colorLegends/SingleScaleForMap.stories.jsx +0 -120
- package/src/storybook/components/settings/LayerSettingsButton.stories.jsx +0 -34
- package/src/storybook/components/settings/NumericInput.stories.jsx +0 -17
- package/src/storybook/components/settings/ToggleButton.stories.jsx +0 -16
- package/src/storybook/schemaValidation/sampleData.js +0 -177
- package/src/storybook/schemaValidation/schemaValidation.stories.jsx +0 -91
- package/src/test/TestWrapper.tsx +0 -13
- package/src/utils/configuration.ts +0 -61
- package/src/utils/fit-bounds.js +0 -85
- package/src/utils/measurement.ts +0 -61
- package/src/utils/northArrow.ts +0 -4
- package/src/utils/specExtractor.ts +0 -36
- package/src/viewports/index.js +0 -1
- package/src/viewports/intersectionViewport.ts +0 -137
- package/src/views/index.js +0 -1
- package/src/views/intersectionView.ts +0 -38
- package/tsconfig.json +0 -7
|
@@ -1,449 +0,0 @@
|
|
|
1
|
-
import React, { useCallback, useMemo, useState } from "react";
|
|
2
|
-
import { ComponentStory, ComponentMeta } from "@storybook/react";
|
|
3
|
-
import { format } from "d3-format";
|
|
4
|
-
import { PickingInfo } from "@deck.gl/core/typed";
|
|
5
|
-
import { ContinuousLegend } from "@emerson-eps/color-tables";
|
|
6
|
-
import SubsurfaceViewer from "./SubsurfaceViewer";
|
|
7
|
-
import {
|
|
8
|
-
TooltipCallback,
|
|
9
|
-
LayerPickInfo,
|
|
10
|
-
WellsPickInfo,
|
|
11
|
-
ExtendedLayerProps,
|
|
12
|
-
PropertyDataType,
|
|
13
|
-
FeatureCollection,
|
|
14
|
-
ViewFooter,
|
|
15
|
-
View,
|
|
16
|
-
} from "../..";
|
|
17
|
-
import { MapMouseEvent, ViewStateType, ViewsType } from "./components/Map";
|
|
18
|
-
import { WellsLayer, MapLayer } from "./layers";
|
|
19
|
-
import InfoCard from "./components/InfoCard";
|
|
20
|
-
|
|
21
|
-
export default {
|
|
22
|
-
component: SubsurfaceViewer,
|
|
23
|
-
title: "SubsurfaceViewer",
|
|
24
|
-
} as ComponentMeta<typeof SubsurfaceViewer>;
|
|
25
|
-
|
|
26
|
-
const defaultWellsProps = {
|
|
27
|
-
id: "volve-wells",
|
|
28
|
-
data: "./volve_wells.json",
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const defaultWellsLayer = new WellsLayer({
|
|
32
|
-
...defaultWellsProps,
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
const defaultProps = {
|
|
36
|
-
id: "volve-wells",
|
|
37
|
-
bounds: [432150, 6475800, 439400, 6481500] as [
|
|
38
|
-
number,
|
|
39
|
-
number,
|
|
40
|
-
number,
|
|
41
|
-
number
|
|
42
|
-
],
|
|
43
|
-
layers: [defaultWellsLayer],
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
const wellsLayerWithlogs = new WellsLayer({
|
|
47
|
-
...defaultWellsProps,
|
|
48
|
-
logData: "./volve_logs.json",
|
|
49
|
-
logrunName: "BLOCKING",
|
|
50
|
-
logName: "PORO",
|
|
51
|
-
logColor: "Physics",
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
const Template: ComponentStory<typeof SubsurfaceViewer> = (args) => (
|
|
55
|
-
<SubsurfaceViewer {...args} />
|
|
56
|
-
);
|
|
57
|
-
|
|
58
|
-
function mdTooltip(info: PickingInfo) {
|
|
59
|
-
if (!info.picked) return null;
|
|
60
|
-
const value = (info as WellsPickInfo)?.properties?.[0].value;
|
|
61
|
-
if (!value) return null;
|
|
62
|
-
const f = format(".2f");
|
|
63
|
-
const niceValue = f(+value);
|
|
64
|
-
return "MD: " + niceValue;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export const TooltipApi = Template.bind({});
|
|
68
|
-
TooltipApi.args = {
|
|
69
|
-
...defaultProps,
|
|
70
|
-
layers: [
|
|
71
|
-
new WellsLayer({
|
|
72
|
-
...defaultWellsProps,
|
|
73
|
-
lineStyle: { width: 7 },
|
|
74
|
-
}),
|
|
75
|
-
],
|
|
76
|
-
getTooltip: mdTooltip,
|
|
77
|
-
bounds: [433000, 6476000, 439000, 6480000],
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
TooltipApi.parameters = {
|
|
81
|
-
docs: {
|
|
82
|
-
description: {
|
|
83
|
-
story: "Example of overriding the default tooltip, showing measured depth (MD) instead of the default bahaviour, which is to show the well name.",
|
|
84
|
-
},
|
|
85
|
-
inlineStories: false,
|
|
86
|
-
iframeHeight: 500,
|
|
87
|
-
},
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
export const TooltipStyle = Template.bind({});
|
|
91
|
-
|
|
92
|
-
const processPropInfo = (
|
|
93
|
-
properties: PropertyDataType[] | undefined,
|
|
94
|
-
filter: string[] | boolean
|
|
95
|
-
): string => {
|
|
96
|
-
if (!properties) {
|
|
97
|
-
return "";
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
let outputString = "";
|
|
101
|
-
|
|
102
|
-
if (typeof filter == "boolean") {
|
|
103
|
-
if (filter) {
|
|
104
|
-
properties.forEach((ppobj) => {
|
|
105
|
-
outputString += `\n${ppobj["name"]} : ${ppobj["value"]}`;
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
} else {
|
|
109
|
-
// filter is not boolean - thus it is a string array and we should check each property
|
|
110
|
-
properties.forEach((ppobj) => {
|
|
111
|
-
if (filter.includes(ppobj["name"] as string)) {
|
|
112
|
-
outputString += `\n${ppobj["name"]} : ${ppobj["value"]}`;
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return outputString;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
const tooltipImpFunc: TooltipCallback = (
|
|
120
|
-
info: PickingInfo
|
|
121
|
-
): Record<string, unknown> | string | null => {
|
|
122
|
-
if (!info.picked || !info.layer) {
|
|
123
|
-
return null;
|
|
124
|
-
}
|
|
125
|
-
const outputObject: Record<string, unknown> = {};
|
|
126
|
-
const layerName = info.layer.constructor.name;
|
|
127
|
-
let outputString = "";
|
|
128
|
-
if (layerName === "Map3DLayer") {
|
|
129
|
-
const layerProps = info.layer
|
|
130
|
-
.props as unknown as ExtendedLayerProps<unknown>;
|
|
131
|
-
const layerName = layerProps.name;
|
|
132
|
-
const properties = (info as LayerPickInfo).properties;
|
|
133
|
-
outputString += `Property: ${layerName}`;
|
|
134
|
-
outputString += processPropInfo(properties, true);
|
|
135
|
-
} else if (layerName === "WellsLayer") {
|
|
136
|
-
const wellsPickInfo = info as WellsPickInfo;
|
|
137
|
-
const wellsPickInfoObject = info.object as FeatureCollection;
|
|
138
|
-
const wellProperties = wellsPickInfoObject.properties;
|
|
139
|
-
const name = (wellProperties as { name: string }).name;
|
|
140
|
-
outputString += `Well: ${name || ""}`;
|
|
141
|
-
if (wellsPickInfo.featureType !== "points") {
|
|
142
|
-
outputString += processPropInfo(wellsPickInfo.properties, true);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
outputObject["text"] = outputString;
|
|
146
|
-
outputObject["style"] = { color: "yellow" };
|
|
147
|
-
return outputObject;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
TooltipStyle.args = {
|
|
151
|
-
...defaultProps,
|
|
152
|
-
layers: [
|
|
153
|
-
new WellsLayer({
|
|
154
|
-
...defaultWellsProps,
|
|
155
|
-
lineStyle: { width: 7 },
|
|
156
|
-
}),
|
|
157
|
-
],
|
|
158
|
-
getTooltip: tooltipImpFunc,
|
|
159
|
-
bounds: [433000, 6476000, 439000, 6480000],
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
TooltipStyle.parameters = {
|
|
163
|
-
docs: {
|
|
164
|
-
description: {
|
|
165
|
-
story: "Example of overriding tooltip style.",
|
|
166
|
-
},
|
|
167
|
-
inlineStories: false,
|
|
168
|
-
iframeHeight: 500,
|
|
169
|
-
},
|
|
170
|
-
};
|
|
171
|
-
|
|
172
|
-
const CustomTemplate: ComponentStory<typeof SubsurfaceViewer> = (args) => {
|
|
173
|
-
const [state, setState] = React.useState(args.cameraPosition);
|
|
174
|
-
|
|
175
|
-
const getCameraPosition = React.useCallback((input: ViewStateType) => {
|
|
176
|
-
setState(input);
|
|
177
|
-
return input;
|
|
178
|
-
}, []);
|
|
179
|
-
return (
|
|
180
|
-
<>
|
|
181
|
-
<SubsurfaceViewer
|
|
182
|
-
{...args}
|
|
183
|
-
cameraPosition={args.cameraPosition}
|
|
184
|
-
getCameraPosition={getCameraPosition}
|
|
185
|
-
/>
|
|
186
|
-
<div
|
|
187
|
-
style={{
|
|
188
|
-
position: "absolute",
|
|
189
|
-
marginLeft: 200,
|
|
190
|
-
}}
|
|
191
|
-
>
|
|
192
|
-
<div>zoom: {state?.zoom}</div>
|
|
193
|
-
<div>rotationX: {state?.rotationX}</div>
|
|
194
|
-
<div>rotationOrbit: {state?.rotationOrbit}</div>
|
|
195
|
-
<div>targetX: {state?.target[0]}</div>
|
|
196
|
-
<div>targetY: {state?.target[1]}</div>
|
|
197
|
-
</div>
|
|
198
|
-
</>
|
|
199
|
-
);
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
export const customizedCameraPosition = CustomTemplate.bind({});
|
|
203
|
-
|
|
204
|
-
const cameraPosition: ViewStateType = {
|
|
205
|
-
target: [437500, 6475000],
|
|
206
|
-
zoom: -5.0,
|
|
207
|
-
rotationX: 90,
|
|
208
|
-
rotationOrbit: 0,
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
customizedCameraPosition.args = {
|
|
212
|
-
...defaultProps,
|
|
213
|
-
cameraPosition,
|
|
214
|
-
};
|
|
215
|
-
|
|
216
|
-
const mapProps = {
|
|
217
|
-
id: "kh_netmap",
|
|
218
|
-
meshData: "hugin_depth_25_m.float32",
|
|
219
|
-
frame: {
|
|
220
|
-
origin: [432150, 6475800] as [number, number],
|
|
221
|
-
count: [291, 229] as [number, number],
|
|
222
|
-
increment: [25, 25] as [number, number],
|
|
223
|
-
rotDeg: 0,
|
|
224
|
-
},
|
|
225
|
-
propertiesData: "kh_netmap_25_m.float32",
|
|
226
|
-
contours: [0, 100] as [number, number],
|
|
227
|
-
material: false,
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
const netmapLayer = new MapLayer({ ...mapProps });
|
|
231
|
-
const huginLayer = new MapLayer({
|
|
232
|
-
...mapProps,
|
|
233
|
-
id: "hugin",
|
|
234
|
-
propertiesData: "hugin_depth_25_m.float32",
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
const MultiViewAnnotationTemplate: ComponentStory<typeof SubsurfaceViewer> = (
|
|
238
|
-
args
|
|
239
|
-
) => (
|
|
240
|
-
<SubsurfaceViewer {...args}>
|
|
241
|
-
{
|
|
242
|
-
<View id="view_1">
|
|
243
|
-
<ContinuousLegend min={-3071} max={41048} />
|
|
244
|
-
<ViewFooter>kH netmap</ViewFooter>
|
|
245
|
-
</View>
|
|
246
|
-
}
|
|
247
|
-
{
|
|
248
|
-
<View id="view_2">
|
|
249
|
-
<ContinuousLegend min={2725} max={3396} />
|
|
250
|
-
<ViewFooter>Hugin</ViewFooter>
|
|
251
|
-
</View>
|
|
252
|
-
}
|
|
253
|
-
</SubsurfaceViewer>
|
|
254
|
-
);
|
|
255
|
-
|
|
256
|
-
export const MultiViewAnnotation = MultiViewAnnotationTemplate.bind({});
|
|
257
|
-
|
|
258
|
-
MultiViewAnnotation.args = {
|
|
259
|
-
id: "multi_view_annotation",
|
|
260
|
-
layers: [netmapLayer, huginLayer],
|
|
261
|
-
views: {
|
|
262
|
-
layout: [1, 2],
|
|
263
|
-
showLabel: true,
|
|
264
|
-
viewports: [
|
|
265
|
-
{
|
|
266
|
-
id: "view_1",
|
|
267
|
-
layerIds: ["hugin"],
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
id: "view_2",
|
|
271
|
-
layerIds: ["kh_netmap"],
|
|
272
|
-
},
|
|
273
|
-
],
|
|
274
|
-
},
|
|
275
|
-
};
|
|
276
|
-
|
|
277
|
-
export const ViewObjectInitializedAsEmpty = MultiViewAnnotationTemplate.bind(
|
|
278
|
-
{}
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
ViewObjectInitializedAsEmpty.args = {
|
|
282
|
-
id: "view_initialized_as_empty",
|
|
283
|
-
layers: [netmapLayer, huginLayer],
|
|
284
|
-
views: {} as ViewsType,
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
const wellsLayerNoDepthTest = new WellsLayer({
|
|
288
|
-
...defaultWellsProps,
|
|
289
|
-
id: "wells-layer-no-depth-test",
|
|
290
|
-
depthTest: false,
|
|
291
|
-
});
|
|
292
|
-
|
|
293
|
-
export const DepthTest: ComponentStory<typeof SubsurfaceViewer> = (args) => {
|
|
294
|
-
const props = {
|
|
295
|
-
...args,
|
|
296
|
-
layers: [netmapLayer, defaultWellsLayer, wellsLayerNoDepthTest],
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
return (
|
|
300
|
-
<>
|
|
301
|
-
<div>
|
|
302
|
-
<SubsurfaceViewer {...props} />
|
|
303
|
-
</div>
|
|
304
|
-
<h4>
|
|
305
|
-
View on the right depthTest for the wells layer property is set
|
|
306
|
-
to false and wells layer is given last so that it will be
|
|
307
|
-
painted on top. On the left parts of the wells are hidden
|
|
308
|
-
beneath the surface.
|
|
309
|
-
</h4>
|
|
310
|
-
</>
|
|
311
|
-
);
|
|
312
|
-
};
|
|
313
|
-
|
|
314
|
-
DepthTest.args = {
|
|
315
|
-
id: "DepthTest",
|
|
316
|
-
views: {
|
|
317
|
-
layout: [1, 2],
|
|
318
|
-
viewports: [
|
|
319
|
-
{
|
|
320
|
-
id: "view_1",
|
|
321
|
-
layerIds: ["hugin", "wells-layer"],
|
|
322
|
-
show3D: false,
|
|
323
|
-
isSync: true,
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
id: "view_2",
|
|
327
|
-
layerIds: ["hugin", "wells-layer-no-depth-test"],
|
|
328
|
-
show3D: false,
|
|
329
|
-
isSync: true,
|
|
330
|
-
},
|
|
331
|
-
],
|
|
332
|
-
},
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
DepthTest.parameters = {
|
|
336
|
-
docs: {
|
|
337
|
-
description: {
|
|
338
|
-
story: "Example using the depthTest property. If this is set to false it will disable depth testing for the layer",
|
|
339
|
-
},
|
|
340
|
-
},
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
function getReadout(event: MapMouseEvent) {
|
|
344
|
-
const pickInfo = event.infos;
|
|
345
|
-
return <InfoCard pickInfos={pickInfo} />;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
const MouseEventStory = (args: { show3d: boolean }) => {
|
|
349
|
-
const [event, setEvent] = useState<MapMouseEvent>({
|
|
350
|
-
type: "click",
|
|
351
|
-
infos: [],
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
const handleEvent = useCallback(
|
|
355
|
-
(event: MapMouseEvent) => {
|
|
356
|
-
setEvent(event);
|
|
357
|
-
},
|
|
358
|
-
[setEvent]
|
|
359
|
-
);
|
|
360
|
-
|
|
361
|
-
const useProps = useMemo(() => {
|
|
362
|
-
const props = {
|
|
363
|
-
...defaultProps,
|
|
364
|
-
layers: [wellsLayerWithlogs, netmapLayer],
|
|
365
|
-
onMouseEvent: handleEvent,
|
|
366
|
-
views: {
|
|
367
|
-
layout: [1, 1] as [number, number],
|
|
368
|
-
viewports: [{ id: "test", show3D: args.show3d }],
|
|
369
|
-
},
|
|
370
|
-
coords: { visible: false },
|
|
371
|
-
};
|
|
372
|
-
return props;
|
|
373
|
-
}, [handleEvent, args.show3d]);
|
|
374
|
-
|
|
375
|
-
return (
|
|
376
|
-
<SubsurfaceViewer {...useProps}>
|
|
377
|
-
<View id="test">
|
|
378
|
-
{getReadout(event)}
|
|
379
|
-
<ViewFooter>Mouse event example</ViewFooter>
|
|
380
|
-
</View>
|
|
381
|
-
</SubsurfaceViewer>
|
|
382
|
-
);
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
export const MouseEvent: ComponentStory<typeof MouseEventStory> = (args) => {
|
|
386
|
-
return <MouseEventStory {...args} />;
|
|
387
|
-
};
|
|
388
|
-
|
|
389
|
-
MouseEvent.args = {
|
|
390
|
-
show3d: true,
|
|
391
|
-
};
|
|
392
|
-
|
|
393
|
-
const ViewStateSynchronizationStory = (args: {
|
|
394
|
-
show3d: boolean;
|
|
395
|
-
sync: string[];
|
|
396
|
-
}) => {
|
|
397
|
-
const subsurfaceViewerArgs = {
|
|
398
|
-
id: "view_state_synchronization",
|
|
399
|
-
layers: [netmapLayer, huginLayer, defaultWellsLayer],
|
|
400
|
-
views: {
|
|
401
|
-
layout: [2, 2] as [number, number],
|
|
402
|
-
viewports: [
|
|
403
|
-
{
|
|
404
|
-
id: "view_1",
|
|
405
|
-
layerIds: ["hugin"],
|
|
406
|
-
show3D: args.show3d,
|
|
407
|
-
isSync: args.sync.includes("view_1"),
|
|
408
|
-
},
|
|
409
|
-
{
|
|
410
|
-
id: "view_2",
|
|
411
|
-
layerIds: ["kh_netmap"],
|
|
412
|
-
show3D: args.show3d,
|
|
413
|
-
isSync: args.sync.includes("view_2"),
|
|
414
|
-
},
|
|
415
|
-
{
|
|
416
|
-
id: "view_3",
|
|
417
|
-
layerIds: ["volve-wells"],
|
|
418
|
-
show3D: args.show3d,
|
|
419
|
-
isSync: args.sync.includes("view_3"),
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
id: "view_4",
|
|
423
|
-
layerIds: ["volve-wells", "hugin"],
|
|
424
|
-
show3D: args.show3d,
|
|
425
|
-
isSync: args.sync.includes("view_4"),
|
|
426
|
-
},
|
|
427
|
-
],
|
|
428
|
-
},
|
|
429
|
-
};
|
|
430
|
-
return <SubsurfaceViewer {...subsurfaceViewerArgs} />;
|
|
431
|
-
};
|
|
432
|
-
|
|
433
|
-
export const ViewStateSynchronization: ComponentStory<
|
|
434
|
-
typeof ViewStateSynchronizationStory
|
|
435
|
-
> = (args) => {
|
|
436
|
-
return <ViewStateSynchronizationStory {...args} />;
|
|
437
|
-
};
|
|
438
|
-
|
|
439
|
-
ViewStateSynchronization.args = {
|
|
440
|
-
show3d: false,
|
|
441
|
-
sync: ["view_1", "view_2", "view_3", "view_4"],
|
|
442
|
-
};
|
|
443
|
-
|
|
444
|
-
ViewStateSynchronization.argTypes = {
|
|
445
|
-
sync: {
|
|
446
|
-
options: ["view_1", "view_2", "view_3", "view_4"],
|
|
447
|
-
control: "check",
|
|
448
|
-
},
|
|
449
|
-
};
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-var-requires */
|
|
2
|
-
import "@testing-library/jest-dom/extend-expect";
|
|
3
|
-
import { render } from "@testing-library/react";
|
|
4
|
-
import "jest-styled-components";
|
|
5
|
-
import "@testing-library/jest-dom";
|
|
6
|
-
import React from "react";
|
|
7
|
-
import SubsurfaceViewer from "./SubsurfaceViewer";
|
|
8
|
-
import { colorTables } from "@emerson-eps/color-tables";
|
|
9
|
-
|
|
10
|
-
import mapData from "../../../demo/example-data/deckgl-map.json";
|
|
11
|
-
import { Unit } from "convert-units";
|
|
12
|
-
|
|
13
|
-
const colorTablesData = colorTables;
|
|
14
|
-
|
|
15
|
-
describe("Test Map component", () => {
|
|
16
|
-
it("snapshot test", () => {
|
|
17
|
-
const { container } = render(
|
|
18
|
-
<SubsurfaceViewer
|
|
19
|
-
id={mapData[0].id}
|
|
20
|
-
resources={mapData[0].resources}
|
|
21
|
-
layers={mapData[0].layers}
|
|
22
|
-
bounds={mapData[0].bounds as [number, number, number, number]}
|
|
23
|
-
coords={mapData[0].coords}
|
|
24
|
-
scale={mapData[0].scale}
|
|
25
|
-
coordinateUnit={mapData[0].coordinateUnit as Unit}
|
|
26
|
-
legend={mapData[0].legend}
|
|
27
|
-
editedData={mapData[0].editedData}
|
|
28
|
-
views={{
|
|
29
|
-
layout: [1, 1],
|
|
30
|
-
viewports: [
|
|
31
|
-
{
|
|
32
|
-
id: "view_1",
|
|
33
|
-
show3D: false,
|
|
34
|
-
layerIds: [],
|
|
35
|
-
},
|
|
36
|
-
],
|
|
37
|
-
}}
|
|
38
|
-
colorTables={[colorTablesData[0]]}
|
|
39
|
-
/>
|
|
40
|
-
);
|
|
41
|
-
expect(container.firstChild).toMatchSnapshot();
|
|
42
|
-
});
|
|
43
|
-
it("snapshot test with edited data", () => {
|
|
44
|
-
const { container } = render(
|
|
45
|
-
<SubsurfaceViewer
|
|
46
|
-
id={mapData[0].id}
|
|
47
|
-
resources={mapData[0].resources}
|
|
48
|
-
layers={mapData[0].layers}
|
|
49
|
-
bounds={mapData[0].bounds as [number, number, number, number]}
|
|
50
|
-
coords={mapData[0].coords}
|
|
51
|
-
scale={mapData[0].scale}
|
|
52
|
-
coordinateUnit={mapData[0].coordinateUnit as Unit}
|
|
53
|
-
legend={mapData[0].legend}
|
|
54
|
-
editedData={{}}
|
|
55
|
-
views={{
|
|
56
|
-
layout: [1, 1],
|
|
57
|
-
viewports: [
|
|
58
|
-
{
|
|
59
|
-
id: "view_1",
|
|
60
|
-
show3D: false,
|
|
61
|
-
layerIds: [],
|
|
62
|
-
},
|
|
63
|
-
],
|
|
64
|
-
}}
|
|
65
|
-
colorTables={[colorTablesData[0]]}
|
|
66
|
-
/>
|
|
67
|
-
);
|
|
68
|
-
expect(container.firstChild).toMatchSnapshot();
|
|
69
|
-
});
|
|
70
|
-
it("snapshot test with invalid array length", () => {
|
|
71
|
-
const { container } = render(
|
|
72
|
-
<SubsurfaceViewer
|
|
73
|
-
id={mapData[0].id}
|
|
74
|
-
resources={mapData[0].resources}
|
|
75
|
-
layers={mapData[0].layers}
|
|
76
|
-
// @ts-expect-error: Ignore a compile error for "bounds" prop for the sake of running a scenario
|
|
77
|
-
bounds={[0, 0, 0]}
|
|
78
|
-
coords={mapData[0].coords}
|
|
79
|
-
scale={mapData[0].scale}
|
|
80
|
-
coordinateUnit={mapData[0].coordinateUnit as Unit}
|
|
81
|
-
legend={mapData[0].legend}
|
|
82
|
-
editedData={mapData[0].editedData}
|
|
83
|
-
views={{
|
|
84
|
-
layout: [1, 1],
|
|
85
|
-
viewports: [
|
|
86
|
-
{
|
|
87
|
-
id: "view_1",
|
|
88
|
-
show3D: false,
|
|
89
|
-
layerIds: [],
|
|
90
|
-
},
|
|
91
|
-
],
|
|
92
|
-
}}
|
|
93
|
-
colorTables={[colorTablesData[0]]}
|
|
94
|
-
/>
|
|
95
|
-
);
|
|
96
|
-
expect(container.firstChild).toMatchSnapshot();
|
|
97
|
-
});
|
|
98
|
-
});
|