Skip to content

Commit

Permalink
Fixes based on review
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgenherje committed Aug 30, 2023
1 parent 95ae3a5 commit 7c86257
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 41 deletions.
4 changes: 2 additions & 2 deletions frontend/src/modules/WellCompletion/loadModule.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { ModuleRegistry } from "@framework/ModuleRegistry";

import { settings } from "./settings";
import { State } from "./state";
import { DataLoadingStatus, State } from "./state";
import { view } from "./view";

const initialState: State = {
dataLoadingStatus: "idle",
dataLoadingStatus: DataLoadingStatus.Idle,
availableTimeSteps: null,
plotData: null,
};
Expand Down
65 changes: 30 additions & 35 deletions frontend/src/modules/WellCompletion/settings.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@ import { Input } from "@lib/components/Input";
import { Label } from "@lib/components/Label";
import { RadioGroup } from "@lib/components/RadioGroup";
import { Switch } from "@lib/components/Switch";
import { resolveClassNames } from "@lib/components/_utils/resolveClassNames";
import { useValidState } from "@lib/hooks/useValidState";
import { resolveClassNames } from "@lib/utils/resolveClassNames";

import { isEqual } from "lodash";

import { useWellCompletionQuery } from "./queryHooks";
import { State } from "./state";
import { DataLoadingStatus, State } from "./state";
import { TimeAggregationType, WellCompletionsDataAccessor } from "./utils/wellCompletionsDataAccessor";

