Skip to content

Commit d36424c

Browse files
committed
front: move useSimulationResults in SimulationResults
Moving this hook in SimulationResults avoids unnecessary renders and bring the code closer to where it is used. Signed-off-by: Clara Ni <clara.ni@outlook.fr>
1 parent 255cf0a commit d36424c

File tree

4 files changed

+18
-23
lines changed

4 files changed

+18
-23
lines changed

front/src/applications/operationalStudies/components/Scenario/ScenarioContent.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ const ScenarioContent = ({
5252
const [isMacro, setIsMacro] = useState(false);
5353
const {
5454
selectedTrainId,
55+
selectedTrainSummary,
5556
trainScheduleSummaries,
5657
trainSchedules,
5758
projectionData,
58-
simulationResults,
5959
conflicts,
6060
upsertTrainSchedules,
6161
removeTrains,
@@ -209,9 +209,9 @@ const ScenarioContent = ({
209209
scenarioData={{ name: scenario.name, infraName: scenario.infra_name }}
210210
collapsedTimetable={collapsedTimetable}
211211
projectionData={projectionData}
212-
simulationResults={simulationResults}
213212
infraId={infra.id}
214213
conflicts={conflicts}
214+
selectedTrainSummary={selectedTrainSummary}
215215
/>
216216
)
217217
)}

front/src/applications/operationalStudies/hooks/useScenarioData.ts

+3-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import { mapBy } from 'utils/types';
2222
import useAutoUpdateProjection from './useAutoUpdateProjection';
2323
import useLazyLoadTrains from './useLazyLoadTrains';
2424
import usePathProjection from './usePathProjection';
25-
import useSimulationResults from './useSimulationResults';
2625

2726
const useScenarioData = (
2827
scenario: ScenarioResponse,
@@ -45,8 +44,6 @@ const useScenarioData = (
4544

4645
const projectionPath = usePathProjection(infra);
4746

48-
const simulationResults = useSimulationResults();
49-
5047
const {
5148
trainScheduleSummariesById,
5249
projectedTrainsById,
@@ -165,6 +162,9 @@ const useScenarioData = (
165162

166163
return {
167164
selectedTrainId,
165+
selectedTrainSummary: selectedTrainId
166+
? trainScheduleSummariesById.get(selectedTrainId)
167+
: undefined,
168168
trainScheduleSummaries,
169169
trainSchedules,
170170
projectionData:
@@ -179,12 +179,6 @@ const useScenarioData = (
179179
},
180180
}
181181
: undefined,
182-
simulationResults: {
183-
...simulationResults,
184-
selectedTrainSummary: selectedTrainId
185-
? trainScheduleSummariesById.get(selectedTrainId)
186-
: undefined,
187-
},
188182
conflicts,
189183
removeTrains,
190184
upsertTrainSchedules,

front/src/applications/operationalStudies/types.ts

-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import type {
1515
} from 'common/api/osrdEditoastApi';
1616
import type { RangedValue } from 'common/types';
1717
import type { SuggestedOP } from 'modules/trainschedule/components/ManageTrainSchedule/types';
18-
import type { TrainScheduleWithDetails } from 'modules/trainschedule/components/Timetable/types';
1918
import type { ArrayElement } from 'utils/types';
2019

2120
export interface Step {
@@ -163,7 +162,6 @@ export type SimulationResultsData = {
163162
selectedTrainSchedule?: TrainScheduleResult;
164163
selectedTrainRollingStock?: RollingStockWithLiveries;
165164
selectedTrainPowerRestrictions: LayerData<PowerRestrictionValues>[];
166-
selectedTrainSummary?: TrainScheduleWithDetails;
167165
trainSimulation?: SimulationResponseSuccess;
168166
pathProperties?: PathPropertiesFormatted;
169167
pathLength?: number;

front/src/applications/operationalStudies/views/SimulationResults.tsx

+13-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { ChevronLeft, ChevronRight } from '@osrd-project/ui-icons';
44
import cx from 'classnames';
55
import { useTranslation } from 'react-i18next';
66

7-
import type { SimulationResultsData } from 'applications/operationalStudies/types';
87
import type { Conflict } from 'common/api/osrdEditoastApi';
98
import SimulationWarpedMap from 'common/Map/WarpedMap/SimulationWarpedMap';
109
import ResizableSection from 'common/ResizableSection';
@@ -21,10 +20,13 @@ import { useFormattedOperationalPoints } from 'modules/simulationResult/hooks/us
2120
import SimulationResultExport from 'modules/simulationResult/SimulationResultExport/SimulationResultsExport';
2221
import type { ProjectionData } from 'modules/simulationResult/types';
2322
import TimesStopsOutput from 'modules/timesStops/TimesStopsOutput';
23+
import type { TrainScheduleWithDetails } from 'modules/trainschedule/components/Timetable/types';
2424
import { updateViewport, type Viewport } from 'reducers/map';
2525
import { useAppDispatch } from 'store';
2626
import { getPointCoordinates } from 'utils/geometry';
2727

28+
import useSimulationResults from '../hooks/useSimulationResults';
29+
2830
const SPEED_SPACE_CHART_HEIGHT = 521.5;
2931
const HANDLE_TAB_RESIZE_HEIGHT = 20;
3032
const MANCHETTE_HEIGHT_DIFF = 76;
@@ -33,29 +35,30 @@ type SimulationResultsProps = {
3335
scenarioData: { name: string; infraName: string };
3436
collapsedTimetable: boolean;
3537
infraId?: number;
36-
simulationResults: SimulationResultsData;
3738
projectionData?: ProjectionData;
39+
selectedTrainSummary?: TrainScheduleWithDetails;
3840
conflicts?: Conflict[];
3941
};
4042

4143
const SimulationResults = ({
4244
scenarioData,
4345
collapsedTimetable,
4446
infraId,
45-
simulationResults: {
47+
projectionData,
48+
selectedTrainSummary,
49+
conflicts = [],
50+
}: SimulationResultsProps) => {
51+
const { t } = useTranslation('simulation');
52+
const dispatch = useAppDispatch();
53+
54+
const {
4655
selectedTrainSchedule,
4756
selectedTrainRollingStock,
4857
selectedTrainPowerRestrictions,
49-
selectedTrainSummary,
5058
trainSimulation,
5159
pathProperties,
5260
path,
53-
},
54-
projectionData,
55-
conflicts = [],
56-
}: SimulationResultsProps) => {
57-
const { t } = useTranslation('simulation');
58-
const dispatch = useAppDispatch();
61+
} = useSimulationResults();
5962

6063
const [extViewport, setExtViewport] = useState<Viewport>();
6164
const [showWarpedMap, setShowWarpedMap] = useState(false);

0 commit comments

Comments
 (0)