@webviz/subsurface-viewer 1.18.1 → 1.18.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DashSubsurfaceViewer.js +2 -13
- package/dist/DashSubsurfaceViewer.js.map +1 -1
- package/dist/SubsurfaceViewer.js +10 -16
- package/dist/SubsurfaceViewer.js.map +1 -1
- package/dist/components/ColorLegend.js +3 -4
- package/dist/components/ColorLegend.js.map +1 -1
- package/dist/components/ColorLegends.js +6 -1
- package/dist/components/ColorLegends.js.map +1 -1
- package/dist/components/DistanceScale.js +5 -2
- package/dist/components/DistanceScale.js.map +1 -1
- package/dist/components/InfoCard.js +9 -13
- package/dist/components/InfoCard.js.map +1 -1
- package/dist/components/Map.js +182 -151
- package/dist/components/Map.js.map +1 -1
- package/dist/components/settings/DrawModeSelector.js +2 -2
- package/dist/components/settings/DrawModeSelector.js.map +1 -1
- package/dist/components/settings/Settings.js +1 -1
- package/dist/components/settings/Settings.js.map +1 -1
- package/dist/extensions/side-projection-extension.js +2 -2
- package/dist/extensions/side-projection-extension.js.map +1 -1
- package/dist/hooks/useMultiViewCursorTracking/useMultiViewCursorTracking.js +11 -6
- package/dist/hooks/useMultiViewCursorTracking/useMultiViewCursorTracking.js.map +1 -1
- package/dist/hooks/useMultiViewPicking/MultiViewPickingInfoAssembler.js +83 -97
- package/dist/hooks/useMultiViewPicking/MultiViewPickingInfoAssembler.js.map +1 -1
- package/dist/hooks/useMultiViewPicking/useMultiViewPicking.js +4 -1
- package/dist/hooks/useMultiViewPicking/useMultiViewPicking.js.map +1 -1
- package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js +2 -3
- package/dist/layers/BoxSelectionLayer/boxSelectionLayer.js.map +1 -1
- package/dist/layers/axes/axesLayer.js +11 -4
- package/dist/layers/axes/axesLayer.js.map +1 -1
- package/dist/layers/axes/boxLayer.js +17 -10
- package/dist/layers/axes/boxLayer.js.map +1 -1
- package/dist/layers/axes2d/axes2DLayer.js +56 -32
- package/dist/layers/axes2d/axes2DLayer.js.map +1 -1
- package/dist/layers/colormap/colormapLayer.js +33 -34
- package/dist/layers/colormap/colormapLayer.js.map +1 -1
- package/dist/layers/crosshair/crosshairLayer.js +2 -2
- package/dist/layers/crosshair/crosshairLayer.js.map +1 -1
- package/dist/layers/drawing/drawingLayer.js +6 -4
- package/dist/layers/drawing/drawingLayer.js.map +1 -1
- package/dist/layers/fault_polygons/faultPolygonsLayer.js +5 -6
- package/dist/layers/fault_polygons/faultPolygonsLayer.js.map +1 -1
- package/dist/layers/gpglLayers/gpglValueMappedSurfaceLayer.js +194 -168
- package/dist/layers/gpglLayers/gpglValueMappedSurfaceLayer.js.map +1 -1
- package/dist/layers/grid3d/grid3dLayer.js +46 -53
- package/dist/layers/grid3d/grid3dLayer.js.map +1 -1
- package/dist/layers/grid3d/privateGrid3dLayer.js +73 -48
- package/dist/layers/grid3d/privateGrid3dLayer.js.map +1 -1
- package/dist/layers/grid3d/webworker.js +17 -6
- package/dist/layers/grid3d/webworker.js.map +1 -1
- package/dist/layers/hillshading2d/hillshading2dLayer.js +15 -9
- package/dist/layers/hillshading2d/hillshading2dLayer.js.map +1 -1
- package/dist/layers/map/mapLayer.js +49 -50
- package/dist/layers/map/mapLayer.js.map +1 -1
- package/dist/layers/map/privateMapLayer.js +52 -28
- package/dist/layers/map/privateMapLayer.js.map +1 -1
- package/dist/layers/map/webworker.js +1 -1
- package/dist/layers/map/webworker.js.map +1 -1
- package/dist/layers/northarrow/northArrow3DLayer.js +17 -10
- package/dist/layers/northarrow/northArrow3DLayer.js.map +1 -1
- package/dist/layers/piechart/pieChartLayer.js +26 -21
- package/dist/layers/piechart/pieChartLayer.js.map +1 -1
- package/dist/layers/points/pointsLayer.js +5 -3
- package/dist/layers/points/pointsLayer.js.map +1 -1
- package/dist/layers/points/privatePointsLayer.js +1 -2
- package/dist/layers/points/privatePointsLayer.js.map +1 -1
- package/dist/layers/polyline_group/polylineGroupLayer.js +84 -58
- package/dist/layers/polyline_group/polylineGroupLayer.js.map +1 -1
- package/dist/layers/polylines/polylinesLayer.js +5 -3
- package/dist/layers/polylines/polylinesLayer.js.map +1 -1
- package/dist/layers/polylines/privatePolylinesLayer.js +1 -2
- package/dist/layers/polylines/privatePolylinesLayer.js.map +1 -1
- package/dist/layers/seismic/seismicLayer.js +28 -23
- package/dist/layers/seismic/seismicLayer.js.map +1 -1
- package/dist/layers/shader_modules/phong-lighting/phong-material.js +2 -2
- package/dist/layers/shader_modules/phong-lighting/phong-material.js.map +1 -1
- package/dist/layers/shader_modules/test-precision/precisionForTests-shaders-glsl.js +4 -3
- package/dist/layers/shader_modules/test-precision/precisionForTests-shaders-glsl.js.map +1 -1
- package/dist/layers/triangle/privateTriangleLayer.js +66 -40
- package/dist/layers/triangle/privateTriangleLayer.js.map +1 -1
- package/dist/layers/triangle/triangleLayer.js +66 -66
- package/dist/layers/triangle/triangleLayer.js.map +1 -1
- package/dist/layers/utils/colormapTools.js +16 -3
- package/dist/layers/utils/colormapTools.js.map +1 -1
- package/dist/layers/utils/layerTools.js +5 -7
- package/dist/layers/utils/layerTools.js.map +1 -1
- package/dist/layers/well_markers/wellMarkersLayer.js +41 -16
- package/dist/layers/well_markers/wellMarkersLayer.js.map +1 -1
- package/dist/layers/wells/layers/dashedSectionsPathLayer.js +60 -31
- package/dist/layers/wells/layers/dashedSectionsPathLayer.js.map +1 -1
- package/dist/layers/wells/layers/flatWellMarkersLayer.js +79 -33
- package/dist/layers/wells/layers/flatWellMarkersLayer.js.map +1 -1
- package/dist/layers/wells/layers/logCurveLayer.js +80 -69
- package/dist/layers/wells/layers/logCurveLayer.js.map +1 -1
- package/dist/layers/wells/layers/mergedTextLayer.js +18 -12
- package/dist/layers/wells/layers/mergedTextLayer.js.map +1 -1
- package/dist/layers/wells/layers/wellLabelLayer.js +20 -13
- package/dist/layers/wells/layers/wellLabelLayer.js.map +1 -1
- package/dist/layers/wells/utils/abscissaTransform.js +10 -4
- package/dist/layers/wells/utils/abscissaTransform.js.map +1 -1
- package/dist/layers/wells/utils/features.js +2 -4
- package/dist/layers/wells/utils/features.js.map +1 -1
- package/dist/layers/wells/utils/log.js +11 -11
- package/dist/layers/wells/utils/log.js.map +1 -1
- package/dist/layers/wells/utils/readout.js +2 -4
- package/dist/layers/wells/utils/readout.js.map +1 -1
- package/dist/layers/wells/utils/spline.js +19 -25
- package/dist/layers/wells/utils/spline.js.map +1 -1
- package/dist/layers/wells/utils/trajectory.js +28 -22
- package/dist/layers/wells/utils/trajectory.js.map +1 -1
- package/dist/layers/wells/utils/wells.js +3 -4
- package/dist/layers/wells/utils/wells.js.map +1 -1
- package/dist/layers/wells/wellsLayer.js +232 -138
- package/dist/layers/wells/wellsLayer.js.map +1 -1
- package/dist/utils/BoundingBox2D.js +2 -2
- package/dist/utils/BoundingBox2D.js.map +1 -1
- package/dist/utils/BoundingBox3D.js +2 -2
- package/dist/utils/BoundingBox3D.js.map +1 -1
- package/dist/utils/Color.js +2 -3
- package/dist/utils/Color.js.map +1 -1
- package/dist/utils/camera.js +3 -5
- package/dist/utils/camera.js.map +1 -1
- package/dist/utils/configuration.d.ts +5 -5
- package/dist/utils/configuration.js +7 -2
- package/dist/utils/configuration.js.map +1 -1
- package/dist/utils/event.js +7 -7
- package/dist/utils/event.js.map +1 -1
- package/dist/utils/serialize.js +52 -68
- package/dist/utils/serialize.js.map +1 -1
- package/dist/utils/specExtractor.js +1 -1
- package/dist/utils/specExtractor.js.map +1 -1
- package/dist/views/sectionView.js +1 -1
- package/dist/views/sectionView.js.map +1 -1
- package/dist/views/viewport.d.ts +1 -0
- package/dist/views/viewport.js +10 -4
- package/dist/views/viewport.js.map +1 -1
- package/package.json +12 -16
package/dist/components/Map.js
CHANGED
|
@@ -34,7 +34,6 @@ const DEFAULT_VIEWS = {
|
|
|
34
34
|
viewports: [{ id: "main-view", viewType: OrthographicView }],
|
|
35
35
|
};
|
|
36
36
|
function parseLights(lights) {
|
|
37
|
-
var _a, _b, _c, _d;
|
|
38
37
|
if (!lights) {
|
|
39
38
|
return undefined;
|
|
40
39
|
}
|
|
@@ -43,22 +42,26 @@ function parseLights(lights) {
|
|
|
43
42
|
if (lights.ambientLight) {
|
|
44
43
|
lightsObj["AmbientLight"] = new AmbientLight({
|
|
45
44
|
intensity: lights.ambientLight.intensity,
|
|
46
|
-
color:
|
|
45
|
+
color: lights.ambientLight.color ?? [255, 255, 255],
|
|
47
46
|
});
|
|
48
47
|
}
|
|
49
48
|
if (lights.headLight) {
|
|
50
49
|
lightsObj["HeadLight"] = new CameraLight({
|
|
51
50
|
intensity: lights.headLight.intensity,
|
|
52
|
-
color:
|
|
51
|
+
color: lights.headLight.color ?? [255, 255, 255],
|
|
53
52
|
});
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
lights.pointLights?.forEach((light, index) => {
|
|
55
|
+
lightsObj[`PointLight_${index}`] = new PointLight({
|
|
56
|
+
...light,
|
|
57
|
+
color: light.color ?? [255, 255, 255],
|
|
58
|
+
});
|
|
58
59
|
});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
lights.directionalLights?.forEach((light, index) => {
|
|
61
|
+
lightsObj[`DirectionalLight_${index}`] = new DirectionalLight({
|
|
62
|
+
...light,
|
|
63
|
+
color: light.color ?? [255, 255, 255],
|
|
64
|
+
});
|
|
62
65
|
});
|
|
63
66
|
const lightingEffect = new LightingEffect(lightsObj);
|
|
64
67
|
effects.push(lightingEffect);
|
|
@@ -84,31 +87,31 @@ function show3D(viewPort) {
|
|
|
84
87
|
return viewPort.viewType === OrbitView;
|
|
85
88
|
}
|
|
86
89
|
function defaultTooltip(info) {
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return (_d = info.object.wellLabels) === null || _d === void 0 ? void 0 : _d.join("\n");
|
|
90
|
+
if ((info.layer?.constructor === WellLabelLayer ||
|
|
91
|
+
info.sourceLayer?.constructor === WellLabelLayer) &&
|
|
92
|
+
info.object?.wellLabels) {
|
|
93
|
+
return info.object.wellLabels?.join("\n");
|
|
92
94
|
}
|
|
93
|
-
else if (info
|
|
94
|
-
return info
|
|
95
|
+
else if (info?.logName) {
|
|
96
|
+
return info?.logName;
|
|
95
97
|
}
|
|
96
|
-
else if (
|
|
97
|
-
return
|
|
98
|
+
else if (info.layer?.id === "drawing-layer") {
|
|
99
|
+
return info.propertyValue?.toFixed(2);
|
|
98
100
|
}
|
|
99
101
|
const feat = info.object;
|
|
100
|
-
return
|
|
102
|
+
return feat?.properties?.["name"];
|
|
101
103
|
}
|
|
102
104
|
function makeExtendedPickingInfo(info) {
|
|
103
105
|
const scaledCoordinate = info.coordinate
|
|
104
106
|
? [...info.coordinate]
|
|
105
107
|
: undefined;
|
|
106
|
-
const extendedPickInfo =
|
|
108
|
+
const extendedPickInfo = {
|
|
109
|
+
...info,
|
|
110
|
+
scaledCoordinate,
|
|
111
|
+
};
|
|
107
112
|
return extendedPickInfo;
|
|
108
113
|
}
|
|
109
|
-
const Map = (
|
|
110
|
-
var _b, _c, _d, _e, _f, _g, _h;
|
|
111
|
-
var { id, layers, bounds, cameraPosition, triggerHome, views = DEFAULT_VIEWS, scale = { visible: true, cssStyle: { top: 10, left: 10 } }, coords, showReadout = (_b = coords === null || coords === void 0 ? void 0 : coords.visible) !== null && _b !== void 0 ? _b : true, pickingDepth = (_c = coords === null || coords === void 0 ? void 0 : coords.pickDepth) !== null && _c !== void 0 ? _c : 2, coordinateUnit = "m", colorTables = defaultColorTables, setEditedData, checkDatafileSchema = false, onMouseEvent, selection, children, getTooltip = defaultTooltip, getCameraPosition, onRenderingProgress, onDragStart, onDragEnd, onDrag, getCursor, lights, triggerResetMultipleWells, verticalScale, innerRef, pickingRadius, deckGlRef, } = _a;
|
|
114
|
+
const Map = ({ id, layers, bounds, cameraPosition, triggerHome, views = DEFAULT_VIEWS, scale = { visible: true, cssStyle: { top: 10, left: 10 } }, coords, showReadout = coords?.visible ?? true, pickingDepth = coords?.pickDepth ?? 2, coordinateUnit = "m", colorTables = defaultColorTables, setEditedData, checkDatafileSchema = false, onMouseEvent, selection, children, getTooltip = defaultTooltip, getCameraPosition, onRenderingProgress, onDragStart, onDragEnd, onDrag, getCursor, lights, triggerResetMultipleWells, verticalScale, innerRef, pickingRadius, deckGlRef, }) => {
|
|
112
115
|
// From react doc, ref should not be read nor modified during rendering.
|
|
113
116
|
const deckRef = React.useRef(null);
|
|
114
117
|
React.useImperativeHandle(deckGlRef, () => deckRef.current);
|
|
@@ -120,8 +123,8 @@ const Map = (_a) => {
|
|
|
120
123
|
// exclude {0, 0} size (when rendered hidden pages)
|
|
121
124
|
if (size.width > 0 && size.height > 0) {
|
|
122
125
|
setDeckSize((prevSize) => {
|
|
123
|
-
if (
|
|
124
|
-
|
|
126
|
+
if (prevSize?.width !== size.width ||
|
|
127
|
+
prevSize?.height !== size.height) {
|
|
125
128
|
return size;
|
|
126
129
|
}
|
|
127
130
|
return prevSize;
|
|
@@ -131,19 +134,18 @@ const Map = (_a) => {
|
|
|
131
134
|
// 3d bounding box computed from the layers
|
|
132
135
|
const [dataBoundingBox3d, dispatchBoundingBox] = React.useReducer(mapBoundingBoxReducer, undefined);
|
|
133
136
|
// Get vertical scaling factor defined in viewports.
|
|
134
|
-
const viewportVerticalScale = useVerticalScale(views
|
|
137
|
+
const viewportVerticalScale = useVerticalScale(views?.viewports);
|
|
135
138
|
// Used for scaling in z direction using arrow keys.
|
|
136
139
|
const { factor: zReScale, elementRef: zScaleRef } = useScaleFactor();
|
|
137
140
|
const { shiftHeld, divRef: shiftHeldRef } = useShiftHeld();
|
|
138
141
|
// Prevent using internal hook for manipulating vertical scale when the vertical
|
|
139
142
|
// scale is explicitly defined.
|
|
140
|
-
const overrideVerticalScaling = verticalScale
|
|
143
|
+
const overrideVerticalScaling = verticalScale ?? viewportVerticalScale;
|
|
141
144
|
const divRef = mergeRefs(overrideVerticalScaling ? undefined : zScaleRef, shiftHeldRef, innerRef);
|
|
142
|
-
const zScale =
|
|
145
|
+
const zScale = verticalScale ?? viewportVerticalScale ?? zReScale;
|
|
143
146
|
// compute the viewport margins
|
|
144
147
|
const viewPortMargins = React.useMemo(() => {
|
|
145
|
-
|
|
146
|
-
if (!(layers === null || layers === void 0 ? void 0 : layers.length)) {
|
|
148
|
+
if (!layers?.length) {
|
|
147
149
|
return {
|
|
148
150
|
left: 0,
|
|
149
151
|
right: 0,
|
|
@@ -152,37 +154,35 @@ const Map = (_a) => {
|
|
|
152
154
|
};
|
|
153
155
|
}
|
|
154
156
|
// Margins on the viewport are extracted from a potential axes2D layer.
|
|
155
|
-
const axes2DLayer = layers
|
|
156
|
-
return
|
|
157
|
+
const axes2DLayer = layers?.find((e) => {
|
|
158
|
+
return e?.constructor === Axes2DLayer;
|
|
157
159
|
});
|
|
158
|
-
const axes2DProps = axes2DLayer
|
|
159
|
-
const marginV =
|
|
160
|
-
const marginH =
|
|
160
|
+
const axes2DProps = axes2DLayer?.props;
|
|
161
|
+
const marginV = axes2DProps?.minimalMarginV ?? axes2DProps?.marginV;
|
|
162
|
+
const marginH = axes2DProps?.minimalMarginH ?? axes2DProps?.marginH;
|
|
161
163
|
return {
|
|
162
|
-
left:
|
|
163
|
-
right:
|
|
164
|
-
top:
|
|
165
|
-
bottom:
|
|
164
|
+
left: axes2DProps?.isLeftRuler ? marginH : 0,
|
|
165
|
+
right: axes2DProps?.isRightRuler ? marginH : 0,
|
|
166
|
+
top: axes2DProps?.isTopRuler ? marginV : 0,
|
|
167
|
+
bottom: axes2DProps?.isBottomRuler ? marginV : 0,
|
|
166
168
|
};
|
|
167
169
|
}, [layers]);
|
|
168
170
|
// selection
|
|
169
171
|
useEffect(() => {
|
|
170
|
-
|
|
171
|
-
const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
|
|
172
|
+
const layers = deckRef.current?.deck?.props.layers;
|
|
172
173
|
if (layers) {
|
|
173
|
-
const wellslayer =
|
|
174
|
-
wellslayer
|
|
174
|
+
const wellslayer = getLayersByType(layers, WellsLayer.name)?.[0];
|
|
175
|
+
wellslayer?.setSelection(selection?.well, selection?.selection);
|
|
175
176
|
}
|
|
176
177
|
}, [selection]);
|
|
177
178
|
// multiple well layers
|
|
178
179
|
const [multipleWells, setMultipleWells] = useState([]);
|
|
179
180
|
const [selectedWell, setSelectedWell] = useState("");
|
|
180
181
|
useEffect(() => {
|
|
181
|
-
|
|
182
|
-
const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
|
|
182
|
+
const layers = deckRef.current?.deck?.props.layers;
|
|
183
183
|
if (layers) {
|
|
184
|
-
const wellslayer =
|
|
185
|
-
wellslayer
|
|
184
|
+
const wellslayer = getWellLayerByTypeAndSelectedWells(layers, "WellsLayer", selectedWell)?.[0];
|
|
185
|
+
wellslayer?.setMultiSelection(multipleWells);
|
|
186
186
|
}
|
|
187
187
|
}, [multipleWells, selectedWell]);
|
|
188
188
|
useEffect(() => {
|
|
@@ -191,7 +191,6 @@ const Map = (_a) => {
|
|
|
191
191
|
}
|
|
192
192
|
}, [triggerResetMultipleWells]);
|
|
193
193
|
const getPickingInfos = useCallback((type, pickInfo, event) => {
|
|
194
|
-
var _a;
|
|
195
194
|
const depth = isFunction(pickingDepth)
|
|
196
195
|
? pickingDepth(type)
|
|
197
196
|
: pickingDepth;
|
|
@@ -199,7 +198,7 @@ const Map = (_a) => {
|
|
|
199
198
|
throw new Error(`Expected a picking depth to be positive. Received ${depth}`);
|
|
200
199
|
if (depth === 0)
|
|
201
200
|
return [];
|
|
202
|
-
if (!
|
|
201
|
+
if (!pickInfo.layer?.context.deck) {
|
|
203
202
|
const extendedPickInfo = makeExtendedPickingInfo(pickInfo);
|
|
204
203
|
// Z value should not take into account the Z scale factor.
|
|
205
204
|
viewController.unscaledTarget(pickInfo.coordinate);
|
|
@@ -213,14 +212,13 @@ const Map = (_a) => {
|
|
|
213
212
|
radius: pickingRadius,
|
|
214
213
|
});
|
|
215
214
|
const extendedPickInfos = pickInfos.map((itemPick) => {
|
|
216
|
-
var _a, _b, _c, _d;
|
|
217
215
|
const extItemPick = makeExtendedPickingInfo(itemPick);
|
|
218
216
|
// Z value should not take into account the Z scale factor.
|
|
219
217
|
viewController.unscaledTarget(extItemPick.coordinate);
|
|
220
218
|
if (extItemPick.layer instanceof WellsLayer) {
|
|
221
219
|
const wellsPickInfo = extItemPick;
|
|
222
|
-
const unit =
|
|
223
|
-
|
|
220
|
+
const unit = extItemPick.layer?.state.data?.unit ?? " ";
|
|
221
|
+
wellsPickInfo.properties?.forEach((property) => {
|
|
224
222
|
if (property.name.includes("MD") ||
|
|
225
223
|
property.name.includes("TVD")) {
|
|
226
224
|
const fixedNumber = Number(property.value).toFixed(2);
|
|
@@ -256,11 +254,11 @@ const Map = (_a) => {
|
|
|
256
254
|
const onHover = useCallback((pickInfo, event) => {
|
|
257
255
|
const infos = getPickingInfos("hover", pickInfo, event);
|
|
258
256
|
setHoverInfo(infos);
|
|
259
|
-
callOnMouseEvent
|
|
257
|
+
callOnMouseEvent?.("hover", infos, event);
|
|
260
258
|
}, [callOnMouseEvent, getPickingInfos]);
|
|
261
259
|
const onClick = useCallback((pickInfo, event) => {
|
|
262
260
|
const infos = getPickingInfos("click", pickInfo, event);
|
|
263
|
-
callOnMouseEvent
|
|
261
|
+
callOnMouseEvent?.("click", infos, event);
|
|
264
262
|
}, [callOnMouseEvent, getPickingInfos]);
|
|
265
263
|
const deckGLLayers = React.useMemo(() => {
|
|
266
264
|
if (!layers) {
|
|
@@ -276,7 +274,7 @@ const Map = (_a) => {
|
|
|
276
274
|
layers.push(dummy_layer);
|
|
277
275
|
}
|
|
278
276
|
return layers.map((item) => {
|
|
279
|
-
if (
|
|
277
|
+
if (item?.constructor.name === NorthArrow3DLayer.name) {
|
|
280
278
|
return item;
|
|
281
279
|
}
|
|
282
280
|
let m;
|
|
@@ -299,14 +297,15 @@ const Map = (_a) => {
|
|
|
299
297
|
}, [layers, zScale]);
|
|
300
298
|
const [loadingProgress, setLoadingProgress] = useState(0);
|
|
301
299
|
const onAfterRender = useCallback(() => {
|
|
302
|
-
var _a, _b;
|
|
303
300
|
if (deckGLLayers) {
|
|
304
301
|
let progress = 100;
|
|
305
302
|
// get all the layers ids used in the views, to consider only visible layers
|
|
306
|
-
const layersIdsPresentInViews =
|
|
307
|
-
|
|
303
|
+
const layersIdsPresentInViews = views?.viewports
|
|
304
|
+
?.map((viewport) => viewport?.layerIds)
|
|
305
|
+
?.flat();
|
|
306
|
+
const someViewportHasUndefinedLayerIds = layersIdsPresentInViews?.includes(undefined);
|
|
308
307
|
const allViewportsHaveAnEmptyListOfLayerIds = !someViewportHasUndefinedLayerIds &&
|
|
309
|
-
|
|
308
|
+
layersIdsPresentInViews?.length === 0;
|
|
310
309
|
const emptyLayers = // There will always be a dummy layer. Deck.gl does not like empty array of layers.
|
|
311
310
|
deckGLLayers.length === 1 &&
|
|
312
311
|
deckGLLayers[0].id ===
|
|
@@ -314,28 +313,26 @@ const Map = (_a) => {
|
|
|
314
313
|
if (!emptyLayers && !allViewportsHaveAnEmptyListOfLayerIds) {
|
|
315
314
|
// compute #done layers / #visible layers percentage
|
|
316
315
|
const visibleLayers = deckGLLayers.filter((layer) => {
|
|
317
|
-
var _a;
|
|
318
316
|
const layerWithType = layer;
|
|
319
317
|
const filterByLayersInViews = !someViewportHasUndefinedLayerIds
|
|
320
|
-
? layersIdsPresentInViews
|
|
318
|
+
? layersIdsPresentInViews?.includes(layerWithType.id)
|
|
321
319
|
: true;
|
|
322
|
-
return (
|
|
320
|
+
return (layerWithType?.props?.visible && filterByLayersInViews);
|
|
323
321
|
});
|
|
324
|
-
const loaded = visibleLayers
|
|
322
|
+
const loaded = visibleLayers?.filter((layer) => layer?.isLoaded).length;
|
|
325
323
|
// ceil to ensure reaching 100 (important to check if done)
|
|
326
|
-
progress = Math.ceil((100 * loaded) /
|
|
324
|
+
progress = Math.ceil((100 * loaded) / visibleLayers?.length);
|
|
327
325
|
}
|
|
328
326
|
setLoadingProgress(progress);
|
|
329
327
|
if (onRenderingProgress) {
|
|
330
328
|
onRenderingProgress(progress);
|
|
331
329
|
}
|
|
332
330
|
}
|
|
333
|
-
}, [deckGLLayers, onRenderingProgress, views
|
|
331
|
+
}, [deckGLLayers, onRenderingProgress, views?.viewports]);
|
|
334
332
|
// validate layers data
|
|
335
333
|
const [errorText, setErrorText] = useState();
|
|
336
334
|
useEffect(() => {
|
|
337
|
-
|
|
338
|
-
const layers = (_b = (_a = deckRef.current) === null || _a === void 0 ? void 0 : _a.deck) === null || _b === void 0 ? void 0 : _b.props.layers;
|
|
335
|
+
const layers = deckRef.current?.deck?.props.layers;
|
|
339
336
|
// this ensures to validate the schemas only once
|
|
340
337
|
if (checkDatafileSchema && layers && loadingProgress === 100) {
|
|
341
338
|
try {
|
|
@@ -353,19 +350,19 @@ const Map = (_a) => {
|
|
|
353
350
|
}, [
|
|
354
351
|
checkDatafileSchema,
|
|
355
352
|
colorTables,
|
|
356
|
-
|
|
353
|
+
deckRef?.current?.deck?.props.layers,
|
|
357
354
|
loadingProgress,
|
|
358
355
|
]);
|
|
359
356
|
const layerFilter = useCallback((args) => {
|
|
360
357
|
// display all the layers if views are not specified correctly
|
|
361
|
-
if (!
|
|
358
|
+
if (!views?.viewports || !views?.layout) {
|
|
362
359
|
return true;
|
|
363
360
|
}
|
|
364
361
|
const cur_view = views.viewports.find(({ id }) => args.viewport.id && id === args.viewport.id);
|
|
365
|
-
if (
|
|
362
|
+
if (cur_view?.layerIds === undefined) {
|
|
366
363
|
return true;
|
|
367
364
|
}
|
|
368
|
-
if (
|
|
365
|
+
if (cur_view?.layerIds && cur_view.layerIds.length > 0) {
|
|
369
366
|
const layer_ids = cur_view.layerIds;
|
|
370
367
|
return layer_ids.some((layer_id) => {
|
|
371
368
|
const t = layer_id === args.layer.id;
|
|
@@ -385,7 +382,7 @@ const Map = (_a) => {
|
|
|
385
382
|
}
|
|
386
383
|
return cursorState.isDragging ? "grabbing" : "default";
|
|
387
384
|
}, [getCursor]);
|
|
388
|
-
const effects =
|
|
385
|
+
const effects = parseLights(lights) ?? [];
|
|
389
386
|
const [deckGlViews, deckGlViewState] = useMemo(() => {
|
|
390
387
|
const state = {
|
|
391
388
|
triggerHome,
|
|
@@ -437,11 +434,11 @@ const Map = (_a) => {
|
|
|
437
434
|
setMultipleWells([]);
|
|
438
435
|
}
|
|
439
436
|
}
|
|
440
|
-
setEditedData
|
|
437
|
+
setEditedData?.(updated_prop);
|
|
441
438
|
},
|
|
442
439
|
colorTables: colorTables,
|
|
443
440
|
}, getCursor: getCursorFunc, getTooltip: getTooltip, ref: deckRef, onViewStateChange: onViewStateChange, onHover: onHover, onClick: onClick, onAfterRender: onAfterRender, effects: effects, onDragStart: onDragStart, onDragEnd: onDragEnd, onDrag: onDrag, onResize: onResize, pickingRadius: pickingRadius }, children),
|
|
444
|
-
|
|
441
|
+
scale?.visible ? (React.createElement(DistanceScale, { ...scale, zoom: lateralZoom, scaleUnit: coordinateUnit, style: scale.cssStyle ?? {} })) : null,
|
|
445
442
|
!onRenderingProgress && loadingProgress < 100 && (React.createElement("div", { style: {
|
|
446
443
|
display: "flex",
|
|
447
444
|
alignItems: "flex-end",
|
|
@@ -508,25 +505,27 @@ export function createLayers(layers, enums = undefined) {
|
|
|
508
505
|
}
|
|
509
506
|
function createConfiguration(enums = undefined) {
|
|
510
507
|
const configuration = new JSONConfiguration(JSON_CONVERTER_CONFIG);
|
|
511
|
-
enums
|
|
508
|
+
enums?.forEach((enumeration) => {
|
|
512
509
|
if (enumeration) {
|
|
513
510
|
configuration.merge({
|
|
514
|
-
enumerations:
|
|
511
|
+
enumerations: {
|
|
512
|
+
...enumeration,
|
|
513
|
+
},
|
|
515
514
|
});
|
|
516
515
|
}
|
|
517
516
|
});
|
|
518
517
|
return configuration;
|
|
519
518
|
}
|
|
520
519
|
function createLayer(layerData, configuration) {
|
|
521
|
-
const
|
|
522
|
-
|
|
523
|
-
const classes =
|
|
524
|
-
if (layerData[typeKey]) {
|
|
520
|
+
const configProps = configuration.getProps();
|
|
521
|
+
const typeKey = configProps.typeKey;
|
|
522
|
+
const classes = configProps.classes;
|
|
523
|
+
if (typeKey && classes && layerData[typeKey]) {
|
|
525
524
|
const type = layerData[typeKey];
|
|
526
525
|
if (type in classes) {
|
|
527
526
|
const Class = classes[type];
|
|
528
527
|
// Prepare a props object
|
|
529
|
-
const props =
|
|
528
|
+
const props = { ...layerData };
|
|
530
529
|
delete props[typeKey];
|
|
531
530
|
return new Class(props);
|
|
532
531
|
}
|
|
@@ -542,40 +541,54 @@ function createLayer(layerData, configuration) {
|
|
|
542
541
|
* to set targets, get views, and handle view state changes.
|
|
543
542
|
*/
|
|
544
543
|
class ViewController {
|
|
544
|
+
/**
|
|
545
|
+
* Function to trigger a re-render.
|
|
546
|
+
*/
|
|
547
|
+
rerender_;
|
|
548
|
+
/**
|
|
549
|
+
* Derived state for interaction readiness and view state changes.
|
|
550
|
+
*/
|
|
551
|
+
derivedState_ = {
|
|
552
|
+
readyForInteraction: false,
|
|
553
|
+
viewStateChanged: false,
|
|
554
|
+
};
|
|
555
|
+
/**
|
|
556
|
+
* Full state including camera settings, bounds, and deck size.
|
|
557
|
+
*/
|
|
558
|
+
state_ = {
|
|
559
|
+
triggerHome: undefined,
|
|
560
|
+
camera: undefined,
|
|
561
|
+
bounds: undefined,
|
|
562
|
+
boundingBox3d: undefined,
|
|
563
|
+
deckSize: { width: 0, height: 0 },
|
|
564
|
+
zScale: 1,
|
|
565
|
+
viewPortMargins: {
|
|
566
|
+
left: 0,
|
|
567
|
+
right: 0,
|
|
568
|
+
top: 0,
|
|
569
|
+
bottom: 0,
|
|
570
|
+
},
|
|
571
|
+
// Derived state
|
|
572
|
+
...this.derivedState_,
|
|
573
|
+
};
|
|
574
|
+
/**
|
|
575
|
+
* The current views being managed.
|
|
576
|
+
*/
|
|
577
|
+
views_ = undefined;
|
|
578
|
+
/**
|
|
579
|
+
* The result object containing views and view states.
|
|
580
|
+
*/
|
|
581
|
+
result_ = {
|
|
582
|
+
views: [],
|
|
583
|
+
deckglViewStates: {},
|
|
584
|
+
viewStates: {},
|
|
585
|
+
};
|
|
545
586
|
/**
|
|
546
587
|
* Constructs a new instance of the Map component.
|
|
547
588
|
*
|
|
548
589
|
* @param rerender - A function to trigger a re-render of the component.
|
|
549
590
|
*/
|
|
550
591
|
constructor(rerender) {
|
|
551
|
-
/**
|
|
552
|
-
* Derived state for interaction readiness and view state changes.
|
|
553
|
-
*/
|
|
554
|
-
this.derivedState_ = {
|
|
555
|
-
readyForInteraction: false,
|
|
556
|
-
viewStateChanged: false,
|
|
557
|
-
};
|
|
558
|
-
/**
|
|
559
|
-
* Full state including camera settings, bounds, and deck size.
|
|
560
|
-
*/
|
|
561
|
-
this.state_ = Object.assign({ triggerHome: undefined, camera: undefined, bounds: undefined, boundingBox3d: undefined, deckSize: { width: 0, height: 0 }, zScale: 1, viewPortMargins: {
|
|
562
|
-
left: 0,
|
|
563
|
-
right: 0,
|
|
564
|
-
top: 0,
|
|
565
|
-
bottom: 0,
|
|
566
|
-
} }, this.derivedState_);
|
|
567
|
-
/**
|
|
568
|
-
* The current views being managed.
|
|
569
|
-
*/
|
|
570
|
-
this.views_ = undefined;
|
|
571
|
-
/**
|
|
572
|
-
* The result object containing views and view states.
|
|
573
|
-
*/
|
|
574
|
-
this.result_ = {
|
|
575
|
-
views: [],
|
|
576
|
-
deckglViewStates: {},
|
|
577
|
-
viewStates: {},
|
|
578
|
-
};
|
|
579
592
|
this.rerender_ = rerender;
|
|
580
593
|
}
|
|
581
594
|
/**
|
|
@@ -627,7 +640,7 @@ class ViewController {
|
|
|
627
640
|
* @returns The consolidated state.
|
|
628
641
|
*/
|
|
629
642
|
consolidateState(state) {
|
|
630
|
-
return
|
|
643
|
+
return { ...state, ...this.derivedState_ };
|
|
631
644
|
}
|
|
632
645
|
/**
|
|
633
646
|
* Returns the DeckGL views (ie. view position and viewport) based on the input views and current state.
|
|
@@ -651,10 +664,9 @@ class ViewController {
|
|
|
651
664
|
* @returns The DeckGL view states and the corresponding view states in user space.
|
|
652
665
|
*/
|
|
653
666
|
getDeckGlAndUserViewStates(views, state) {
|
|
654
|
-
var _a;
|
|
655
667
|
const viewsChanged = views != this.views_;
|
|
656
668
|
const triggerHome = state.triggerHome !== this.state_.triggerHome;
|
|
657
|
-
const updateZScale = viewsChanged || state.zScale !==
|
|
669
|
+
const updateZScale = viewsChanged || state.zScale !== this.state_?.zScale || triggerHome;
|
|
658
670
|
const updateViewState = viewsChanged ||
|
|
659
671
|
triggerHome ||
|
|
660
672
|
state.camera != this.state_.camera ||
|
|
@@ -706,33 +718,52 @@ class ViewController {
|
|
|
706
718
|
* @param getCameraPosition - A function to get the camera position.
|
|
707
719
|
*/
|
|
708
720
|
onViewStateChange(viewId, viewState, getCameraPosition) {
|
|
709
|
-
var _a, _b, _c, _d, _e, _f;
|
|
710
721
|
if (!this.derivedState_.readyForInteraction) {
|
|
711
722
|
// disable interaction if the camera is not defined
|
|
712
723
|
return;
|
|
713
724
|
}
|
|
714
|
-
const viewports =
|
|
715
|
-
if (
|
|
725
|
+
const viewports = this.views_?.viewports ?? [];
|
|
726
|
+
if (viewState.target?.length === 2) {
|
|
716
727
|
// In orthographic mode viewState.target contains only x and y. Add existing z value.
|
|
717
|
-
viewState.target.push(
|
|
728
|
+
viewState.target.push(this.result_.deckglViewStates[viewId].target?.[2] ?? 1);
|
|
718
729
|
}
|
|
719
730
|
const isSyncIds = viewports
|
|
720
731
|
.filter((item) => item.isSync)
|
|
721
732
|
.map((item) => item.id);
|
|
722
|
-
if (isSyncIds
|
|
723
|
-
const syncedViewStates =
|
|
724
|
-
|
|
725
|
-
|
|
733
|
+
if (isSyncIds?.includes(viewId)) {
|
|
734
|
+
const syncedViewStates = this.views_?.viewports
|
|
735
|
+
.filter((item) => item.isSync)
|
|
736
|
+
.map((item) => [item.id, viewState]);
|
|
737
|
+
const tempViewStates = Object.fromEntries(syncedViewStates ?? []);
|
|
738
|
+
this.result_.deckglViewStates = {
|
|
739
|
+
...this.result_.deckglViewStates,
|
|
740
|
+
...tempViewStates,
|
|
741
|
+
};
|
|
726
742
|
// update corresponding view state
|
|
727
743
|
const keys = Object.keys(tempViewStates);
|
|
728
744
|
keys.forEach((key) => {
|
|
729
|
-
this.result_.viewStates =
|
|
745
|
+
this.result_.viewStates = {
|
|
746
|
+
...this.result_.viewStates,
|
|
747
|
+
[key]: {
|
|
748
|
+
...tempViewStates[key],
|
|
749
|
+
target: inversedZScaled(tempViewStates[key].target, this.state_.zScale, this.result_.viewStates[key].target),
|
|
750
|
+
},
|
|
751
|
+
};
|
|
730
752
|
});
|
|
731
753
|
}
|
|
732
754
|
else {
|
|
733
|
-
this.result_.deckglViewStates =
|
|
755
|
+
this.result_.deckglViewStates = {
|
|
756
|
+
...this.result_.deckglViewStates,
|
|
757
|
+
[viewId]: viewState,
|
|
758
|
+
};
|
|
734
759
|
// update corresponding view state
|
|
735
|
-
this.result_.viewStates =
|
|
760
|
+
this.result_.viewStates = {
|
|
761
|
+
...this.result_.viewStates,
|
|
762
|
+
[viewId]: {
|
|
763
|
+
...viewState,
|
|
764
|
+
target: inversedZScaled(viewState.target, this.state_.zScale, this.result_.viewStates[viewId].target),
|
|
765
|
+
},
|
|
766
|
+
};
|
|
736
767
|
}
|
|
737
768
|
if (getCameraPosition) {
|
|
738
769
|
getCameraPosition(this.result_.viewStates[viewId]);
|
|
@@ -810,7 +841,6 @@ function computeCameraZoom(camera, boundingBox, size, fovy = 50) {
|
|
|
810
841
|
///////////////////////////////////////////////////////////////////////////////////////////
|
|
811
842
|
// return viewstate with computed bounds to fit the data in viewport
|
|
812
843
|
function getViewStateFromBounds(viewPortMargins, bounds_accessor, target, views, viewPort, size) {
|
|
813
|
-
var _a, _b;
|
|
814
844
|
const bounds = typeof bounds_accessor == "function"
|
|
815
845
|
? bounds_accessor()
|
|
816
846
|
: bounds_accessor;
|
|
@@ -836,11 +866,11 @@ function getViewStateFromBounds(viewPortMargins, bounds_accessor, target, views,
|
|
|
836
866
|
h = size.height - marginV;
|
|
837
867
|
// Special case if matrix views.
|
|
838
868
|
// Use width and height for a sub-view instead of full viewport.
|
|
839
|
-
if (views
|
|
869
|
+
if (views?.layout) {
|
|
840
870
|
const [nY, nX] = views.layout;
|
|
841
871
|
const isMatrixViews = nX !== 1 || nY !== 1;
|
|
842
872
|
if (isMatrixViews) {
|
|
843
|
-
const mPixels =
|
|
873
|
+
const mPixels = views?.marginPixels ?? 0;
|
|
844
874
|
const w_ = 99.5 / nX; // Using 99.5% of viewport to avoid flickering of deckgl canvas
|
|
845
875
|
const h_ = 99.5 / nY;
|
|
846
876
|
const marginHorPercentage = 100 * 100 * (mPixels / (w_ * size.width)); //percentage of sub view
|
|
@@ -878,7 +908,7 @@ function getViewStateFromBounds(viewPortMargins, bounds_accessor, target, views,
|
|
|
878
908
|
const isLarge = Math.max(bounds[0], bounds[1]) > 99999;
|
|
879
909
|
const max2DZoom = isLarge ? 3 : maxZoom2D;
|
|
880
910
|
const view_state = {
|
|
881
|
-
target:
|
|
911
|
+
target: viewPort.target ?? fb_target,
|
|
882
912
|
zoom: getZoom(viewPort, fb_zoom),
|
|
883
913
|
rotationX: 90, // look down z -axis
|
|
884
914
|
rotationOrbit: 0,
|
|
@@ -909,11 +939,10 @@ function getViewType(viewport) {
|
|
|
909
939
|
return [OrthographicView, OrthographicController];
|
|
910
940
|
}
|
|
911
941
|
function areViewsValid(views, size) {
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
!
|
|
916
|
-
!((_b = views === null || views === void 0 ? void 0 : views.layout) === null || _b === void 0 ? void 0 : _b[1]) ||
|
|
942
|
+
const isInvalid = views?.viewports == undefined ||
|
|
943
|
+
views?.layout == undefined ||
|
|
944
|
+
!views?.layout?.[0] ||
|
|
945
|
+
!views?.layout?.[1] ||
|
|
917
946
|
!size.width ||
|
|
918
947
|
!size.height;
|
|
919
948
|
return !isInvalid;
|
|
@@ -923,9 +952,12 @@ function newView(viewport, x, y, width, height) {
|
|
|
923
952
|
const far = 9999;
|
|
924
953
|
const near = show3D(viewport) ? 0.1 : -1000;
|
|
925
954
|
const [ViewType, Controller] = getViewType(viewport);
|
|
955
|
+
const controllerConfig = Controller === OrbitController
|
|
956
|
+
? defineController(OrbitController, viewport?.controller)
|
|
957
|
+
: defineController(OrthographicController, viewport?.controller);
|
|
926
958
|
return new ViewType({
|
|
927
959
|
id: viewport.id,
|
|
928
|
-
controller:
|
|
960
|
+
controller: controllerConfig,
|
|
929
961
|
x,
|
|
930
962
|
y,
|
|
931
963
|
width,
|
|
@@ -936,7 +968,6 @@ function newView(viewport, x, y, width, height) {
|
|
|
936
968
|
});
|
|
937
969
|
}
|
|
938
970
|
function buildDeckGlViews(views, size) {
|
|
939
|
-
var _a;
|
|
940
971
|
const isOk = areViewsValid(views, size);
|
|
941
972
|
if (!views || !isOk) {
|
|
942
973
|
return [
|
|
@@ -965,7 +996,7 @@ function buildDeckGlViews(views, size) {
|
|
|
965
996
|
const result = [];
|
|
966
997
|
const w = 99.5 / nX; // Using 99.5% of viewport to avoid flickering of deckgl canvas
|
|
967
998
|
const h = 99.5 / nY;
|
|
968
|
-
const marginPixels =
|
|
999
|
+
const marginPixels = views.marginPixels ?? 0;
|
|
969
1000
|
const marginHorPercentage = 100 * 100 * (marginPixels / (w * size.width));
|
|
970
1001
|
const marginVerPercentage = 100 * 100 * (marginPixels / (h * size.height));
|
|
971
1002
|
let yPos = 0;
|
|
@@ -994,7 +1025,7 @@ function buildDeckGlViews(views, size) {
|
|
|
994
1025
|
* @returns true if the camera camera zoom is set.
|
|
995
1026
|
*/
|
|
996
1027
|
function cameraHasZoom(camera) {
|
|
997
|
-
const zoom = camera
|
|
1028
|
+
const zoom = camera?.zoom;
|
|
998
1029
|
const isNumber = typeof zoom === "number" && !Number.isNaN(zoom);
|
|
999
1030
|
const isXy = Array.isArray(zoom) && zoom.length == 2;
|
|
1000
1031
|
return isNumber || isXy;
|
|
@@ -1005,7 +1036,7 @@ function cameraHasZoom(camera) {
|
|
|
1005
1036
|
* @returns true if the camera camera target is set.
|
|
1006
1037
|
*/
|
|
1007
1038
|
function cameraHasTarget(camera) {
|
|
1008
|
-
return (Array.isArray(camera
|
|
1039
|
+
return (Array.isArray(camera?.target) &&
|
|
1009
1040
|
camera.target.length >= 2 &&
|
|
1010
1041
|
camera.target.length <= 3);
|
|
1011
1042
|
}
|
|
@@ -1025,7 +1056,7 @@ function isCameraDefined(camera) {
|
|
|
1025
1056
|
* @returns true if the camera is fully defined.
|
|
1026
1057
|
*/
|
|
1027
1058
|
function cameraDefinesBoundingBox(camera) {
|
|
1028
|
-
return (Array.isArray(camera
|
|
1059
|
+
return (Array.isArray(camera?.zoom) &&
|
|
1029
1060
|
!isEmptyBox3D(camera.zoom));
|
|
1030
1061
|
}
|
|
1031
1062
|
/**
|
|
@@ -1054,7 +1085,7 @@ function canCameraBeDefined(camera, boundingBox, bounds, size) {
|
|
|
1054
1085
|
* @param zScale Z scale.
|
|
1055
1086
|
*/
|
|
1056
1087
|
function applyZScale(target, zScale) {
|
|
1057
|
-
if (
|
|
1088
|
+
if (target?.[2] != undefined) {
|
|
1058
1089
|
target[2] = target[2] * zScale;
|
|
1059
1090
|
}
|
|
1060
1091
|
}
|
|
@@ -1084,7 +1115,7 @@ function zScaledTarget(target, zScale) {
|
|
|
1084
1115
|
* @param zScale Z scale.
|
|
1085
1116
|
*/
|
|
1086
1117
|
function applyInverseZScale(target, zScale) {
|
|
1087
|
-
if (
|
|
1118
|
+
if (target?.[2] != undefined && zScale != 0) {
|
|
1088
1119
|
target[2] = target[2] / zScale;
|
|
1089
1120
|
}
|
|
1090
1121
|
}
|
|
@@ -1107,9 +1138,9 @@ function inversedZScaled(target, zScale, unscaledTarget) {
|
|
|
1107
1138
|
if (zScale != 0) {
|
|
1108
1139
|
return [target[0], target[1], target[2] / zScale];
|
|
1109
1140
|
}
|
|
1110
|
-
if (
|
|
1111
|
-
target[0] ===
|
|
1112
|
-
target[1] ===
|
|
1141
|
+
if (unscaledTarget?.[2] != undefined &&
|
|
1142
|
+
target[0] === unscaledTarget?.[0] &&
|
|
1143
|
+
target[1] === unscaledTarget?.[1]) {
|
|
1113
1144
|
return [
|
|
1114
1145
|
target[0],
|
|
1115
1146
|
target[1],
|
|
@@ -1126,7 +1157,6 @@ function inversedZScaled(target, zScale, unscaledTarget) {
|
|
|
1126
1157
|
* @param size widget size in pixels.
|
|
1127
1158
|
*/
|
|
1128
1159
|
function updateViewState(camera, boundingBox, size, is3D = true) {
|
|
1129
|
-
var _a, _b;
|
|
1130
1160
|
if (isCameraDefined(camera)) {
|
|
1131
1161
|
return camera;
|
|
1132
1162
|
}
|
|
@@ -1146,8 +1176,8 @@ function updateViewState(camera, boundingBox, size, is3D = true) {
|
|
|
1146
1176
|
if (!cameraHasTarget(camera)) {
|
|
1147
1177
|
camera.target = boxCenter(boundingBox);
|
|
1148
1178
|
}
|
|
1149
|
-
camera.minZoom =
|
|
1150
|
-
camera.maxZoom =
|
|
1179
|
+
camera.minZoom = camera.minZoom ?? minZoom3D;
|
|
1180
|
+
camera.maxZoom = camera.maxZoom ?? maxZoom3D;
|
|
1151
1181
|
return camera;
|
|
1152
1182
|
}
|
|
1153
1183
|
/**
|
|
@@ -1236,9 +1266,11 @@ function buildViewStates(views, viewPortMargins, scaledCamera, boundingBox, boun
|
|
|
1236
1266
|
const currentViewport = views.viewports[resultLength];
|
|
1237
1267
|
const currentViewState = computeViewState(currentViewport, scaledCamera, boundingBox, bounds, viewPortMargins, views, size);
|
|
1238
1268
|
if (currentViewState) {
|
|
1239
|
-
result =
|
|
1269
|
+
result = {
|
|
1270
|
+
...result,
|
|
1240
1271
|
// Each viewport should have distinct state objects, so we clone to avoid any shared object references
|
|
1241
|
-
[currentViewport.id]: cloneDeep(currentViewState)
|
|
1272
|
+
[currentViewport.id]: cloneDeep(currentViewState),
|
|
1273
|
+
};
|
|
1242
1274
|
}
|
|
1243
1275
|
}
|
|
1244
1276
|
}
|
|
@@ -1263,7 +1295,6 @@ function buildScaledViewStates(viewStates, zScale) {
|
|
|
1263
1295
|
return result;
|
|
1264
1296
|
}
|
|
1265
1297
|
function handleMouseEvent(type, infos, event) {
|
|
1266
|
-
var _a;
|
|
1267
1298
|
const ev = {
|
|
1268
1299
|
type: type,
|
|
1269
1300
|
infos: infos,
|
|
@@ -1282,7 +1313,7 @@ function handleMouseEvent(type, infos, event) {
|
|
|
1282
1313
|
{
|
|
1283
1314
|
// try to use Object info (see DeckGL getToolTip callback)
|
|
1284
1315
|
const feat = info.object;
|
|
1285
|
-
const properties = feat
|
|
1316
|
+
const properties = feat?.properties;
|
|
1286
1317
|
if (properties) {
|
|
1287
1318
|
ev.wellname = properties["name"];
|
|
1288
1319
|
ev.wellcolor = properties["color"];
|
|
@@ -1290,7 +1321,7 @@ function handleMouseEvent(type, infos, event) {
|
|
|
1290
1321
|
}
|
|
1291
1322
|
if (!ev.wellname)
|
|
1292
1323
|
if (info.object) {
|
|
1293
|
-
ev.wellname =
|
|
1324
|
+
ev.wellname = info.object.header?.["well"]; // object is WellLog
|
|
1294
1325
|
}
|
|
1295
1326
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1296
1327
|
if (info.properties) {
|