enum RealizationSelection {
Expand All @@ -36,19 +36,14 @@ export const settings = ({ moduleContext, workbenchSession, workbenchServices }:
const [realizationSelection, setRealizationSelection] = React.useState<RealizationSelection>(
RealizationSelection.Aggregated
);
const [selectedEnsembleIdent, setSelectedEnsembleIdent] = useValidState<EnsembleIdent | null>(
null,
[ensembleSet.getEnsembleArr(), (item: Ensemble) => item.getIdent()],
true
);
const [selectedRealizationNumber, setSelectedRealizationNumber] = useValidState<number>(
0,
[
(selectedEnsembleIdent && ensembleSet.findEnsemble(selectedEnsembleIdent)?.getRealizations()) ?? [],
(item: number) => item,
],
true
);
const [selectedEnsembleIdent, setSelectedEnsembleIdent] = useValidState<EnsembleIdent | null>(null, [
ensembleSet.getEnsembleArr(),
(item: Ensemble) => item.getIdent(),
]);
const [selectedRealizationNumber, setSelectedRealizationNumber] = useValidState<number>(0, [
(selectedEnsembleIdent && ensembleSet.findEnsemble(selectedEnsembleIdent)?.getRealizations()) ?? [],
(item: number) => item,
]);

const [selectedTimeStepOptions, setSelectedTimeStepOptions] = React.useState<{
timeStepIndex: number | [number, number] | null;
Expand Down Expand Up @@ -127,11 +122,11 @@ export const settings = ({ moduleContext, workbenchSession, workbenchServices }:
React.useEffect(
function handleQueryStateChange() {
if (wellCompletionQuery.status === "loading" && wellCompletionQuery.fetchStatus === "fetching") {
setDataLoadingStatus("loading");
setDataLoadingStatus(DataLoadingStatus.Loading);
} else if (wellCompletionQuery.status === "error") {
setDataLoadingStatus("error");
setDataLoadingStatus(DataLoadingStatus.Error);
} else if (wellCompletionQuery.status === "success") {
setDataLoadingStatus("idle");
setDataLoadingStatus(DataLoadingStatus.Idle);
}
},
[wellCompletionQuery.status, wellCompletionQuery.fetchStatus]
Expand Down Expand Up @@ -199,14 +194,14 @@ export const settings = ({ moduleContext, workbenchSession, workbenchServices }:
timeAggregationType: newTimeAggregation,
});
} else if (newTimeAggregation === TimeAggregationType.None) {
newTimeStepIndex =
typeof selectedTimeStepOptions.timeStepIndex === "number"
? selectedTimeStepOptions.timeStepIndex
: selectedTimeStepOptions.timeStepIndex
? selectedTimeStepOptions.timeStepIndex[0] < availableTimeSteps.length
? selectedTimeStepOptions.timeStepIndex[0]
: 0
: 0;
if (selectedTimeStepOptions.timeStepIndex === null) {
newTimeStepIndex = 0;
} else if (typeof selectedTimeStepOptions.timeStepIndex === "number") {
newTimeStepIndex = selectedTimeStepOptions.timeStepIndex;
} else {
const firstRangeIndex = selectedTimeStepOptions.timeStepIndex[0];
newTimeStepIndex = firstRangeIndex < availableTimeSteps.length ? firstRangeIndex : 0;
}
setSelectedTimeStepOptions({
timeStepIndex: newTimeStepIndex,
timeAggregationType: newTimeAggregation,
Expand All @@ -216,20 +211,20 @@ export const settings = ({ moduleContext, workbenchSession, workbenchServices }:
createAndSetPlotData(availableTimeSteps, newTimeStepIndex, newTimeAggregation);
}

function handleSelectedTimeStepIndexChange(e: Event, newTimeStepIndex: number | number[]) {
let _timeStepIndex: number | [number, number] = 0;
if (typeof newTimeStepIndex === "number") {
_timeStepIndex = newTimeStepIndex;
setSelectedTimeStepOptions((prev) => ({ ...prev, timeStepIndex: _timeStepIndex }));
} else if (newTimeStepIndex.length >= 2) {
_timeStepIndex = [newTimeStepIndex[0], newTimeStepIndex[1]];
function handleSelectedTimeStepIndexChange(e: Event, newIndex: number | number[]) {
let newTimeStepIndex: number | [number, number] = 0;
if (typeof newIndex === "number") {
newTimeStepIndex = newIndex;
setSelectedTimeStepOptions((prev) => ({ ...prev, timeStepIndex: newTimeStepIndex }));
} else if (newIndex.length >= 2) {
newTimeStepIndex = [newIndex[0], newIndex[1]];
setSelectedTimeStepOptions((prev) => ({
...prev,
timeStepIndex: _timeStepIndex,
timeStepIndex: newTimeStepIndex,
}));
}

createAndSetPlotData(availableTimeSteps, _timeStepIndex, selectedTimeStepOptions.timeAggregationType);
createAndSetPlotData(availableTimeSteps, newTimeStepIndex, selectedTimeStepOptions.timeAggregationType);
}

function handleSearchWellChange(e: React.ChangeEvent<HTMLInputElement>) {
Expand Down
8 changes: 7 additions & 1 deletion frontend/src/modules/WellCompletion/state.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
import { PlotData } from "@webviz/well-completions-plot";

export enum DataLoadingStatus {
Idle = "idle",
Loading = "loading",
Error = "error",
}

export type State = {
dataLoadingStatus: "idle" | "loading" | "error";
dataLoadingStatus: DataLoadingStatus;
plotData: PlotData | null;
availableTimeSteps: string[] | null;
};
6 changes: 3 additions & 3 deletions frontend/src/modules/WellCompletion/view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { ModuleFCProps } from "@framework/Module";
import { CircularProgress } from "@lib/components/CircularProgress";
import { WellCompletionsPlot } from "@webviz/well-completions-plot";

import { State } from "./state";
import { DataLoadingStatus, State } from "./state";

export const view = ({ moduleContext }: ModuleFCProps<State>) => {
const plotData = moduleContext.useStoreValue("plotData");
Expand All @@ -12,11 +12,11 @@ export const view = ({ moduleContext }: ModuleFCProps<State>) => {
return (
<div className="w-full h-full">
{!plotData ? (
dataLoadingStatus === "error" ? (
dataLoadingStatus === DataLoadingStatus.Error ? (
<div className="w-full h-full flex justify-center items-center text-red-500">
Error loading well completion data for selected Ensemble and realization
</div>
) : dataLoadingStatus === "loading" ? (
) : dataLoadingStatus === DataLoadingStatus.Loading ? (
<div className="absolute left-0 right-0 w-full h-full bg-white bg-opacity-80 flex items-center justify-center z-10">
<CircularProgress />
</div>
Expand Down

0 comments on commit 7c86257

Please sign in to comment.