Skip to content

Commit 1550e05

Browse files
committed
use useMutation in Models.tsx
1 parent 47daddb commit 1550e05

3 files changed

Lines changed: 17 additions & 53 deletions

File tree

frontend/src/App.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import SimulationResult from "./pages/SimulationResult";
1212
import DynamicBreadcrumbs from "./components/DynamicBreadcrumbs";
1313
import Models from "./pages/Models";
1414
import { AvailableModelsProvider } from "./contexts/ModelContext";
15-
import { SimulationResultsProvider } from "./contexts/SimulationContext";
1615
import { SettingsProvider } from "./contexts/SettingsContext";
1716

1817
const AppContainer = styled.div`
@@ -44,12 +43,7 @@ const BreadcrumbContainer = styled.div`
4443
margin-bottom: 20px;
4544
`;
4645

47-
const providers: React.FC<{ children: React.ReactNode }>[] = [
48-
SettingsProvider,
49-
AvailableModelsProvider,
50-
SimulationResultsProvider,
51-
Router,
52-
];
46+
const providers: React.FC<{ children: React.ReactNode }>[] = [SettingsProvider, AvailableModelsProvider, Router];
5347

5448
const routes: Record<string, React.FC> = {
5549
"/": Dashboard,

frontend/src/contexts/SimulationContext.tsx

Lines changed: 0 additions & 42 deletions
This file was deleted.

frontend/src/pages/Models.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import { ModelConfig } from "@/dto/FormConfig";
55
import ModelInputs from "@/components/ModelInputs";
66
import Results from "./Results";
77
import { useAvailableModels } from "@/contexts/ModelContext";
8-
import { useSimulation } from "@/contexts/SimulationContext";
98
import SaveResult from "@/components/SaveResult";
109
import { SimulationResults } from "@/dto/SimulationResults";
1110
import ModelDescription from "@/components/ModelDescription.tsx";
1211
import styled from "styled-components";
1312
import NoResults from "@/components/Simulation/NoResults.tsx";
1413
import Working from "@/components/Simulation/Working.tsx";
14+
import { useMutation, useQuery } from "@tanstack/react-query";
15+
import { getResultForSimulation, startSimulation } from "@/api/api.tsx";
16+
import { Divider } from "@equinor/eds-core-react";
1517

1618
const mediaLarge = "@media (min-width: 768px)";
1719

@@ -39,7 +41,16 @@ const Main = styled.div`
3941
const Models: React.FC = () => {
4042
const [currentModel, setCurrentModel] = useState<ModelConfig | undefined>(undefined);
4143
const { models } = useAvailableModels();
42-
const { setModelInput, simulationResults, loading, modelInput } = useSimulation();
44+
45+
const { data: simulationId, mutate: setModelInput } = useMutation({
46+
mutationFn: startSimulation,
47+
});
48+
49+
const { data: simulationResults, isLoading } = useQuery({
50+
queryKey: ["simulation", startSimulation],
51+
queryFn: () => getResultForSimulation(simulationId!),
52+
enabled: simulationId !== undefined,
53+
});
4354

4455
// Set the defaulted selected model to the first without access error.
4556
useEffect(() => {
@@ -49,7 +60,7 @@ const Models: React.FC = () => {
4960
}, [models, currentModel, setCurrentModel]);
5061

5162
let mainWidget: ReactNode | null = null;
52-
if (loading) {
63+
if (isLoading) {
5364
mainWidget = <Working />;
5465
} else if (simulationResults === undefined) {
5566
mainWidget = <NoResults />;
@@ -76,9 +87,10 @@ const Models: React.FC = () => {
7687
))}
7788
{simulationResults && (
7889
<>
90+
<Divider />
7991
<SaveResult
8092
props={{
81-
parameters: modelInput?.parameters || {},
93+
parameters: simulationResults.modelInput.parameters || {},
8294
selectedModel: currentModel?.displayName || "",
8395
result: simulationResults ?? ({} as SimulationResults),
8496
}}

0 commit comments

Comments
 (0)