@welldot/render 0.3.0 → 0.4.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/README.md +71 -14
- package/dist/chunk-ODRL222Y.js +10 -0
- package/dist/chunk-ODRL222Y.js.map +1 -0
- package/dist/index.cjs +1403 -335
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +313 -33
- package/dist/index.d.ts +313 -33
- package/dist/index.js +1410 -340
- 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,6 +130,9 @@ 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;
|
|
@@ -140,6 +144,16 @@ type ConstructionTheme = {
|
|
|
140
144
|
stroke: string;
|
|
141
145
|
strokeWidth: number;
|
|
142
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
|
+
};
|
|
143
157
|
conflict: {
|
|
144
158
|
stroke: string;
|
|
145
159
|
strokeWidth: number;
|
|
@@ -185,6 +199,46 @@ type LabelsTheme = {
|
|
|
185
199
|
caveLabelFontSize?: number;
|
|
186
200
|
};
|
|
187
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
|
+
};
|
|
188
242
|
type LegendTheme = {
|
|
189
243
|
borderStrokeWidth: number;
|
|
190
244
|
fractureStrokeWidth: number;
|
|
@@ -203,6 +257,10 @@ type WellTheme = {
|
|
|
203
257
|
fracture: FractureTheme;
|
|
204
258
|
} & ConstructionTheme & LabelsTheme & {
|
|
205
259
|
legend: LegendTheme;
|
|
260
|
+
overview: OverviewTheme;
|
|
261
|
+
columnHeaders: ColumnHeadersTheme;
|
|
262
|
+
markers: MarkersTheme;
|
|
263
|
+
overlap: OverlapTheme;
|
|
206
264
|
};
|
|
207
265
|
type ComponentsClassNames = {
|
|
208
266
|
tooltip: {
|
|
@@ -275,6 +333,10 @@ type ComponentsClassNames = {
|
|
|
275
333
|
group: string;
|
|
276
334
|
item: string;
|
|
277
335
|
};
|
|
336
|
+
pump: {
|
|
337
|
+
group: string;
|
|
338
|
+
item: string;
|
|
339
|
+
};
|
|
278
340
|
conflict: {
|
|
279
341
|
group: string;
|
|
280
342
|
rect: string;
|
|
@@ -294,6 +356,26 @@ type ComponentsClassNames = {
|
|
|
294
356
|
caveFill: string;
|
|
295
357
|
constructionRect: string;
|
|
296
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
|
+
};
|
|
297
379
|
highlights: {
|
|
298
380
|
geologicGroup: string;
|
|
299
381
|
constructionGroup: string;
|
|
@@ -305,17 +387,14 @@ type ComponentsClassNames = {
|
|
|
305
387
|
};
|
|
306
388
|
};
|
|
307
389
|
/** Keys identifying which tooltip types are active. Pass to `RenderConfig.tooltips` to control visibility. */
|
|
308
|
-
type TooltipKey = 'geology' | 'hole' | 'surfaceCase' | 'holeFill' | 'wellCase' | 'wellScreen' | 'reduction' | 'centralizer' | 'conflict' | 'fracture' | 'cementPad' | 'cave';
|
|
390
|
+
type TooltipKey = 'geology' | 'hole' | 'surfaceCase' | 'holeFill' | 'wellCase' | 'wellScreen' | 'reduction' | 'centralizer' | 'pump' | 'conflict' | 'fracture' | 'cementPad' | 'cave';
|
|
309
391
|
/**
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
*
|
|
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.
|
|
314
396
|
*/
|
|
315
|
-
type RenderLocalizedText =
|
|
316
|
-
pt: string;
|
|
317
|
-
en?: string;
|
|
318
|
-
} | string;
|
|
397
|
+
type RenderLocalizedText = LanguageText<'pt'> | string;
|
|
319
398
|
/**
|
|
320
399
|
* Shape shared by `RenderConfig.tooltipLabels` (resolved, `T = string`) and
|
|
321
400
|
* `RenderLabelPack.tooltipLabels` (authoring, `T = RenderLocalizedText`) —
|
|
@@ -349,6 +428,8 @@ type TooltipLabels<T = string> = {
|
|
|
349
428
|
wellScreen: {
|
|
350
429
|
title: T;
|
|
351
430
|
slot: T;
|
|
431
|
+
material: T;
|
|
432
|
+
slotType: T;
|
|
352
433
|
};
|
|
353
434
|
reduction: {
|
|
354
435
|
title: T;
|
|
@@ -358,6 +439,19 @@ type TooltipLabels<T = string> = {
|
|
|
358
439
|
depth: T;
|
|
359
440
|
spacing: T;
|
|
360
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
|
+
};
|
|
361
455
|
conflict: {
|
|
362
456
|
title: T;
|
|
363
457
|
};
|
|
@@ -402,7 +496,22 @@ type RenderLabelPack = {
|
|
|
402
496
|
cave: RenderLocalizedText;
|
|
403
497
|
caveWater: RenderLocalizedText;
|
|
404
498
|
};
|
|
499
|
+
columnHeaders: Record<keyof RenderConfig['columnHeaders']['labels'], RenderLocalizedText>;
|
|
500
|
+
continuation: {
|
|
501
|
+
prefix: RenderLocalizedText;
|
|
502
|
+
};
|
|
503
|
+
overlap: {
|
|
504
|
+
label: RenderLocalizedText;
|
|
505
|
+
};
|
|
405
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';
|
|
406
515
|
/** Full rendering behaviour configuration. Use `INTERACTIVE_RENDER_CONFIG` or `STATIC_RENDER_CONFIG` as a starting point. */
|
|
407
516
|
type RenderConfig = {
|
|
408
517
|
zoom: boolean;
|
|
@@ -450,9 +559,34 @@ type RenderConfig = {
|
|
|
450
559
|
};
|
|
451
560
|
};
|
|
452
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
|
+
*/
|
|
453
568
|
cementPad: {
|
|
454
|
-
|
|
455
|
-
|
|
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;
|
|
456
590
|
};
|
|
457
591
|
surfaceCase: {
|
|
458
592
|
diameterPaddingRatio: number;
|
|
@@ -461,10 +595,27 @@ type RenderConfig = {
|
|
|
461
595
|
/** Half the marker height in pixels (constant regardless of zoom). */
|
|
462
596
|
markerHalfHeight: number;
|
|
463
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
|
+
};
|
|
464
609
|
};
|
|
465
610
|
textures?: TexturesConfig;
|
|
466
611
|
constructionLabels: {
|
|
467
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';
|
|
468
619
|
xOffset: number;
|
|
469
620
|
labelRadius: number;
|
|
470
621
|
labelMaxWidth?: number;
|
|
@@ -477,8 +628,17 @@ type RenderConfig = {
|
|
|
477
628
|
labels: {
|
|
478
629
|
/** false = hide all; true = show all; array = show only listed types */
|
|
479
630
|
active: boolean | ('lithology' | 'fractures' | 'caves')[];
|
|
480
|
-
/** Fine-grained lithology sub-item control;
|
|
481
|
-
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
|
+
};
|
|
482
642
|
typeLabels?: {
|
|
483
643
|
fracture?: string;
|
|
484
644
|
fractureWater?: string;
|
|
@@ -510,6 +670,46 @@ type RenderConfig = {
|
|
|
510
670
|
outerEdgeWidth: number;
|
|
511
671
|
};
|
|
512
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
|
+
};
|
|
513
713
|
highlights: {
|
|
514
714
|
stroke: string;
|
|
515
715
|
strokeWidth: number;
|
|
@@ -545,6 +745,7 @@ type LegendRenderConfig = {
|
|
|
545
745
|
wellScreen: string;
|
|
546
746
|
reduction: string;
|
|
547
747
|
centralizer: string;
|
|
748
|
+
pump: string;
|
|
548
749
|
cementPad: string;
|
|
549
750
|
conflict: string;
|
|
550
751
|
};
|
|
@@ -566,6 +767,18 @@ type SvgInstance = {
|
|
|
566
767
|
top: number;
|
|
567
768
|
bottom: number;
|
|
568
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;
|
|
569
782
|
};
|
|
570
783
|
/**
|
|
571
784
|
* Attaches an optional stable render identity to any feature type.
|
|
@@ -611,21 +824,56 @@ type RenderableWell = Omit<Well, 'lithology' | 'fractures' | 'caves' | 'bore_hol
|
|
|
611
824
|
declare const RENDER_LABELS: RenderLabelPack;
|
|
612
825
|
/**
|
|
613
826
|
* Returns a copy of `config` with `constructionLabels.labels`, `legend.labels`,
|
|
614
|
-
* `tooltipLabels`,
|
|
615
|
-
* `
|
|
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.
|
|
616
830
|
*/
|
|
617
831
|
declare function applyRenderLocale(config: RenderConfig, locale: 'en' | 'pt'): RenderConfig;
|
|
618
832
|
declare const DEFAULT_WELL_THEME: WellTheme;
|
|
619
833
|
declare const STATIC_RENDER_CONFIG: RenderConfig;
|
|
620
834
|
declare const INTERACTIVE_RENDER_CONFIG: RenderConfig;
|
|
621
835
|
|
|
836
|
+
type LegendLabelKey = keyof LegendRenderConfig['labels'];
|
|
837
|
+
/**
|
|
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.
|
|
840
|
+
*/
|
|
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'>;
|
|
622
859
|
/**
|
|
623
|
-
*
|
|
624
|
-
*
|
|
860
|
+
* Lists the legend entries `profile` needs, in display order, labeled from
|
|
861
|
+
* `labels` (defaults to the built-in Portuguese labels).
|
|
625
862
|
*/
|
|
626
|
-
declare function
|
|
627
|
-
|
|
628
|
-
|
|
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;
|
|
629
877
|
|
|
630
878
|
/**
|
|
631
879
|
* SVG-based renderer for geological well profiles.
|
|
@@ -677,6 +925,20 @@ declare class WellRenderer {
|
|
|
677
925
|
private initInstanceSvg;
|
|
678
926
|
/** Renders a standalone legend into the element matched by `selector`. */
|
|
679
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;
|
|
680
942
|
/**
|
|
681
943
|
* Multiplies the current zoom scale by `factor` (e.g. `1.25` to zoom in,
|
|
682
944
|
* `1 / 1.25` to zoom out) on every panel. No-op if both `renderConfig.zoom`
|
|
@@ -693,13 +955,21 @@ declare class WellRenderer {
|
|
|
693
955
|
* Returns `1` if zoom/pan is disabled or `prepareSvg()` hasn't run yet.
|
|
694
956
|
*/
|
|
695
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;
|
|
696
964
|
/**
|
|
697
965
|
* Initialises the SVG DOM structure and preloads FGDC textures.
|
|
698
966
|
* Must be called once before the first `draw()`.
|
|
699
967
|
*/
|
|
700
968
|
prepareSvg(): Promise<void>;
|
|
701
969
|
/**
|
|
702
|
-
* 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}).
|
|
703
973
|
* @param profile - The well data to render.
|
|
704
974
|
* @param options.units - Override the instance-level measurement units for this render.
|
|
705
975
|
* @param options.locale - Override the instance-level locale for this render.
|
|
@@ -713,13 +983,6 @@ declare class WellRenderer {
|
|
|
713
983
|
private drawLogToInstance;
|
|
714
984
|
}
|
|
715
985
|
|
|
716
|
-
declare function drawWellLegend(selector: string, profile: Well, options?: {
|
|
717
|
-
config?: Partial<LegendRenderConfig>;
|
|
718
|
-
theme?: Partial<WellTheme>;
|
|
719
|
-
classNames?: ComponentsClassNames['legend'];
|
|
720
|
-
textures?: TexturesConfig;
|
|
721
|
-
}): void;
|
|
722
|
-
|
|
723
986
|
/**
|
|
724
987
|
* Formats a depth value in metres to the active length unit string, rounded
|
|
725
988
|
* (never raw floating-point) and using the target locale's decimal separator.
|
|
@@ -740,10 +1003,27 @@ declare function getLengthUnit(units: LengthUnits): string;
|
|
|
740
1003
|
*/
|
|
741
1004
|
declare function getDiameterUnit(units: DiameterUnits, locale?: 'en' | 'pt'): string;
|
|
742
1005
|
/**
|
|
743
|
-
* Resolves a
|
|
744
|
-
*
|
|
745
|
-
*
|
|
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).
|
|
746
1009
|
*/
|
|
747
1010
|
declare function resolveRenderLabel(value: RenderLocalizedText, locale: 'en' | 'pt'): string;
|
|
748
1011
|
|
|
749
|
-
|
|
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 };
|