@webviz/subsurface-viewer 1.15.12 → 1.16.0
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/layers/utils/layerTools.d.ts +9 -4
- package/dist/layers/utils/layerTools.js +11 -0
- package/dist/layers/utils/layerTools.js.map +1 -1
- package/dist/layers/wells/layers/dashedSectionsPathLayer.d.ts +3990 -0
- package/dist/layers/wells/layers/dashedSectionsPathLayer.js +248 -0
- package/dist/layers/wells/layers/dashedSectionsPathLayer.js.map +1 -0
- package/dist/layers/wells/layers/flatWellMarkersLayer.d.ts +68 -0
- package/dist/layers/wells/layers/flatWellMarkersLayer.js +223 -0
- package/dist/layers/wells/layers/flatWellMarkersLayer.js.map +1 -0
- package/dist/layers/wells/layers/wellLabelLayer.js +4 -5
- package/dist/layers/wells/layers/wellLabelLayer.js.map +1 -1
- package/dist/layers/wells/types.d.ts +26 -0
- package/dist/layers/wells/utils/markers.d.ts +13 -0
- package/dist/layers/wells/utils/markers.js +73 -0
- package/dist/layers/wells/utils/markers.js.map +1 -0
- package/dist/layers/wells/utils/readout.d.ts +16 -0
- package/dist/layers/wells/utils/readout.js +33 -0
- package/dist/layers/wells/utils/readout.js.map +1 -0
- package/dist/layers/wells/utils/trajectory.d.ts +41 -2
- package/dist/layers/wells/utils/trajectory.js +173 -4
- package/dist/layers/wells/utils/trajectory.js.map +1 -1
- package/dist/layers/wells/wellsLayer.d.ts +55 -4
- package/dist/layers/wells/wellsLayer.js +325 -30
- package/dist/layers/wells/wellsLayer.js.map +1 -1
- package/dist/utils/Color.d.ts +7 -0
- package/dist/utils/Color.js +20 -0
- package/dist/utils/Color.js.map +1 -1
- package/dist/utils/measurement.d.ts +8 -0
- package/dist/utils/measurement.js +10 -0
- package/dist/utils/measurement.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { CompositeLayer } from "@deck.gl/core";
|
|
2
|
+
import { DataFilterExtension, PathStyleExtension } from "@deck.gl/extensions";
|
|
3
|
+
import { PathLayer } from "@deck.gl/layers";
|
|
4
|
+
import _ from "lodash";
|
|
5
|
+
import { isClose } from "../../../utils/measurement";
|
|
6
|
+
import { getFromAccessor, hasUpdateTriggerChanged, } from "../../utils/layerTools";
|
|
7
|
+
import { getCumulativeDistance, getFractionPositionSegmentIndices, interpolateDataOnTrajectory, } from "../utils/trajectory";
|
|
8
|
+
export var SubLayerId;
|
|
9
|
+
(function (SubLayerId) {
|
|
10
|
+
SubLayerId["DASHED_PATH"] = "dashed-paths";
|
|
11
|
+
SubLayerId["SOLID_PATH"] = "solid-paths";
|
|
12
|
+
})(SubLayerId || (SubLayerId = {}));
|
|
13
|
+
export class DashedSectionsPathLayer extends CompositeLayer {
|
|
14
|
+
updateState({ changeFlags }) {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f;
|
|
16
|
+
if (!this.isLoaded)
|
|
17
|
+
return;
|
|
18
|
+
const data = this.props.data;
|
|
19
|
+
const { getDashedSectionsAlongPath, getCumulativePathDistance, getPath, } = this.props;
|
|
20
|
+
if (!Array.isArray(data))
|
|
21
|
+
throw new Error(`Expected loaded data to be a list, instead got ${typeof data}`);
|
|
22
|
+
const dataChanged = changeFlags.dataChanged;
|
|
23
|
+
const pathChanged = hasUpdateTriggerChanged(changeFlags, "getPath");
|
|
24
|
+
const cumulativePathDistanceChanged = hasUpdateTriggerChanged(changeFlags, "getCumulativePathDistance");
|
|
25
|
+
const sectionsChanged = hasUpdateTriggerChanged(changeFlags, "getDashedSectionsAlongPath");
|
|
26
|
+
const filterValueChanged = hasUpdateTriggerChanged(changeFlags, "getFilterValue");
|
|
27
|
+
if (dataChanged ||
|
|
28
|
+
pathChanged ||
|
|
29
|
+
cumulativePathDistanceChanged ||
|
|
30
|
+
filterValueChanged ||
|
|
31
|
+
sectionsChanged) {
|
|
32
|
+
// Each path will need to be split into two data sets based on whether the section is dashed or not.
|
|
33
|
+
const dashedPathSubLayerData = [];
|
|
34
|
+
const normalPathSubLayerData = [];
|
|
35
|
+
const pathCache = (_a = this.state.pathCache) !== null && _a !== void 0 ? _a : new Map();
|
|
36
|
+
const cumulativePathDistanceCache = (_b = this.state.cumulativePathDistanceCache) !== null && _b !== void 0 ? _b : new Map();
|
|
37
|
+
const sectionsCache = (_c = this.state.sectionsCache) !== null && _c !== void 0 ? _c : new Map();
|
|
38
|
+
for (let index = 0; index < data.length; index++) {
|
|
39
|
+
const datum = data[index];
|
|
40
|
+
const itemContext = { data, index, target: [] };
|
|
41
|
+
// Only recompute from accessors if relevant changeflags (or data) has changed since last time
|
|
42
|
+
if (pathChanged || dataChanged) {
|
|
43
|
+
pathCache.set(index, getFromAccessor(getPath, datum, itemContext));
|
|
44
|
+
}
|
|
45
|
+
if (cumulativePathDistanceChanged || dataChanged) {
|
|
46
|
+
let cumulativeDistance = getFromAccessor(getCumulativePathDistance, datum, itemContext);
|
|
47
|
+
if (!cumulativeDistance) {
|
|
48
|
+
cumulativeDistance = getCumulativeDistance(pathCache.get(index));
|
|
49
|
+
}
|
|
50
|
+
cumulativePathDistanceCache.set(index, cumulativeDistance);
|
|
51
|
+
}
|
|
52
|
+
if (sectionsChanged || dataChanged) {
|
|
53
|
+
const sections = (_d = getFromAccessor(getDashedSectionsAlongPath, datum, itemContext)) !== null && _d !== void 0 ? _d : [];
|
|
54
|
+
const chunkedSections = typeof sections[0] === "number"
|
|
55
|
+
? _.chunk(sections, 2)
|
|
56
|
+
: sections;
|
|
57
|
+
sectionsCache.set(index, chunkedSections);
|
|
58
|
+
}
|
|
59
|
+
const path = pathCache.get(index);
|
|
60
|
+
const sections = sectionsCache.get(index);
|
|
61
|
+
const cumulativePathDistance = cumulativePathDistanceCache.get(index);
|
|
62
|
+
let prevSectionEnd = 0;
|
|
63
|
+
// If a data-filter extension is present, we might need to split the filter value array along the path.
|
|
64
|
+
let filterValue;
|
|
65
|
+
const { filterEnabled, getFilterValue } = this
|
|
66
|
+
.props;
|
|
67
|
+
const hasFilterExtension = (_e = this.props.extensions) === null || _e === void 0 ? void 0 : _e.some((e) => e instanceof DataFilterExtension);
|
|
68
|
+
if (hasFilterExtension && filterEnabled && getFilterValue) {
|
|
69
|
+
filterValue = getFromAccessor(getFilterValue, datum, itemContext);
|
|
70
|
+
}
|
|
71
|
+
// ! We assume sections are sorted
|
|
72
|
+
for (const section of sections) {
|
|
73
|
+
const dashedSectionStart = section[0];
|
|
74
|
+
const dashedSectionEnd = (_f = section[1]) !== null && _f !== void 0 ? _f : 1;
|
|
75
|
+
// There's a gap between these dashed segments, so we add a normal path
|
|
76
|
+
if (dashedSectionStart > prevSectionEnd) {
|
|
77
|
+
const normalSection = {
|
|
78
|
+
id: `path-${index}-normal-section-${normalPathSubLayerData.length}`,
|
|
79
|
+
pathType: "normal",
|
|
80
|
+
properties: {
|
|
81
|
+
filterValue: getSectionFilterValue(filterValue, cumulativePathDistance, prevSectionEnd, dashedSectionStart),
|
|
82
|
+
},
|
|
83
|
+
path: getSectionPathPositions(path, cumulativePathDistance, prevSectionEnd, dashedSectionStart),
|
|
84
|
+
};
|
|
85
|
+
normalPathSubLayerData.push(this.getSubLayerRow(normalSection, datum, index));
|
|
86
|
+
}
|
|
87
|
+
const dashedSection = {
|
|
88
|
+
id: `path-${index}-dashed-section-${normalPathSubLayerData.length}`,
|
|
89
|
+
pathType: "dashed",
|
|
90
|
+
properties: {
|
|
91
|
+
filterValue: getSectionFilterValue(filterValue, cumulativePathDistance, dashedSectionStart, dashedSectionEnd),
|
|
92
|
+
},
|
|
93
|
+
path: getSectionPathPositions(path, cumulativePathDistance, dashedSectionStart, dashedSectionEnd),
|
|
94
|
+
};
|
|
95
|
+
dashedPathSubLayerData.push(this.getSubLayerRow(dashedSection, datum, index));
|
|
96
|
+
prevSectionEnd = dashedSectionEnd;
|
|
97
|
+
}
|
|
98
|
+
if (prevSectionEnd < 1) {
|
|
99
|
+
const normalSection = {
|
|
100
|
+
id: `path-${index}-normal-section-${normalPathSubLayerData.length}`,
|
|
101
|
+
pathType: "normal",
|
|
102
|
+
properties: {
|
|
103
|
+
filterValue: getSectionFilterValue(filterValue, cumulativePathDistance, prevSectionEnd, 1),
|
|
104
|
+
},
|
|
105
|
+
path: getSectionPathPositions(path, cumulativePathDistance, prevSectionEnd, 1),
|
|
106
|
+
};
|
|
107
|
+
normalPathSubLayerData.push(this.getSubLayerRow(normalSection, datum, index));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
this.setState({
|
|
111
|
+
dashedPathSubLayerData,
|
|
112
|
+
normalPathSubLayerData,
|
|
113
|
+
pathCache,
|
|
114
|
+
sectionsCache,
|
|
115
|
+
cumulativePathDistanceCache,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
getSubLayerId(sublayerId) {
|
|
120
|
+
return this.getSubLayerProps({ id: sublayerId }).id;
|
|
121
|
+
}
|
|
122
|
+
getPickingInfo(params) {
|
|
123
|
+
const sourceInfo = super.getPickingInfo(params);
|
|
124
|
+
if (!sourceInfo.coordinate || !sourceInfo.object)
|
|
125
|
+
return sourceInfo;
|
|
126
|
+
if (sourceInfo.coordinate.length === 3 &&
|
|
127
|
+
this.props.positionFormat === "XY") {
|
|
128
|
+
// Occasionally some other picking logic (f.ex. the re-triggered picking from the Map wrapper) will fire this with a 3D coordinate, regardless of position-format. To avoid picking the wrong segment, we discard the z-coord
|
|
129
|
+
sourceInfo.coordinate = sourceInfo.coordinate.slice(0, 2);
|
|
130
|
+
}
|
|
131
|
+
const coordinate = sourceInfo.coordinate;
|
|
132
|
+
const zScale = this.props.modelMatrix ? this.props.modelMatrix[10] : 1;
|
|
133
|
+
if (coordinate[2] !== undefined) {
|
|
134
|
+
coordinate[2] /= Math.max(0.001, zScale);
|
|
135
|
+
}
|
|
136
|
+
let path = this.state.pathCache.get(sourceInfo.index);
|
|
137
|
+
const sections = this.state.sectionsCache.get(sourceInfo.index);
|
|
138
|
+
const cumulativePathDistance = this.state.cumulativePathDistanceCache.get(sourceInfo.index);
|
|
139
|
+
if (!path || !cumulativePathDistance || !sections) {
|
|
140
|
+
throw new Error("Expected cached accessor values for hovered object");
|
|
141
|
+
}
|
|
142
|
+
if (sourceInfo.coordinate.length === 2) {
|
|
143
|
+
path = path.map((v) => v.slice(0, 2));
|
|
144
|
+
}
|
|
145
|
+
const hoveredDistance = interpolateDataOnTrajectory(sourceInfo.coordinate, cumulativePathDistance, path);
|
|
146
|
+
if (hoveredDistance == null)
|
|
147
|
+
return sourceInfo;
|
|
148
|
+
const hoveredPositionAlong = hoveredDistance / cumulativePathDistance.at(-1);
|
|
149
|
+
// ? Possibly allow more nuanced info here?
|
|
150
|
+
const hoveredSectionIndex = sections.findIndex(([from, to]) => from <= hoveredPositionAlong && to >= hoveredPositionAlong);
|
|
151
|
+
return Object.assign(Object.assign({}, sourceInfo), { dashedSectionIndex: hoveredSectionIndex, positionAlong: hoveredDistance });
|
|
152
|
+
}
|
|
153
|
+
renderLayers() {
|
|
154
|
+
const otherProps = _.omit(this.props, "getPath");
|
|
155
|
+
return [
|
|
156
|
+
new PathLayer(Object.assign(Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, otherProps), { id: SubLayerId.DASHED_PATH, data: this.state.dashedPathSubLayerData, getColor: this.getSubLayerAccessor(this.props.getColor), extensions: [
|
|
157
|
+
...this.props.extensions.filter((f) => !(f instanceof PathStyleExtension)),
|
|
158
|
+
new PathStyleExtension({
|
|
159
|
+
dash: true,
|
|
160
|
+
highPrecisionDash: true,
|
|
161
|
+
}),
|
|
162
|
+
], updateTriggers: {
|
|
163
|
+
getFilterValue: this.props.updateTriggers["getFilterValue"],
|
|
164
|
+
} }))), {
|
|
165
|
+
// ! These props gets overriden if included inside getSubLayerProps
|
|
166
|
+
getDashArray: this.props.getSectionDashArray, dashGapPickable: true, getFilterValue: (d) => { var _a; return (_a = d.properties) === null || _a === void 0 ? void 0 : _a["filterValue"]; } })),
|
|
167
|
+
new PathLayer(Object.assign(Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, otherProps), { id: SubLayerId.SOLID_PATH, data: this.state.normalPathSubLayerData, getColor: this.getSubLayerAccessor(this.props.getColor), parameters: this.props.parameters, updateTriggers: {
|
|
168
|
+
getFilterValue: this.props.updateTriggers["getFilterValue"],
|
|
169
|
+
} }))), { getFilterValue: (d) => { var _a; return (_a = d.properties) === null || _a === void 0 ? void 0 : _a["filterValue"]; } })),
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
DashedSectionsPathLayer.layerName = "DashedSectionsPathLayer";
|
|
174
|
+
DashedSectionsPathLayer.defaultProps = Object.assign(Object.assign({}, PathLayer.defaultProps), { getSectionDashArray: { type: "accessor", value: [5, 5] }, getDashedSectionsAlongPath: {
|
|
175
|
+
type: "accessor",
|
|
176
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
177
|
+
value: (object) => object.dashSectionsAlongPath,
|
|
178
|
+
}, getCumulativePathDistance: {
|
|
179
|
+
type: "accessor",
|
|
180
|
+
// If not provided, we manually compute it from the path
|
|
181
|
+
value: undefined,
|
|
182
|
+
} });
|
|
183
|
+
function getSectionFilterValue(filterValue, cumulativePathDistance, startFraction, endFraction) {
|
|
184
|
+
if (!Array.isArray(filterValue))
|
|
185
|
+
return filterValue;
|
|
186
|
+
if (startFraction === 0 && endFraction === 1)
|
|
187
|
+
return [...filterValue];
|
|
188
|
+
if (filterValue.length !== cumulativePathDistance.length) {
|
|
189
|
+
throw new Error("Expected filter value array to be same length as path computation array");
|
|
190
|
+
}
|
|
191
|
+
const { sliceStart, sliceEnd, startSegment, endSegment } = computeSliceIndices(filterValue, cumulativePathDistance, startFraction, endFraction);
|
|
192
|
+
const startFilterValue = startSegment[0];
|
|
193
|
+
const endFilterValue = endSegment[1];
|
|
194
|
+
// Build a segment of positions
|
|
195
|
+
const segment = [
|
|
196
|
+
startFilterValue,
|
|
197
|
+
...filterValue.slice(sliceStart, sliceEnd),
|
|
198
|
+
endFilterValue,
|
|
199
|
+
];
|
|
200
|
+
return segment;
|
|
201
|
+
}
|
|
202
|
+
function getSectionPathPositions(path, cumulativePathDistance, startFraction, endFraction) {
|
|
203
|
+
if (startFraction === 0 && endFraction === 1)
|
|
204
|
+
return [...path];
|
|
205
|
+
if (path.length === 0)
|
|
206
|
+
return [];
|
|
207
|
+
if (cumulativePathDistance.length !== path.length) {
|
|
208
|
+
throw new Error("Expected path measurements array to be same length as path array");
|
|
209
|
+
}
|
|
210
|
+
const { sliceStart, sliceEnd, startSegment, endSegment } = computeSliceIndices(path, cumulativePathDistance, startFraction, endFraction);
|
|
211
|
+
const startPosition = _.zipWith(startSegment[0], startSegment[1], (pl, pu) => {
|
|
212
|
+
return pl + startSegment[2] * (pu - pl);
|
|
213
|
+
});
|
|
214
|
+
const endPosition = _.zipWith(endSegment[0], endSegment[1], (pl, pu) => {
|
|
215
|
+
return pl + endSegment[2] * (pu - pl);
|
|
216
|
+
});
|
|
217
|
+
// Build a segment of positions
|
|
218
|
+
const segment = [
|
|
219
|
+
startPosition,
|
|
220
|
+
...path.slice(sliceStart, sliceEnd),
|
|
221
|
+
endPosition,
|
|
222
|
+
];
|
|
223
|
+
return segment;
|
|
224
|
+
}
|
|
225
|
+
function computeSliceIndices(dataArr, cumulativePathDistance, startFraction, endFraction) {
|
|
226
|
+
if (cumulativePathDistance.length !== dataArr.length) {
|
|
227
|
+
throw new Error("Expected distance and data array to be same length as path array");
|
|
228
|
+
}
|
|
229
|
+
const [lowerIndexStart, upperIndexStart, sectionFractionStart] = getFractionPositionSegmentIndices(startFraction, dataArr, cumulativePathDistance);
|
|
230
|
+
const [lowerIndexEnd, upperIndexEnd, sectionFractionEnd] = getFractionPositionSegmentIndices(endFraction, dataArr, cumulativePathDistance);
|
|
231
|
+
const sliceStartOffset = isClose(sectionFractionStart, 1) ? 1 : 0;
|
|
232
|
+
const sliceEndOffset = isClose(sectionFractionEnd, 0) ? 2 : 1;
|
|
233
|
+
return {
|
|
234
|
+
startSegment: [
|
|
235
|
+
dataArr[lowerIndexStart],
|
|
236
|
+
dataArr[upperIndexStart],
|
|
237
|
+
sectionFractionStart,
|
|
238
|
+
],
|
|
239
|
+
endSegment: [
|
|
240
|
+
dataArr[lowerIndexEnd],
|
|
241
|
+
dataArr[upperIndexEnd],
|
|
242
|
+
sectionFractionEnd,
|
|
243
|
+
],
|
|
244
|
+
sliceStart: upperIndexStart + sliceStartOffset,
|
|
245
|
+
sliceEnd: lowerIndexEnd + sliceEndOffset,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=dashedSectionsPathLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashedSectionsPathLayer.js","sourceRoot":"","sources":["../../../../src/layers/wells/layers/dashedSectionsPathLayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { Accessor, Color, FilterContext, GetPickingInfoParams, Layer, LayerDataSource, LayersList, PickingInfo, UpdateParameters } from "@deck.gl/core";
|
|
2
|
+
import { CompositeLayer } from "@deck.gl/core";
|
|
3
|
+
import type { GeoJsonLayerProps } from "@deck.gl/layers";
|
|
4
|
+
import type { Position } from "geojson";
|
|
5
|
+
import type { LayerPickInfo } from "../../utils/layerTools";
|
|
6
|
+
import type { MarkerType } from "../utils/markers";
|
|
7
|
+
export declare enum SubLayerId {
|
|
8
|
+
MARKERS_2D = "markers-2d",
|
|
9
|
+
MARKERS_2D_OUTLINE = "markers-2d--outline",
|
|
10
|
+
MARKERS_2D_PICKING = "markers-2d--picking"
|
|
11
|
+
}
|
|
12
|
+
/** A marker that exists somewhere along a trajectory path */
|
|
13
|
+
export type WellMarker = {
|
|
14
|
+
type: MarkerType;
|
|
15
|
+
positionAlongPath: number;
|
|
16
|
+
properties?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
export type MarkerData<TData = unknown> = {
|
|
19
|
+
type: MarkerType;
|
|
20
|
+
position: Position;
|
|
21
|
+
angle: number;
|
|
22
|
+
positionAlongPath: number;
|
|
23
|
+
properties?: Record<string, unknown>;
|
|
24
|
+
sourceObject: TData;
|
|
25
|
+
sourceIndex: number;
|
|
26
|
+
markerIndex: number;
|
|
27
|
+
};
|
|
28
|
+
export type FlatWellMarkersLayerProps<TData> = {
|
|
29
|
+
data: LayerDataSource<TData>;
|
|
30
|
+
outline: boolean;
|
|
31
|
+
getTrajectoryPath: Accessor<TData, Position[]>;
|
|
32
|
+
getCumulativePathDistance?: Accessor<TData, number[]>;
|
|
33
|
+
getMarkers: Accessor<TData, WellMarker[]>;
|
|
34
|
+
getMarkerColor?: Accessor<MarkerData<TData>, Color>;
|
|
35
|
+
};
|
|
36
|
+
type InheritedGeoJsonProps = Omit<GeoJsonLayerProps, "data" | "getFillColor">;
|
|
37
|
+
/**
|
|
38
|
+
* Wells sub-layer for displaying assorted markers along the trajectory of a well. The layer
|
|
39
|
+
* is * primarily designed to be used in 2D views, so the markers are built by simple flat
|
|
40
|
+
* lines, and are aligned along the XY path of the trajectories. For 3D markers, see the
|
|
41
|
+
* `WellMarkersLayer` class
|
|
42
|
+
*/
|
|
43
|
+
export declare class FlatWellMarkersLayer<TData = unknown> extends CompositeLayer<FlatWellMarkersLayerProps<TData> & InheritedGeoJsonProps> {
|
|
44
|
+
static readonly layerName = "FlatWellMarkersLayer";
|
|
45
|
+
static readonly defaultProps: {
|
|
46
|
+
getMarkers: {
|
|
47
|
+
type: string;
|
|
48
|
+
value: never[];
|
|
49
|
+
};
|
|
50
|
+
getMarkerColor: undefined;
|
|
51
|
+
getCumulativePathDistance: undefined;
|
|
52
|
+
};
|
|
53
|
+
state: {
|
|
54
|
+
markers: MarkerData<TData>[];
|
|
55
|
+
highlightedSourceIndex: number;
|
|
56
|
+
hoveredMarkerIndex: number;
|
|
57
|
+
cumulativePathDistanceCache: Map<number, number[]>;
|
|
58
|
+
};
|
|
59
|
+
constructor(...args: any[]);
|
|
60
|
+
updateState({ changeFlags, props, oldProps, }: UpdateParameters<this>): void;
|
|
61
|
+
filterSubLayer(context: FilterContext): boolean;
|
|
62
|
+
getPickingInfo({ info }: GetPickingInfoParams): LayerPickInfo<TData>;
|
|
63
|
+
updateAutoHighlight(info: PickingInfo): void;
|
|
64
|
+
protected getSubLayerAccessor<In, Out, TAccessor = Accessor<In, Out>>(accessor: TAccessor): TAccessor;
|
|
65
|
+
private getMarkerColor;
|
|
66
|
+
renderLayers(): Layer | null | LayersList;
|
|
67
|
+
}
|
|
68
|
+
export {};
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { CompositeLayer } from "@deck.gl/core";
|
|
2
|
+
import { DataFilterExtension } from "@deck.gl/extensions";
|
|
3
|
+
import { PathLayer, PolygonLayer } from "@deck.gl/layers";
|
|
4
|
+
import { GL } from "@luma.gl/constants";
|
|
5
|
+
import _ from "lodash";
|
|
6
|
+
import { blendColors } from "../../../utils/Color";
|
|
7
|
+
import { getFromAccessor, hasUpdateTriggerChanged, } from "../../utils/layerTools";
|
|
8
|
+
import { getSize, LINE } from "../utils/features";
|
|
9
|
+
import { buildMarkerPath2D } from "../utils/markers";
|
|
10
|
+
import { getCumulativeDistance, getFractionPositionSegmentIndices, getPositionAndAngleOnTrajectoryPath, } from "../utils/trajectory";
|
|
11
|
+
export var SubLayerId;
|
|
12
|
+
(function (SubLayerId) {
|
|
13
|
+
SubLayerId["MARKERS_2D"] = "markers-2d";
|
|
14
|
+
SubLayerId["MARKERS_2D_OUTLINE"] = "markers-2d--outline";
|
|
15
|
+
SubLayerId["MARKERS_2D_PICKING"] = "markers-2d--picking";
|
|
16
|
+
})(SubLayerId || (SubLayerId = {}));
|
|
17
|
+
/**
|
|
18
|
+
* Wells sub-layer for displaying assorted markers along the trajectory of a well. The layer
|
|
19
|
+
* is * primarily designed to be used in 2D views, so the markers are built by simple flat
|
|
20
|
+
* lines, and are aligned along the XY path of the trajectories. For 3D markers, see the
|
|
21
|
+
* `WellMarkersLayer` class
|
|
22
|
+
*/
|
|
23
|
+
export class FlatWellMarkersLayer extends CompositeLayer {
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
25
|
+
constructor(...args) {
|
|
26
|
+
super(...args);
|
|
27
|
+
this.getMarkerColor = this.getMarkerColor.bind(this);
|
|
28
|
+
}
|
|
29
|
+
updateState({ changeFlags, props, oldProps, }) {
|
|
30
|
+
var _a, _b;
|
|
31
|
+
if (!this.isLoaded)
|
|
32
|
+
return;
|
|
33
|
+
const data = this.props.data;
|
|
34
|
+
if (props.highlightedObjectIndex !== oldProps.highlightedObjectIndex) {
|
|
35
|
+
this.setState({
|
|
36
|
+
highlightedSourceIndex: props.highlightedObjectIndex,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const markersUpdate = hasUpdateTriggerChanged(changeFlags, "getMarkers");
|
|
40
|
+
const trajectoryUpdate = hasUpdateTriggerChanged(changeFlags, "getTrajectoryPath");
|
|
41
|
+
const cumulativeDistanceUpdate = hasUpdateTriggerChanged(changeFlags, "getCumulativePathDistance");
|
|
42
|
+
if (!changeFlags.dataChanged &&
|
|
43
|
+
!markersUpdate &&
|
|
44
|
+
!trajectoryUpdate &&
|
|
45
|
+
!cumulativeDistanceUpdate)
|
|
46
|
+
return;
|
|
47
|
+
if (!this.props.getTrajectoryPath)
|
|
48
|
+
return;
|
|
49
|
+
if (!Array.isArray(data))
|
|
50
|
+
throw new Error(`Expected data to be a list, instead got ${typeof data}`);
|
|
51
|
+
const cumulativePathDistanceCache = (_a = this.state.cumulativePathDistanceCache) !== null && _a !== void 0 ? _a : new Map();
|
|
52
|
+
const markers = [];
|
|
53
|
+
let markerDataOffset = 0;
|
|
54
|
+
for (let index = 0; index < data.length; index++) {
|
|
55
|
+
const itemContext = { data, index, target: [] };
|
|
56
|
+
const datum = data[index];
|
|
57
|
+
const trajectoryPath = getFromAccessor(this.props.getTrajectoryPath, datum, itemContext);
|
|
58
|
+
if (cumulativeDistanceUpdate || changeFlags.dataChanged) {
|
|
59
|
+
const cumulativeDistance = (_b = getFromAccessor(props.getCumulativePathDistance, datum, itemContext
|
|
60
|
+
// The typing is a little misleading here; the *default* accessor could
|
|
61
|
+
// potentially return undefined, so we need to include a fallback here
|
|
62
|
+
)) !== null && _b !== void 0 ? _b : getCumulativeDistance(trajectoryPath);
|
|
63
|
+
cumulativePathDistanceCache.set(index, cumulativeDistance);
|
|
64
|
+
}
|
|
65
|
+
const cumulativePathDistance = cumulativePathDistanceCache.get(index);
|
|
66
|
+
const trajectoryMarkers = getFromAccessor(this.props.getMarkers, datum, itemContext);
|
|
67
|
+
for (let markerIndex = 0; markerIndex < trajectoryMarkers.length; markerIndex++) {
|
|
68
|
+
const { type, positionAlongPath, properties } = trajectoryMarkers[markerIndex];
|
|
69
|
+
const posFragment = _.clamp(positionAlongPath, 0, 1);
|
|
70
|
+
const [angle, worldPosition] = getPositionAndAngleOnTrajectoryPath(posFragment, trajectoryPath, cumulativePathDistance,
|
|
71
|
+
// We'll disregard 3D positioning here; the markers look nicer when they're "flat"
|
|
72
|
+
undefined, false);
|
|
73
|
+
const markerData = {
|
|
74
|
+
type: type,
|
|
75
|
+
position: worldPosition,
|
|
76
|
+
angle: angle,
|
|
77
|
+
positionAlongPath: posFragment,
|
|
78
|
+
properties: properties,
|
|
79
|
+
// Link source data
|
|
80
|
+
sourceObject: datum,
|
|
81
|
+
sourceIndex: index,
|
|
82
|
+
markerIndex: markerIndex + markerDataOffset,
|
|
83
|
+
};
|
|
84
|
+
markers.push(markerData);
|
|
85
|
+
// ! We want to show perforations as a spike on both sides of the line. Since they will rendered as disconnected lines, we need to inject a second, rotated row for it
|
|
86
|
+
if (type === "perforation") {
|
|
87
|
+
const markerData2 = Object.assign(Object.assign({}, markerData), { angle: angle + Math.PI });
|
|
88
|
+
markers.push(markerData2);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
markerDataOffset += trajectoryMarkers.length;
|
|
92
|
+
}
|
|
93
|
+
this.setState({ markers, cumulativePathDistanceCache });
|
|
94
|
+
}
|
|
95
|
+
filterSubLayer(context) {
|
|
96
|
+
if (context.layer.id ===
|
|
97
|
+
this.getSubLayerProps({ id: SubLayerId.MARKERS_2D_PICKING }).id) {
|
|
98
|
+
return context.isPicking;
|
|
99
|
+
}
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
getPickingInfo({ info }) {
|
|
103
|
+
var _a, _b;
|
|
104
|
+
const hoveredIndex = (_b = (_a = info.object) === null || _a === void 0 ? void 0 : _a.markerIndex) !== null && _b !== void 0 ? _b : -1;
|
|
105
|
+
this.setState({ hoveredMarkerIndex: hoveredIndex });
|
|
106
|
+
return info;
|
|
107
|
+
}
|
|
108
|
+
updateAutoHighlight(info) {
|
|
109
|
+
if (info.sourceLayer !== this && this.props.autoHighlight) {
|
|
110
|
+
// Assume this is from the source
|
|
111
|
+
this.setState({ highlightedSourceIndex: info.index });
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// We've done our own style of binding, so we override the base one to reflect that.
|
|
115
|
+
getSubLayerAccessor(accessor) {
|
|
116
|
+
if (typeof accessor === "function") {
|
|
117
|
+
const objectInfo = {
|
|
118
|
+
index: -1,
|
|
119
|
+
// @ts-expect-error (TS2322) -- Accessing resolved data
|
|
120
|
+
data: this.props.data,
|
|
121
|
+
target: [],
|
|
122
|
+
};
|
|
123
|
+
// @ts-expect-error (TS2416) -- deck.gl types these with In as the source data, which is technically wrong, so we ignore this error
|
|
124
|
+
return (x) => {
|
|
125
|
+
objectInfo.index = x.sourceIndex;
|
|
126
|
+
// @ts-expect-error (TS2349) -- Out is never a function
|
|
127
|
+
return accessor(x.sourceObject, objectInfo);
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
return accessor;
|
|
131
|
+
}
|
|
132
|
+
getMarkerColor(d, ctx) {
|
|
133
|
+
const markerIndex = d.markerIndex;
|
|
134
|
+
// Check if this marker or any related marker is being hovered
|
|
135
|
+
const isHighlighted = this.props.autoHighlight &&
|
|
136
|
+
(markerIndex === this.state.hoveredMarkerIndex ||
|
|
137
|
+
d.sourceIndex === this.state.highlightedSourceIndex);
|
|
138
|
+
// Get base color
|
|
139
|
+
let baseColor;
|
|
140
|
+
if (this.props.getMarkerColor) {
|
|
141
|
+
baseColor = getFromAccessor(this.props.getMarkerColor, d, ctx);
|
|
142
|
+
}
|
|
143
|
+
else if (this.props.getLineColor) {
|
|
144
|
+
baseColor = getFromAccessor(this.props.getLineColor,
|
|
145
|
+
// @ts-expect-error -- accessors are hard :O
|
|
146
|
+
d.sourceObject, ctx);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
baseColor = [0, 0, 0, 255];
|
|
150
|
+
}
|
|
151
|
+
if (!isHighlighted) {
|
|
152
|
+
return baseColor;
|
|
153
|
+
}
|
|
154
|
+
// Mimic auto-highlight behavior
|
|
155
|
+
let highlightColor;
|
|
156
|
+
if (typeof this.props.highlightColor === "function") {
|
|
157
|
+
console.warn("highlightColor from function is not supported in FlatWellMarkersLayer");
|
|
158
|
+
highlightColor = [0, 0, 128, 128];
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
highlightColor = this.props.highlightColor;
|
|
162
|
+
}
|
|
163
|
+
return blendColors(baseColor, highlightColor);
|
|
164
|
+
}
|
|
165
|
+
renderLayers() {
|
|
166
|
+
var _a, _b, _c, _d, _e, _f;
|
|
167
|
+
const { cumulativePathDistanceCache } = this.state;
|
|
168
|
+
const lineWidthAccessor = this.getSubLayerAccessor(this.props.getLineWidth);
|
|
169
|
+
const sourceFilterAccessor = this.getSubLayerAccessor(this.props.getFilterValue);
|
|
170
|
+
const markerFilterAccessor = (d, ctx) => {
|
|
171
|
+
const sourcePathDistance = cumulativePathDistanceCache.get(d.sourceIndex);
|
|
172
|
+
const sourceFilterValue = getFromAccessor(sourceFilterAccessor, d, ctx);
|
|
173
|
+
return getMarkerFilterValue(d, sourceFilterValue, sourcePathDistance);
|
|
174
|
+
};
|
|
175
|
+
const sharedSubLayerProps = Object.assign(Object.assign({}, this.props), { data: this.state.markers, billboard: this.props.lineBillboard, widthScale: this.props.lineWidthScale, widthUnits: this.props.lineWidthUnits, getWidth: lineWidthAccessor, getPath: (d) => buildMarkerPath2D(d.type, d.position, d.angle), updateTriggers: {
|
|
176
|
+
getPath: (_a = this.props.updateTriggers) === null || _a === void 0 ? void 0 : _a["getTrajectoryPath"],
|
|
177
|
+
getColor: [
|
|
178
|
+
this.state.hoveredMarkerIndex,
|
|
179
|
+
this.state.highlightedSourceIndex,
|
|
180
|
+
...((_c = (_b = this.props.updateTriggers) === null || _b === void 0 ? void 0 : _b["getLineColor"]) !== null && _c !== void 0 ? _c : []),
|
|
181
|
+
...((_e = (_d = this.props.updateTriggers) === null || _d === void 0 ? void 0 : _d["getMarkerColor"]) !== null && _e !== void 0 ? _e : []),
|
|
182
|
+
],
|
|
183
|
+
} });
|
|
184
|
+
// TODO: Distinct layers based on 2D or 3D views, as they should render completely differently based on context
|
|
185
|
+
// TODO: Better scaling for markers. For instance, a screen marker should always be the same amount bigger than it's parent line
|
|
186
|
+
return [
|
|
187
|
+
new PathLayer(Object.assign(Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, sharedSubLayerProps), { id: SubLayerId.MARKERS_2D_OUTLINE, parameters: {
|
|
188
|
+
[GL.POLYGON_OFFSET_FACTOR]: 1,
|
|
189
|
+
[GL.POLYGON_OFFSET_UNITS]: 1,
|
|
190
|
+
} }))), { visible: this.props.outline, getColor: [0, 0, 0], getWidth: getSize(LINE, lineWidthAccessor, 1),
|
|
191
|
+
// Disable this layer for picking, instead using MARKERS_2D_PICKING
|
|
192
|
+
pickable: false, autoHighlight: false, highlightedObjectIndex: -1, getFilterValue: markerFilterAccessor })),
|
|
193
|
+
new PathLayer(Object.assign(Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, sharedSubLayerProps), { id: SubLayerId.MARKERS_2D }))), { getColor: this.getMarkerColor, getFilterValue: markerFilterAccessor,
|
|
194
|
+
// Disable this layer for picking, instead using MARKERS_2D_PICKING
|
|
195
|
+
pickable: false, autoHighlight: false, highlightedObjectIndex: -1 })),
|
|
196
|
+
// To make markers easier to pick, we render them as filled polygons whilst picking
|
|
197
|
+
new PolygonLayer(Object.assign(Object.assign({}, this.getSubLayerProps(Object.assign(Object.assign({}, sharedSubLayerProps), { id: SubLayerId.MARKERS_2D_PICKING, updateTriggers: {
|
|
198
|
+
getPolygon: (_f = this.props.updateTriggers) === null || _f === void 0 ? void 0 : _f["getTrajectoryPath"],
|
|
199
|
+
} }))), { visible: this.props.pickable, filled: true, stroked: true,
|
|
200
|
+
// Only render pick-able markers
|
|
201
|
+
extensions: [
|
|
202
|
+
...this.props.extensions,
|
|
203
|
+
new DataFilterExtension({ categorySize: 1 }),
|
|
204
|
+
], getFilterValue: markerFilterAccessor, getFilterCategory: (d) => Number(d.type !== "perforation"), getPolygon: (d) => buildMarkerPath2D(d.type, d.position, d.angle), getLineWidth: lineWidthAccessor, lineWidthScale: this.props.lineWidthScale, lineWidthUnits: this.props.lineWidthUnits,
|
|
205
|
+
// Disable auto-highlight, since we've implemented it manually
|
|
206
|
+
autoHighlight: false, highlightedObjectIndex: -1 })),
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
FlatWellMarkersLayer.layerName = "FlatWellMarkersLayer";
|
|
211
|
+
FlatWellMarkersLayer.defaultProps = {
|
|
212
|
+
getMarkers: { type: "accessor", value: [] },
|
|
213
|
+
// Default to undefined so we can fall back to trajectory color
|
|
214
|
+
getMarkerColor: undefined,
|
|
215
|
+
getCumulativePathDistance: undefined,
|
|
216
|
+
};
|
|
217
|
+
function getMarkerFilterValue(markerData, sourceFilterValue, cumulativePathDistance) {
|
|
218
|
+
if (!Array.isArray(sourceFilterValue))
|
|
219
|
+
return sourceFilterValue !== null && sourceFilterValue !== void 0 ? sourceFilterValue : 1;
|
|
220
|
+
const [lowerIndex] = getFractionPositionSegmentIndices(markerData.positionAlongPath, sourceFilterValue, cumulativePathDistance);
|
|
221
|
+
return sourceFilterValue[lowerIndex];
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=flatWellMarkersLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatWellMarkersLayer.js","sourceRoot":"","sources":["../../../../src/layers/wells/layers/flatWellMarkersLayer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _ from "lodash";
|
|
2
2
|
import { Vector2, Vector3 } from "math.gl";
|
|
3
|
-
import { OrbitViewport, } from "@deck.gl/core";
|
|
4
3
|
import { getTrajectory } from "../utils/trajectory";
|
|
5
4
|
import { MergedTextLayer } from "./mergedTextLayer";
|
|
6
5
|
import { FixedSizeExtension } from "../../../extensions/fixed-size-extension";
|
|
@@ -95,16 +94,16 @@ export class WellLabelLayer extends MergedTextLayer {
|
|
|
95
94
|
return this.getAnnotationPosition(d, this.props.getPositionAlongPath);
|
|
96
95
|
}, getAngle: (d) => this.getLabelAngle(d), updateTriggers: Object.assign(Object.assign({}, sublayerProps === null || sublayerProps === void 0 ? void 0 : sublayerProps.updateTriggers), { getAngle: [
|
|
97
96
|
...angleUpdateTriggers,
|
|
98
|
-
this.context.viewport.
|
|
99
|
-
? this.context.viewport
|
|
100
|
-
.cameraPosition
|
|
101
|
-
: null, // No need for angle update trigger for OrthographicViewport and change in camera.
|
|
97
|
+
this.context.viewport.cameraPosition,
|
|
102
98
|
this.props.orientation,
|
|
103
99
|
this.props.getPositionAlongPath,
|
|
104
100
|
], getPosition: [
|
|
105
101
|
...positionUpdateTriggers,
|
|
106
102
|
this.context.viewport.cameraPosition,
|
|
107
103
|
this.props.getPositionAlongPath,
|
|
104
|
+
], all: [
|
|
105
|
+
this.context.viewport.cameraPosition,
|
|
106
|
+
this.props.getPositionAlongPath,
|
|
108
107
|
] }) });
|
|
109
108
|
return super.getSubLayerProps(newProps);
|
|
110
109
|
}
|