@welldot/render 0.2.3 → 0.3.0-next.20261015.d7c7365
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/README.md +71 -14
- package/dist/chunk-ODRL222Y.js +10 -0
- package/dist/chunk-ODRL222Y.js.map +1 -0
- package/dist/index.cjs +1493 -325
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +332 -33
- package/dist/index.d.ts +332 -33
- package/dist/index.js +1501 -331
- package/dist/index.js.map +1 -1
- package/dist/textures.cjs +339 -0
- package/dist/textures.cjs.map +1 -0
- package/dist/textures.d.cts +9 -0
- package/dist/textures.d.ts +9 -0
- package/dist/textures.js +7 -0
- package/dist/textures.js.map +1 -0
- package/package.json +11 -4
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { Well, Lithology, Fracture, Cave, BoreHole, WellCase, WellScreen, HoleFill, SurfaceCase, Reduction, Units, DiameterUnits, LengthUnits } from '@welldot/core';
|
|
1
|
+
import { LanguageText, Well, Lithology, Fracture, Cave, BoreHole, WellCase, WellScreen, HoleFill, SurfaceCase, Reduction, Units, DiameterUnits, LengthUnits } from '@welldot/core';
|
|
2
|
+
export { importFgdcTextures } from './textures.cjs';
|
|
2
3
|
|
|
3
4
|
type PadTextureConfig = {
|
|
4
5
|
background: string;
|
|
@@ -129,12 +130,30 @@ type ConstructionTheme = {
|
|
|
129
130
|
wellScreen: {
|
|
130
131
|
stroke: string;
|
|
131
132
|
strokeWidth: number;
|
|
133
|
+
/** Width of the dashed line at each screen's top and base. */
|
|
134
|
+
endStrokeWidth: number;
|
|
135
|
+
endDasharray: string;
|
|
132
136
|
};
|
|
133
137
|
reduction: {
|
|
134
138
|
fill: string;
|
|
135
139
|
stroke: string;
|
|
136
140
|
strokeWidth: number;
|
|
137
141
|
};
|
|
142
|
+
centralizer: {
|
|
143
|
+
fill: string;
|
|
144
|
+
stroke: string;
|
|
145
|
+
strokeWidth: number;
|
|
146
|
+
};
|
|
147
|
+
/** Current pump body and its riser pipe (`.well` v2.3 `pump_installations`). */
|
|
148
|
+
pump: {
|
|
149
|
+
fill: string;
|
|
150
|
+
stroke: string;
|
|
151
|
+
strokeWidth: number;
|
|
152
|
+
/** Riser interior: a tone between the casing's and the body's, so the riser reads as part of the pump, not as a casing. */
|
|
153
|
+
riserFill: string;
|
|
154
|
+
riserStroke: string;
|
|
155
|
+
riserStrokeWidth: number;
|
|
156
|
+
};
|
|
138
157
|
conflict: {
|
|
139
158
|
stroke: string;
|
|
140
159
|
strokeWidth: number;
|
|
@@ -180,6 +199,46 @@ type LabelsTheme = {
|
|
|
180
199
|
caveLabelFontSize?: number;
|
|
181
200
|
};
|
|
182
201
|
};
|
|
202
|
+
/** Mini-map drawn by `RenderConfig.overview`. */
|
|
203
|
+
type OverviewTheme = {
|
|
204
|
+
stroke: string;
|
|
205
|
+
strokeWidth: number;
|
|
206
|
+
/** Fill of layers without a `color`. */
|
|
207
|
+
emptyFill: string;
|
|
208
|
+
/** Outline of the window marking the panel's depth range. */
|
|
209
|
+
windowStroke: string;
|
|
210
|
+
windowStrokeWidth: number;
|
|
211
|
+
};
|
|
212
|
+
/** Column titles drawn by `RenderConfig.columnHeaders`. */
|
|
213
|
+
type ColumnHeadersTheme = {
|
|
214
|
+
fontSize: number;
|
|
215
|
+
color: string;
|
|
216
|
+
fontFamily?: string;
|
|
217
|
+
fontWeight?: string | number;
|
|
218
|
+
ruleStroke: string;
|
|
219
|
+
ruleStrokeWidth: number;
|
|
220
|
+
};
|
|
221
|
+
/** Layer and fracture markers drawn by `RenderConfig.markers`. */
|
|
222
|
+
type MarkersTheme = {
|
|
223
|
+
fill: string;
|
|
224
|
+
stroke: string;
|
|
225
|
+
strokeWidth: number;
|
|
226
|
+
color: string;
|
|
227
|
+
fontSize: number;
|
|
228
|
+
fontFamily?: string;
|
|
229
|
+
fontWeight?: string | number;
|
|
230
|
+
};
|
|
231
|
+
/** Hatched band drawn over the depths a panel repeats from the previous one. */
|
|
232
|
+
type OverlapTheme = {
|
|
233
|
+
stroke: string;
|
|
234
|
+
strokeWidth: number;
|
|
235
|
+
/** Spacing of the hatch lines in pixels. */
|
|
236
|
+
size: number;
|
|
237
|
+
ruleStroke: string;
|
|
238
|
+
labelColor: string;
|
|
239
|
+
fontSize: number;
|
|
240
|
+
fontFamily?: string;
|
|
241
|
+
};
|
|
183
242
|
type LegendTheme = {
|
|
184
243
|
borderStrokeWidth: number;
|
|
185
244
|
fractureStrokeWidth: number;
|
|
@@ -198,6 +257,10 @@ type WellTheme = {
|
|
|
198
257
|
fracture: FractureTheme;
|
|
199
258
|
} & ConstructionTheme & LabelsTheme & {
|
|
200
259
|
legend: LegendTheme;
|
|
260
|
+
overview: OverviewTheme;
|
|
261
|
+
columnHeaders: ColumnHeadersTheme;
|
|
262
|
+
markers: MarkersTheme;
|
|
263
|
+
overlap: OverlapTheme;
|
|
201
264
|
};
|
|
202
265
|
type ComponentsClassNames = {
|
|
203
266
|
tooltip: {
|
|
@@ -266,6 +329,14 @@ type ComponentsClassNames = {
|
|
|
266
329
|
group: string;
|
|
267
330
|
item: string;
|
|
268
331
|
};
|
|
332
|
+
centralizer: {
|
|
333
|
+
group: string;
|
|
334
|
+
item: string;
|
|
335
|
+
};
|
|
336
|
+
pump: {
|
|
337
|
+
group: string;
|
|
338
|
+
item: string;
|
|
339
|
+
};
|
|
269
340
|
conflict: {
|
|
270
341
|
group: string;
|
|
271
342
|
rect: string;
|
|
@@ -285,6 +356,26 @@ type ComponentsClassNames = {
|
|
|
285
356
|
caveFill: string;
|
|
286
357
|
constructionRect: string;
|
|
287
358
|
};
|
|
359
|
+
overview: {
|
|
360
|
+
group: string;
|
|
361
|
+
item: string;
|
|
362
|
+
window: string;
|
|
363
|
+
};
|
|
364
|
+
columnHeaders: {
|
|
365
|
+
group: string;
|
|
366
|
+
text: string;
|
|
367
|
+
rule: string;
|
|
368
|
+
};
|
|
369
|
+
markers: {
|
|
370
|
+
group: string;
|
|
371
|
+
lithology: string;
|
|
372
|
+
fracture: string;
|
|
373
|
+
};
|
|
374
|
+
overlap: {
|
|
375
|
+
group: string;
|
|
376
|
+
band: string;
|
|
377
|
+
label: string;
|
|
378
|
+
};
|
|
288
379
|
highlights: {
|
|
289
380
|
geologicGroup: string;
|
|
290
381
|
constructionGroup: string;
|
|
@@ -296,17 +387,14 @@ type ComponentsClassNames = {
|
|
|
296
387
|
};
|
|
297
388
|
};
|
|
298
389
|
/** Keys identifying which tooltip types are active. Pass to `RenderConfig.tooltips` to control visibility. */
|
|
299
|
-
type TooltipKey = 'geology' | 'hole' | 'surfaceCase' | 'holeFill' | 'wellCase' | 'wellScreen' | 'reduction' | 'conflict' | 'fracture' | 'cementPad' | 'cave';
|
|
390
|
+
type TooltipKey = 'geology' | 'hole' | 'surfaceCase' | 'holeFill' | 'wellCase' | 'wellScreen' | 'reduction' | 'centralizer' | 'pump' | 'conflict' | 'fracture' | 'cementPad' | 'cave';
|
|
300
391
|
/**
|
|
301
|
-
*
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
*
|
|
392
|
+
* Renderer-drawn text: a core `LanguageText` with `pt` required (the fallback
|
|
393
|
+
* locale; `en` and any other tag optional), or a bare string when the value
|
|
394
|
+
* doesn't vary by locale. Resolve via `resolveRenderLabel()` — never read a
|
|
395
|
+
* tag directly, since the value may be a plain string.
|
|
305
396
|
*/
|
|
306
|
-
type RenderLocalizedText =
|
|
307
|
-
pt: string;
|
|
308
|
-
en?: string;
|
|
309
|
-
} | string;
|
|
397
|
+
type RenderLocalizedText = LanguageText<'pt'> | string;
|
|
310
398
|
/**
|
|
311
399
|
* Shape shared by `RenderConfig.tooltipLabels` (resolved, `T = string`) and
|
|
312
400
|
* `RenderLabelPack.tooltipLabels` (authoring, `T = RenderLocalizedText`) —
|
|
@@ -340,10 +428,30 @@ type TooltipLabels<T = string> = {
|
|
|
340
428
|
wellScreen: {
|
|
341
429
|
title: T;
|
|
342
430
|
slot: T;
|
|
431
|
+
material: T;
|
|
432
|
+
slotType: T;
|
|
343
433
|
};
|
|
344
434
|
reduction: {
|
|
345
435
|
title: T;
|
|
346
436
|
};
|
|
437
|
+
centralizer: {
|
|
438
|
+
title: T;
|
|
439
|
+
depth: T;
|
|
440
|
+
spacing: T;
|
|
441
|
+
};
|
|
442
|
+
pump: {
|
|
443
|
+
title: T;
|
|
444
|
+
intakeDepth: T;
|
|
445
|
+
model: T;
|
|
446
|
+
power: T;
|
|
447
|
+
riser: T;
|
|
448
|
+
type_submersible: T;
|
|
449
|
+
type_vertical_turbine: T;
|
|
450
|
+
type_jet: T;
|
|
451
|
+
type_progressive_cavity: T;
|
|
452
|
+
type_hand_pump: T;
|
|
453
|
+
type_compressor_airlift: T;
|
|
454
|
+
};
|
|
347
455
|
conflict: {
|
|
348
456
|
title: T;
|
|
349
457
|
};
|
|
@@ -388,7 +496,22 @@ type RenderLabelPack = {
|
|
|
388
496
|
cave: RenderLocalizedText;
|
|
389
497
|
caveWater: RenderLocalizedText;
|
|
390
498
|
};
|
|
499
|
+
columnHeaders: Record<keyof RenderConfig['columnHeaders']['labels'], RenderLocalizedText>;
|
|
500
|
+
continuation: {
|
|
501
|
+
prefix: RenderLocalizedText;
|
|
502
|
+
};
|
|
503
|
+
overlap: {
|
|
504
|
+
label: RenderLocalizedText;
|
|
505
|
+
};
|
|
391
506
|
};
|
|
507
|
+
/** Sub-items of the lithology annotations (`RenderConfig.labels.lithology`). */
|
|
508
|
+
type LithologyLabelItem = 'depth' | 'description' | 'dividers'
|
|
509
|
+
/** Bold `geologic_unit` line and italic `aquifer_unit` line. */
|
|
510
|
+
| 'units'
|
|
511
|
+
/** Square of the layer's fill before the depth range. */
|
|
512
|
+
| 'swatch'
|
|
513
|
+
/** Rule above each annotation, as wide as the annotation. */
|
|
514
|
+
| 'rules';
|
|
392
515
|
/** Full rendering behaviour configuration. Use `INTERACTIVE_RENDER_CONFIG` or `STATIC_RENDER_CONFIG` as a starting point. */
|
|
393
516
|
type RenderConfig = {
|
|
394
517
|
zoom: boolean;
|
|
@@ -436,17 +559,63 @@ type RenderConfig = {
|
|
|
436
559
|
};
|
|
437
560
|
};
|
|
438
561
|
construction: {
|
|
562
|
+
/**
|
|
563
|
+
* Fixed-size pad drawn above the surface as two slabs around the
|
|
564
|
+
* outermost pipe, with break lines at the outer ends (not to scale). The
|
|
565
|
+
* profile's `cement_pad` width and thickness don't change it (they only
|
|
566
|
+
* show in the tooltip).
|
|
567
|
+
*/
|
|
439
568
|
cementPad: {
|
|
440
|
-
|
|
441
|
-
|
|
569
|
+
/** Pad width as a ratio of the construction column width; widened when the pipe opening needs it. */
|
|
570
|
+
widthRatio: number;
|
|
571
|
+
/** Pad height in pixels (constant regardless of zoom). */
|
|
572
|
+
height: number;
|
|
573
|
+
};
|
|
574
|
+
/**
|
|
575
|
+
* Casing shoe: a filled triangle outside each wall where the casing /
|
|
576
|
+
* screen string really ends (not at panel cuts or joints).
|
|
577
|
+
*/
|
|
578
|
+
casingShoe: {
|
|
579
|
+
active: boolean;
|
|
580
|
+
/** Triangle leg in pixels (constant regardless of zoom). */
|
|
581
|
+
size: number;
|
|
582
|
+
};
|
|
583
|
+
/**
|
|
584
|
+
* Screen ends: a dashed line across the pipe at the top and base of
|
|
585
|
+
* every screen (not at panel cuts). Styled by `theme.wellScreen`
|
|
586
|
+
* `endStrokeWidth` / `endDasharray`.
|
|
587
|
+
*/
|
|
588
|
+
screenEnds: {
|
|
589
|
+
active: boolean;
|
|
442
590
|
};
|
|
443
591
|
surfaceCase: {
|
|
444
592
|
diameterPaddingRatio: number;
|
|
445
593
|
};
|
|
594
|
+
centralizer: {
|
|
595
|
+
/** Half the marker height in pixels (constant regardless of zoom). */
|
|
596
|
+
markerHalfHeight: number;
|
|
597
|
+
};
|
|
598
|
+
/** Current pump + riser layer (`.well` v2.3 `pump_installations`). */
|
|
599
|
+
pump: {
|
|
600
|
+
/** Whether the current pump is drawn. */
|
|
601
|
+
active: boolean;
|
|
602
|
+
/** Pump body height in pixels (constant regardless of zoom); the body ends at `intake_depth`. */
|
|
603
|
+
bodyHeight: number;
|
|
604
|
+
/** Pump body width as a fraction of the casing/screen diameter at the intake. */
|
|
605
|
+
bodyWidthRatio: number;
|
|
606
|
+
/** Riser width as a fraction of the casing diameter, used when `riser_diameter` is absent. */
|
|
607
|
+
riserWidthRatio: number;
|
|
608
|
+
};
|
|
446
609
|
};
|
|
447
610
|
textures?: TexturesConfig;
|
|
448
611
|
constructionLabels: {
|
|
449
612
|
active: boolean;
|
|
613
|
+
/**
|
|
614
|
+
* `left` (default): each label ends `xOffset` px left of its own casing
|
|
615
|
+
* wall. `right`: labels start `xOffset` px right of the construction
|
|
616
|
+
* column, in one aligned column.
|
|
617
|
+
*/
|
|
618
|
+
side?: 'left' | 'right';
|
|
450
619
|
xOffset: number;
|
|
451
620
|
labelRadius: number;
|
|
452
621
|
labelMaxWidth?: number;
|
|
@@ -459,8 +628,17 @@ type RenderConfig = {
|
|
|
459
628
|
labels: {
|
|
460
629
|
/** false = hide all; true = show all; array = show only listed types */
|
|
461
630
|
active: boolean | ('lithology' | 'fractures' | 'caves')[];
|
|
462
|
-
/** Fine-grained lithology sub-item control;
|
|
463
|
-
lithology?: boolean |
|
|
631
|
+
/** Fine-grained lithology sub-item control; `true` = depth, description and dividers */
|
|
632
|
+
lithology?: boolean | LithologyLabelItem[];
|
|
633
|
+
/**
|
|
634
|
+
* Marks layers and construction items that start above the panel (they
|
|
635
|
+
* continue from the previous one): `↑ {prefix} · from–to` on lithology
|
|
636
|
+
* annotations, a leading `↑` on construction labels.
|
|
637
|
+
*/
|
|
638
|
+
continuation: {
|
|
639
|
+
active: boolean;
|
|
640
|
+
prefix: string;
|
|
641
|
+
};
|
|
464
642
|
typeLabels?: {
|
|
465
643
|
fracture?: string;
|
|
466
644
|
fractureWater?: string;
|
|
@@ -492,6 +670,46 @@ type RenderConfig = {
|
|
|
492
670
|
outerEdgeWidth: number;
|
|
493
671
|
};
|
|
494
672
|
legend: LegendRenderConfig;
|
|
673
|
+
/**
|
|
674
|
+
* Mini-map: the whole well's lithology drawn as a thin column in the
|
|
675
|
+
* panel's left margin, with a window outlining the panel's depth range.
|
|
676
|
+
*/
|
|
677
|
+
overview: {
|
|
678
|
+
active: boolean;
|
|
679
|
+
/** Left edge in SVG coordinates. */
|
|
680
|
+
x: number;
|
|
681
|
+
width: number;
|
|
682
|
+
/** Height in pixels; capped at the panel's drawing height. */
|
|
683
|
+
height: number;
|
|
684
|
+
};
|
|
685
|
+
/**
|
|
686
|
+
* Column titles drawn in the panel's top margin, over a rule that sits
|
|
687
|
+
* `construction.cementPad.height` px above the drawing area (clear of the
|
|
688
|
+
* pad). The top margin must hold `height` plus that.
|
|
689
|
+
*/
|
|
690
|
+
columnHeaders: {
|
|
691
|
+
active: boolean;
|
|
692
|
+
/** Height of the header row, taken from the top margin. */
|
|
693
|
+
height: number;
|
|
694
|
+
labels: {
|
|
695
|
+
depth: string;
|
|
696
|
+
lithology: string;
|
|
697
|
+
construction: string;
|
|
698
|
+
/** Shown only when lithology annotations are drawn. */
|
|
699
|
+
description: string;
|
|
700
|
+
};
|
|
701
|
+
};
|
|
702
|
+
/** Circled 1-based index on each lithology layer, `F{n}` next to each fracture. */
|
|
703
|
+
markers: {
|
|
704
|
+
lithology: boolean;
|
|
705
|
+
fractures: boolean;
|
|
706
|
+
radius: number;
|
|
707
|
+
};
|
|
708
|
+
/** Band over the depths a panel repeats (`SvgInstance.repeatedTo`). */
|
|
709
|
+
overlap: {
|
|
710
|
+
/** `{range}` is replaced by the repeated depth range, e.g. `116–124 m`. */
|
|
711
|
+
label: string;
|
|
712
|
+
};
|
|
495
713
|
highlights: {
|
|
496
714
|
stroke: string;
|
|
497
715
|
strokeWidth: number;
|
|
@@ -526,6 +744,8 @@ type LegendRenderConfig = {
|
|
|
526
744
|
wellCase: string;
|
|
527
745
|
wellScreen: string;
|
|
528
746
|
reduction: string;
|
|
747
|
+
centralizer: string;
|
|
748
|
+
pump: string;
|
|
529
749
|
cementPad: string;
|
|
530
750
|
conflict: string;
|
|
531
751
|
};
|
|
@@ -547,6 +767,18 @@ type SvgInstance = {
|
|
|
547
767
|
top: number;
|
|
548
768
|
bottom: number;
|
|
549
769
|
};
|
|
770
|
+
/**
|
|
771
|
+
* Depth window `[from, to]` (m) drawn in this panel. When every panel has
|
|
772
|
+
* one, `draw()` uses them instead of splitting the depth in proportion to
|
|
773
|
+
* the panel heights, so panels may overlap or skip depths.
|
|
774
|
+
*/
|
|
775
|
+
depthRange?: [number, number];
|
|
776
|
+
/**
|
|
777
|
+
* Depth (m) down to which the panel repeats the bottom of the previous
|
|
778
|
+
* one. The repeated band `[depthRange[0], repeatedTo]` is hatched and
|
|
779
|
+
* labelled with `RenderConfig.overlap.label`.
|
|
780
|
+
*/
|
|
781
|
+
repeatedTo?: number;
|
|
550
782
|
};
|
|
551
783
|
/**
|
|
552
784
|
* Attaches an optional stable render identity to any feature type.
|
|
@@ -592,21 +824,56 @@ type RenderableWell = Omit<Well, 'lithology' | 'fractures' | 'caves' | 'bore_hol
|
|
|
592
824
|
declare const RENDER_LABELS: RenderLabelPack;
|
|
593
825
|
/**
|
|
594
826
|
* Returns a copy of `config` with `constructionLabels.labels`, `legend.labels`,
|
|
595
|
-
* `tooltipLabels`,
|
|
596
|
-
* `
|
|
827
|
+
* `tooltipLabels`, `labels.typeLabels`, `labels.continuation.prefix`,
|
|
828
|
+
* `columnHeaders.labels` and `overlap.label` resolved from `RENDER_LABELS`
|
|
829
|
+
* for `locale`. Every other field of `config` is preserved unchanged.
|
|
597
830
|
*/
|
|
598
831
|
declare function applyRenderLocale(config: RenderConfig, locale: 'en' | 'pt'): RenderConfig;
|
|
599
832
|
declare const DEFAULT_WELL_THEME: WellTheme;
|
|
600
833
|
declare const STATIC_RENDER_CONFIG: RenderConfig;
|
|
601
834
|
declare const INTERACTIVE_RENDER_CONFIG: RenderConfig;
|
|
602
835
|
|
|
836
|
+
type LegendLabelKey = keyof LegendRenderConfig['labels'];
|
|
603
837
|
/**
|
|
604
|
-
*
|
|
605
|
-
*
|
|
838
|
+
* One entry of a well's legend: `key` names the entry (and its label in
|
|
839
|
+
* `LegendRenderConfig['labels']`), the other fields select its symbol.
|
|
606
840
|
*/
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
841
|
+
type WellLegendItem = {
|
|
842
|
+
kind: 'fracture';
|
|
843
|
+
key: 'fractureSingle' | 'fractureSwarm' | 'fractureWater';
|
|
844
|
+
label: string;
|
|
845
|
+
swarm: boolean;
|
|
846
|
+
water_intake: boolean;
|
|
847
|
+
} | {
|
|
848
|
+
kind: 'cave';
|
|
849
|
+
key: 'caveDry' | 'caveWet';
|
|
850
|
+
label: string;
|
|
851
|
+
water_intake: boolean;
|
|
852
|
+
} | {
|
|
853
|
+
kind: 'construction';
|
|
854
|
+
key: ConstructionSubKind;
|
|
855
|
+
label: string;
|
|
856
|
+
subKind: ConstructionSubKind;
|
|
857
|
+
};
|
|
858
|
+
type ConstructionSubKind = Exclude<LegendLabelKey, 'fractureSingle' | 'fractureSwarm' | 'fractureWater' | 'caveDry' | 'caveWet'>;
|
|
859
|
+
/**
|
|
860
|
+
* Lists the legend entries `profile` needs, in display order, labeled from
|
|
861
|
+
* `labels` (defaults to the built-in Portuguese labels).
|
|
862
|
+
*/
|
|
863
|
+
declare function getWellLegendItems(profile: Well, labels?: LegendRenderConfig['labels']): WellLegendItem[];
|
|
864
|
+
type LegendOptions = {
|
|
865
|
+
config?: Partial<LegendRenderConfig>;
|
|
866
|
+
theme?: Partial<WellTheme>;
|
|
867
|
+
classNames?: ComponentsClassNames['legend'];
|
|
868
|
+
textures?: TexturesConfig;
|
|
869
|
+
};
|
|
870
|
+
/**
|
|
871
|
+
* Draws a single legend symbol into its own `<svg>` (matched by `selector`),
|
|
872
|
+
* sized to the symbol plus a small margin, with the textures it needs
|
|
873
|
+
* defined inside — so the markup renders standalone, e.g. in a PDF table.
|
|
874
|
+
*/
|
|
875
|
+
declare function drawWellLegendSymbol(selector: string, item: WellLegendItem, options?: Omit<LegendOptions, 'config'>): void;
|
|
876
|
+
declare function drawWellLegend(selector: string, profile: Well, options?: LegendOptions): void;
|
|
610
877
|
|
|
611
878
|
/**
|
|
612
879
|
* SVG-based renderer for geological well profiles.
|
|
@@ -658,6 +925,20 @@ declare class WellRenderer {
|
|
|
658
925
|
private initInstanceSvg;
|
|
659
926
|
/** Renders a standalone legend into the element matched by `selector`. */
|
|
660
927
|
renderLegend(selector: string, profile: Well): void;
|
|
928
|
+
/** Lists the legend entries `profile` needs, labeled from `renderConfig.legend.labels`. */
|
|
929
|
+
getLegendItems(profile: Well): WellLegendItem[];
|
|
930
|
+
/**
|
|
931
|
+
* Renders one legend entry's symbol (see {@link getLegendItems}) into its
|
|
932
|
+
* own SVG matched by `selector`, with the textures it needs defined inside.
|
|
933
|
+
*/
|
|
934
|
+
renderLegendSymbol(selector: string, item: WellLegendItem): void;
|
|
935
|
+
/**
|
|
936
|
+
* Renders one lithology layer's fill as a `size`×`size` square into its
|
|
937
|
+
* own SVG matched by `selector`, with its texture defined inside (e.g. for
|
|
938
|
+
* a swatch in a PDF table). Call after `prepareSvg()`, which loads the
|
|
939
|
+
* FGDC textures.
|
|
940
|
+
*/
|
|
941
|
+
renderLithologySwatch(selector: string, layer: Lithology, size?: number): void;
|
|
661
942
|
/**
|
|
662
943
|
* Multiplies the current zoom scale by `factor` (e.g. `1.25` to zoom in,
|
|
663
944
|
* `1 / 1.25` to zoom out) on every panel. No-op if both `renderConfig.zoom`
|
|
@@ -674,13 +955,21 @@ declare class WellRenderer {
|
|
|
674
955
|
* Returns `1` if zoom/pan is disabled or `prepareSvg()` hasn't run yet.
|
|
675
956
|
*/
|
|
676
957
|
getZoomScale(): number;
|
|
958
|
+
/**
|
|
959
|
+
* Removes everything drawn on every panel (layers, labels, axis,
|
|
960
|
+
* highlights) and keeps the structure `prepareSvg()` built, so the next
|
|
961
|
+
* `draw()` needs no new `prepareSvg()`. `draw()` calls it for an empty well.
|
|
962
|
+
*/
|
|
963
|
+
clear(): void;
|
|
677
964
|
/**
|
|
678
965
|
* Initialises the SVG DOM structure and preloads FGDC textures.
|
|
679
966
|
* Must be called once before the first `draw()`.
|
|
680
967
|
*/
|
|
681
968
|
prepareSvg(): Promise<void>;
|
|
682
969
|
/**
|
|
683
|
-
* Renders the well profile into all configured SVG panels.
|
|
970
|
+
* Renders the well profile into all configured SVG panels. Layers the
|
|
971
|
+
* profile no longer has are removed; an empty well (`isWellEmpty`) clears
|
|
972
|
+
* the panels (see {@link clear}).
|
|
684
973
|
* @param profile - The well data to render.
|
|
685
974
|
* @param options.units - Override the instance-level measurement units for this render.
|
|
686
975
|
* @param options.locale - Override the instance-level locale for this render.
|
|
@@ -694,13 +983,6 @@ declare class WellRenderer {
|
|
|
694
983
|
private drawLogToInstance;
|
|
695
984
|
}
|
|
696
985
|
|
|
697
|
-
declare function drawWellLegend(selector: string, profile: Well, options?: {
|
|
698
|
-
config?: Partial<LegendRenderConfig>;
|
|
699
|
-
theme?: Partial<WellTheme>;
|
|
700
|
-
classNames?: ComponentsClassNames['legend'];
|
|
701
|
-
textures?: TexturesConfig;
|
|
702
|
-
}): void;
|
|
703
|
-
|
|
704
986
|
/**
|
|
705
987
|
* Formats a depth value in metres to the active length unit string, rounded
|
|
706
988
|
* (never raw floating-point) and using the target locale's decimal separator.
|
|
@@ -721,10 +1003,27 @@ declare function getLengthUnit(units: LengthUnits): string;
|
|
|
721
1003
|
*/
|
|
722
1004
|
declare function getDiameterUnit(units: DiameterUnits, locale?: 'en' | 'pt'): string;
|
|
723
1005
|
/**
|
|
724
|
-
* Resolves a
|
|
725
|
-
*
|
|
726
|
-
*
|
|
1006
|
+
* Resolves a render label to a plain string: core `resolveLanguageText()`
|
|
1007
|
+
* with `pt` as the fallback locale. A bare string is returned as-is
|
|
1008
|
+
* (locale-invariant).
|
|
727
1009
|
*/
|
|
728
1010
|
declare function resolveRenderLabel(value: RenderLocalizedText, locale: 'en' | 'pt'): string;
|
|
729
1011
|
|
|
730
|
-
|
|
1012
|
+
/**
|
|
1013
|
+
* Topmost depth (m) the profile draws: `0` (the surface), or above it when
|
|
1014
|
+
* a casing, screen or surface case starts at a negative depth (pipe
|
|
1015
|
+
* stick-up above the ground).
|
|
1016
|
+
*/
|
|
1017
|
+
declare function getProfileTopDepth(profile: {
|
|
1018
|
+
surface_case?: {
|
|
1019
|
+
from: number;
|
|
1020
|
+
}[];
|
|
1021
|
+
well_case?: {
|
|
1022
|
+
from: number;
|
|
1023
|
+
}[];
|
|
1024
|
+
well_screen?: {
|
|
1025
|
+
from: number;
|
|
1026
|
+
}[];
|
|
1027
|
+
}): number;
|
|
1028
|
+
|
|
1029
|
+
export { type CaveTheme, type ColumnHeadersTheme, type ComponentsClassNames, type ConstructionTheme, DEFAULT_WELL_THEME, type DeepPartial, type FractureTheme, type HighlightItem, type Highlights, INTERACTIVE_RENDER_CONFIG, type LabelsTheme, type LegendRenderConfig, type LegendTheme, type LithologyLabelItem, type LithologyTextureTheme, type LithologyTheme, type MarkersTheme, type OverlapTheme, type OverviewTheme, RENDER_LABELS, type RenderConfig, type RenderLabelPack, type RenderLocalizedText, type RenderableWell, STATIC_RENDER_CONFIG, type SvgInstance, type TooltipKey, type TooltipLabels, type WellLegendItem, WellRenderer, type WellTheme, type WithKey, applyRenderLocale, drawWellLegend, drawWellLegendSymbol, formatDiameter, formatLength, getDiameterUnit, getLengthUnit, getProfileTopDepth, getWellLegendItems, resolveRenderLabel };
|