Skip to content

Commit c1d8e87

Browse files
authored
refactor: Clean up of Well log viewer utilities (#2459)
Resolves #2441 Cleans up code in log viewer utilities: reduced duplication, split files, improved readability. - Splits the `tracks.ts` util into multiple specifialized utils to better seperate concerns and make things easier to read - Various existing utils have also been moved around to more fitting utility files - Rewrites the different track management functions to make the util easier to use - Most notably; the track utilities are no longer exported as graph specific variants (i. e `addStackedTrack` and `createGraphTrack` is removed, and a type-agnostic `createTrack` is added instead). - Furthermore, the track utilites no longer support template styles. Instead, styles should be applied to track templates before calling tracks methods. - `WellLogViewer.tsx` has been updated to handle new utility function flow. - Template styles are now applied here, before utilities are called - Some other comps are also modified , but this is mostly just for new import paths - Fixed linting and type errors, and cleaned up imports in log viewer stories. - Fixed some small bugs discovered while working: - Slightly tweaked how `SyncLogViewer` syncs template changes to avoid a possible infinite loop - Made gradient plots not crash (instead they just don't render) if plot data is missing.
1 parent 5fa28e5 commit c1d8e87

35 files changed

+2521
-2258
lines changed

typescript/packages/well-log-viewer/src/Storybook/examples/MapAndWellLogViewer.tsx

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,9 @@
33
import SubsurfaceViewer from "@webviz/subsurface-viewer";
44
import type { WeakValidationMap } from "react";
55
import React from "react";
6-
import type { ColorMapFunction } from "../../components/ColorMapFunction";
76
import WellLogInfoPanel from "../../components/WellLogInfoPanel";
87
import WellLogViewWithScroller from "../../components/WellLogViewWithScroller";
98

10-
import { isEqualRanges } from "../../utils/log-viewer";
11-
129
import { CallbackManager } from "../../components/CallbackManager";
1310
import type {
1411
Template,
@@ -29,7 +26,6 @@ import type { MapMouseEvent } from "@webviz/subsurface-viewer/dist/components/Ma
2926

3027
import { axisMnemos, axisTitles } from "../../utils/axes";
3128
import { deepCopy } from "../../utils/deepcopy";
32-
import { getDiscreteMeta, indexOfElementByName } from "../../utils/tracks";
3329

3430
import type { WellLogSet } from "../../components/WellLogTypes";
3531
import type { WellLogViewOptions } from "../../components/WellLogView";
@@ -38,6 +34,9 @@ import wellLogsJson from "../../../../../../example-data/volve_logs.json";
3834
import templateJson from "../../../../../../example-data/welllog_template_2.json";
3935
import colorTables from "../../../../../../example-data/wellpick_colors.json";
4036
import wellPicks from "../../../../../../example-data/wellpicks.json";
37+
import type { ColorMapFunction } from "../../utils/color-function";
38+
import { indexOfElementByName, isEqualRanges } from "../../utils/arrays";
39+
import { getDiscreteMeta } from "../../utils/well-log";
4140

4241
const wellLogs = wellLogsJson as unknown as WellLogSet[];
4342
const template = templateJson as unknown as Template;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
import Anhydrite from "../../../../../../example-data/patterns/Anhydrite.gif";
2+
import Bitumenious from "../../../../../../example-data/patterns/Bitumenious.gif";
3+
import Browncoal from "../../../../../../example-data/patterns/Browncoal.gif";
4+
import CalcareousDolostone from "../../../../../../example-data/patterns/Calcareous_dolostone.gif";
5+
import Chalk from "../../../../../../example-data/patterns/Chalk.gif";
6+
import Clay from "../../../../../../example-data/patterns/Clay.gif";
7+
import Coal from "../../../../../../example-data/patterns/Coal.gif";
8+
import Conglomerate from "../../../../../../example-data/patterns/Conglomerate.gif";
9+
import DiamondLines from "../../../../../../example-data/patterns/Diamond_lines.gif";
10+
import DolomiticLimestone from "../../../../../../example-data/patterns/Dolomitic_limestone.gif";
11+
import Dolostone from "../../../../../../example-data/patterns/Dolostone.gif";
12+
import DownwardLines from "../../../../../../example-data/patterns/Downward_lines.gif";
13+
import DykesAndSills from "../../../../../../example-data/patterns/Dykes_and_sills.gif";
14+
import EmptyFile from "../../../../../../example-data/patterns/EmptyFile.gif";
15+
import FissileMud from "../../../../../../example-data/patterns/Fissile_mud.gif";
16+
import FissileSilt from "../../../../../../example-data/patterns/Fissile_silt.gif";
17+
import GridLines from "../../../../../../example-data/patterns/Grid_lines.gif";
18+
import Gypsum from "../../../../../../example-data/patterns/Gypsum.gif";
19+
import GypsumAnhydriteUnspecified from "../../../../../../example-data/patterns/Gypsum_anhydrite_unspecified.gif";
20+
import Halite from "../../../../../../example-data/patterns/Halite.gif";
21+
import HorizontalDashed from "../../../../../../example-data/patterns/Horizontal_dashed.gif";
22+
import HorizontalLines from "../../../../../../example-data/patterns/Horizontal_lines.gif";
23+
import Intrusive from "../../../../../../example-data/patterns/Intrusive.gif";
24+
import Limestone from "../../../../../../example-data/patterns/Limestone.gif";
25+
import MaficPlutonic from "../../../../../../example-data/patterns/Mafic_plutonic.gif";
26+
import Marl from "../../../../../../example-data/patterns/Marl.gif";
27+
import Metamorphic from "../../../../../../example-data/patterns/Metamorphic.gif";
28+
import Mud from "../../../../../../example-data/patterns/Mud.gif";
29+
import Raster from "../../../../../../example-data/patterns/Raster.gif";
30+
import SaltGeneral from "../../../../../../example-data/patterns/Salt_general.gif";
31+
import Sand from "../../../../../../example-data/patterns/Sand.gif";
32+
import SedimentBreccia from "../../../../../../example-data/patterns/Sediment_breccia.gif";
33+
import Shale from "../../../../../../example-data/patterns/Shale.gif";
34+
import SilicicPlutonic from "../../../../../../example-data/patterns/Silicic_plutonic.gif";
35+
import Silt from "../../../../../../example-data/patterns/Silt.gif";
36+
import Tuffitt from "../../../../../../example-data/patterns/Tuffitt.gif";
37+
import UpwardLines from "../../../../../../example-data/patterns/Upward_lines.gif";
38+
import VerticalBitumenious from "../../../../../../example-data/patterns/Vertical_bitumenious.gif";
39+
import VerticalCalcareousDolostone from "../../../../../../example-data/patterns/Vertical_calcareous_dolostone.gif";
40+
import VerticalChalk from "../../../../../../example-data/patterns/Vertical_chalk.gif";
41+
import VerticalClaystone from "../../../../../../example-data/patterns/Vertical_claystone.gif";
42+
import VerticalDashed from "../../../../../../example-data/patterns/Vertical_dashed.gif";
43+
import VerticalDolomiticLimestone from "../../../../../../example-data/patterns/Vertical_dolomitic_limestone.gif";
44+
import VerticalDolostone from "../../../../../../example-data/patterns/Vertical_dolostone.gif";
45+
import VerticalFissileMudstone from "../../../../../../example-data/patterns/Vertical_fissile_mudstone.gif";
46+
import VerticalFissileSiltstone from "../../../../../../example-data/patterns/Vertical_fissile_siltstone.gif";
47+
import VerticalLimestone from "../../../../../../example-data/patterns/Vertical_limestone.gif";
48+
import VerticalLines from "../../../../../../example-data/patterns/Vertical_lines.gif";
49+
import VerticalMarl from "../../../../../../example-data/patterns/Vertical_marl.gif";
50+
import VerticalShale from "../../../../../../example-data/patterns/Vertical_shale.gif";
51+
import VerticalTuffitt from "../../../../../../example-data/patterns/Vertical_tuffitt.gif";
52+
import Vulcanic from "../../../../../../example-data/patterns/Vulcanic.gif";
53+
54+
const imagesAndNames = Object.freeze([
55+
{ img: Anhydrite, name: "Anhydrite" },
56+
{ img: Bitumenious, name: "Bitumenious" },
57+
{ img: Browncoal, name: "Browncoal" },
58+
{ img: CalcareousDolostone, name: "Calcareous Dolostone" },
59+
{ img: Chalk, name: "Chalk" },
60+
{ img: Clay, name: "Clay" },
61+
{ img: Coal, name: "Coal" },
62+
{ img: Conglomerate, name: "Conglomerate" },
63+
{ img: DiamondLines, name: "Diamond_lines" },
64+
{ img: DolomiticLimestone, name: "Dolomitic_limestone" },
65+
{ img: Dolostone, name: "Dolostone" },
66+
{ img: DownwardLines, name: "Downward Lines" },
67+
{ img: DykesAndSills, name: "Dykes and Sills" },
68+
{ img: EmptyFile, name: "EmptyFile" },
69+
{ img: FissileMud, name: "Fissile Mud" },
70+
{ img: FissileSilt, name: "Fissile Silt" },
71+
{ img: GridLines, name: "Grid Lines" },
72+
{ img: Gypsum, name: "Gypsum" },
73+
{ img: GypsumAnhydriteUnspecified, name: "Gypsum Anhydrite Unspecified" },
74+
{ img: Halite, name: "Halite" },
75+
{ img: HorizontalDashed, name: "Horizontal Dashed" },
76+
{ img: HorizontalLines, name: "Horizontal Lines" },
77+
{ img: Intrusive, name: "Intrusive" },
78+
{ img: Limestone, name: "Limestone" },
79+
{ img: MaficPlutonic, name: "Mafic Plutonic" },
80+
{ img: Marl, name: "Marl" },
81+
{ img: Metamorphic, name: "Metamorphic" },
82+
{ img: Mud, name: "Mud" },
83+
{ img: Raster, name: "Raster" },
84+
{ img: SaltGeneral, name: "Salt General" },
85+
{ img: Sand, name: "Sand" },
86+
{ img: SedimentBreccia, name: "Sediment Breccia" },
87+
{ img: Shale, name: "Shale" },
88+
{ img: SilicicPlutonic, name: "Silicic Plutonic" },
89+
{ img: Silt, name: "Silt" },
90+
{ img: Tuffitt, name: "Tuffitt" },
91+
{ img: UpwardLines, name: "Upward lines" },
92+
{ img: VerticalBitumenious, name: "Vertical Bitumenious" },
93+
{ img: VerticalCalcareousDolostone, name: "Vertical Calcareous Dolostone" },
94+
{ img: VerticalChalk, name: "Vertical Chalk" },
95+
{ img: VerticalClaystone, name: "Vertical Claystone" },
96+
{ img: VerticalDashed, name: "Vertical Dashed" },
97+
{ img: VerticalDolomiticLimestone, name: "Vertical Dolomitic Limestone" },
98+
{ img: VerticalDolostone, name: "Vertical Dolostone" },
99+
{ img: VerticalFissileMudstone, name: "Vertical Fissile Mudstone" },
100+
{ img: VerticalFissileSiltstone, name: "Vertical Fissile Siltstone" },
101+
{ img: VerticalLimestone, name: "Vertical Limestone" },
102+
{ img: VerticalLines, name: "Vertical Lines" },
103+
{ img: VerticalMarl, name: "Vertical Marl" },
104+
{ img: VerticalShale, name: "Vertical Shale" },
105+
{ img: VerticalTuffitt, name: "Vertical Tuffitt" },
106+
{ img: Vulcanic, name: "Vulcanic" },
107+
]);
108+
109+
export const patternImages = imagesAndNames.map(({ img }) => img);
110+
export const patternNamesEnglish = imagesAndNames.map(({ name }) => name);

0 commit comments

Comments
 (0)