Skip to content

Commit 807fff4

Browse files
fix: StrictMode behaviour (equinor#2139)
- fix StrictMode; (See equinor#2110) - fix missed props.domain in WLV - fix primaryAxes notification processing (TVD/MD switch) - add onDeleteController callback to SyncLogViewer props (equinor#2053 (comment))
1 parent da8be9e commit 807fff4

12 files changed

+227
-154
lines changed

typescript/packages/well-log-viewer/src/Storybook/ExternalLayout.stories.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export const RTCTabsLayout: StoryObj<typeof RTCWellLogViewer> = {
3838
decorators: [tabDecorator],
3939
render: () => (
4040
<React.StrictMode>
41-
<RTCWellLogViewer />,
41+
<RTCWellLogViewer />
4242
</React.StrictMode>
4343
),
4444
};

typescript/packages/well-log-viewer/src/SyncLogViewer.stories.tsx

Lines changed: 44 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ const wellpick = require("../../../../example-data/wellpicks.json");// eslint-di
1010
import { ToggleButton } from "@mui/material";
1111

1212
import SyncLogViewer, { argTypesSyncLogViewerProp } from "./SyncLogViewer";
13-
import type WellLogView from "./components/WellLogView";
1413
import type {
14+
WellLogView,
1515
WellLogController,
1616
TrackMouseEvent,
1717
} from "./components/WellLogView";
@@ -129,7 +129,7 @@ const stories: Meta = {
129129
};
130130
export default stories;
131131

132-
function fillInfo(controller) {
132+
function fillInfo(controller: WellLogController | undefined) {
133133
if (!controller) return "-";
134134
const baseDomain = controller.getContentBaseDomain();
135135
const domain = controller.getContentDomain();
@@ -158,41 +158,41 @@ function fillInfo(controller) {
158158

159159
const Template = (args) => {
160160
const infoRef = React.useRef();
161-
const setInfo = function (info) {
161+
const setInfo = function (info: string) {
162162
if (infoRef.current) infoRef.current.innerHTML = info;
163163
};
164164

165-
const [controller, setController] =
166-
React.useState<WellLogController | null>(null); // the first WellLog
167165
const [controllers, setControllers] = React.useState<WellLogController[]>(
168166
[]
169167
); // all WellLogs
170168

171169
const onCreateController = React.useCallback(
172-
(iWellLog, controller) => {
173-
if (iWellLog === 0) setController(controller);
174-
170+
(iWellLog: number, controller: WellLogController) => {
175171
setControllers((prev) => [...prev, controller]);
176172
},
177-
[controller]
173+
[]
174+
);
175+
const onDeleteController = React.useCallback(
176+
(iWellLog: number, controller: WellLogController) => {
177+
setControllers((prev) => prev.filter((c) => c !== controller));
178+
},
179+
[]
178180
);
179181
const onContentRescale = React.useCallback(
180-
(iWellLog) => {
181-
if (iWellLog === 0) setInfo(fillInfo(controller));
182+
(iWellLog: number) => {
183+
if (iWellLog === 0) setInfo(fillInfo(controllers[0]));
182184
},
183-
[controller]
185+
[controllers]
184186
);
185187
const onContentSelection = React.useCallback(
186188
(/*iWellLog*/) => {
187-
/*if(iWellLog===0)*/ setInfo(fillInfo(controller));
189+
/*if(iWellLog===0)*/ setInfo(fillInfo(controllers[0]));
188190
},
189-
[controller]
191+
[controllers]
190192
);
191193
const handleClick = function () {
192194
for (const ctrl of controllers) {
193-
if (ctrl) {
194-
ctrl.setControllerDefaultZoom();
195-
}
195+
if (ctrl) ctrl.setControllerDefaultZoom();
196196
}
197197
};
198198
const [checked, setChecked] = React.useState(false);
@@ -217,6 +217,7 @@ const Template = (args) => {
217217
id="SyncLogViewer"
218218
{...args}
219219
onCreateController={onCreateController}
220+
onDeleteController={onDeleteController}
220221
onContentRescale={onContentRescale}
221222
onContentSelection={onContentSelection}
222223
onTrackMouseEvent={checked ? onTrackMouseEventCustom : null}
@@ -427,6 +428,7 @@ import WellLogZoomSlider from "./components/WellLogZoomSlider";
427428
import WellLogScaleSelector from "./components/WellLogScaleSelector";
428429
import WellInfoIcon from "@mui/icons-material/FormatListBulleted"; // WaterDrop ShowChart, SearchSharp
429430
import ArrowDownwardIcon from "@mui/icons-material/ArrowDownward";
431+
430432
const iconStyle = {
431433
fontSize: "18px",
432434
verticalAlign: "middle",
@@ -514,7 +516,7 @@ CustomLayout.parameters = {
514516

515517
Default.tags = ["no-screenshot-test"];
516518

517-
const TemplateWithSelection = (args) => {
519+
const TemplateWithSelection = (args: { welllogs: WellLog[] }) => {
518520
const [showWell1, setShowWell1] = React.useState(true);
519521
const [showWell2, setShowWell2] = React.useState(true);
520522
const [showWell3, setShowWell3] = React.useState(true);
@@ -523,25 +525,27 @@ const TemplateWithSelection = (args) => {
523525
[]
524526
); // all WellLogs
525527

526-
const onCreateController = React.useCallback((iWellLog, controller) => {
527-
setControllers((prev) => [...prev, controller]);
528-
}, []);
528+
const onCreateController = React.useCallback(
529+
(iWellLog: number, controller: WellLogController) => {
530+
setControllers((prev) => [...prev, controller]);
531+
},
532+
[]
533+
);
534+
const onDeleteController = React.useCallback(
535+
(iWellLog: number, controller: WellLogController) => {
536+
setControllers((prev) => prev.filter((c) => c !== controller));
537+
},
538+
[]
539+
);
529540

530541
const filtered: WellLog[] = [];
531-
if (showWell1) {
532-
filtered.push(args.welllogs[0]);
533-
}
534-
if (showWell2) {
535-
filtered.push(args.welllogs[1]);
536-
}
537-
if (showWell3) {
538-
filtered.push(args.welllogs[2]);
539-
}
542+
if (showWell1 && args.welllogs[0]) filtered.push(args.welllogs[0]);
543+
if (showWell2 && args.welllogs[1]) filtered.push(args.welllogs[1]);
544+
if (showWell3 && args.welllogs[2]) filtered.push(args.welllogs[2]);
545+
540546
const handleClick = function () {
541547
for (const ctrl of controllers) {
542-
if (ctrl) {
543-
ctrl.setControllerDefaultZoom();
544-
}
548+
if (ctrl) ctrl.setControllerDefaultZoom();
545549
}
546550
};
547551

@@ -557,26 +561,29 @@ const TemplateWithSelection = (args) => {
557561
<div style={{ flexDirection: "row" }}>
558562
<ToggleButton
559563
value="check"
560-
selected={showWell1}
564+
selected={showWell1 && !!args.welllogs[0]}
561565
onChange={() => {
566+
if (!args.welllogs[1]) alert("No args.welllogs[0]");
562567
setShowWell1(!showWell1);
563568
}}
564569
>
565570
Well 1
566571
</ToggleButton>
567572
<ToggleButton
568573
value="check"
569-
selected={showWell2}
574+
selected={showWell2 && !!args.welllogs[1]}
570575
onChange={() => {
576+
if (!args.welllogs[1]) alert("No args.welllogs[1]");
571577
setShowWell2(!showWell2);
572578
}}
573579
>
574580
Well 2
575581
</ToggleButton>
576582
<ToggleButton
577583
value="check"
578-
selected={showWell3}
584+
selected={showWell3 && !!args.welllogs[2]}
579585
onChange={() => {
586+
if (!args.welllogs[2]) alert("No args.welllogs[2]");
580587
setShowWell3(!showWell3);
581588
}}
582589
>
@@ -591,6 +598,7 @@ const TemplateWithSelection = (args) => {
591598
id="SyncLogViewer"
592599
{...argsWithSelection}
593600
onCreateController={onCreateController}
601+
onDeleteController={onDeleteController}
594602
/>
595603
</div>
596604
</div>

0 commit comments

Comments
 (0)