Skip to content

Commit 02e76f0

Browse files
committed
front: remove setCurrentSimulationInputs in stdcm form
Signed-off-by: Clara Ni <[email protected]>
1 parent 698b8f4 commit 02e76f0

File tree

8 files changed

+53
-84
lines changed

8 files changed

+53
-84
lines changed

front/src/applications/stdcmV2/components/StdcmConfig.tsx

+5-15
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import StdcmVias from './StdcmVias';
2020
import StdcmWarningBox from './StdcmWarningBox';
2121
import useStaticPathfinding from '../hooks/useStaticPathfinding';
2222
import { ArrivalTimeTypes, StdcmConfigErrorTypes } from '../types';
23-
import type { StdcmConfigErrors, StdcmSimulation, StdcmSimulationInputs } from '../types';
23+
import type { StdcmConfigErrors } from '../types';
2424
import checkStdcmConfigErrors from '../utils/checkStdcmConfigErrors';
2525

2626
/**
@@ -32,8 +32,6 @@ type StdcmConfigProps = {
3232
isPending: boolean;
3333
launchStdcmRequest: () => Promise<void>;
3434
retainedSimulationIndex: number;
35-
selectedSimulation?: StdcmSimulation;
36-
setCurrentSimulationInputs: React.Dispatch<React.SetStateAction<StdcmSimulationInputs>>;
3735
showBtnToLaunchSimulation: boolean;
3836
};
3937

@@ -42,8 +40,6 @@ const StdcmConfig = ({
4240
isPending,
4341
launchStdcmRequest,
4442
retainedSimulationIndex,
45-
selectedSimulation,
46-
setCurrentSimulationInputs,
4743
showBtnToLaunchSimulation,
4844
}: StdcmConfigProps) => {
4945
const { t } = useTranslation('stdcm');
@@ -73,12 +69,6 @@ const StdcmConfig = ({
7369

7470
const disabled = isPending || retainedSimulationIndex > -1;
7571

76-
const inputsProps = {
77-
disabled,
78-
selectedSimulation,
79-
setCurrentSimulationInputs,
80-
};
81-
8272
const startSimulation = () => {
8373
const isPathfindingFailed = !!pathfinding && pathfinding.status !== 'success';
8474
const formErrorsStatus = checkStdcmConfigErrors(
@@ -144,15 +134,15 @@ const StdcmConfig = ({
144134
<div className="d-flex">
145135
<div className="stdcm-v2-simulation-inputs">
146136
<div className="stdcm-v2-consist-container">
147-
<StdcmConsist {...inputsProps} />
137+
<StdcmConsist disabled={disabled} />
148138
</div>
149139
<div className="stdcm-v2__separator" />
150140
<div className="stdcm-v2-simulation-itinerary">
151141
{/* //TODO: use them when we implement this feature #403 */}
152142
{/* <StdcmDefaultCard text="Indiquer le sillon antérieur" Icon={<ArrowUp size="lg" />} /> */}
153-
<StdcmOrigin {...inputsProps} origin={origin} />
154-
<StdcmVias {...inputsProps} />
155-
<StdcmDestination {...inputsProps} destination={destination} />
143+
<StdcmOrigin disabled={disabled} origin={origin} />
144+
<StdcmVias disabled={disabled} />
145+
<StdcmDestination disabled={disabled} destination={destination} />
156146
{/* <StdcmDefaultCard text="Indiquer le sillon postérieur" Icon={<ArrowDown size="lg" />} /> */}
157147
<div
158148
className={cx('stdcm-v2-launch-request', {

front/src/applications/stdcmV2/components/StdcmConsist.tsx

+4-20
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const ConsistCardTitle = ({
3131
);
3232
};
3333

34-
const StdcmConsist = ({ setCurrentSimulationInputs, disabled = false }: StdcmConfigCardProps) => {
34+
const StdcmConsist = ({ disabled = false }: StdcmConfigCardProps) => {
3535
const { t } = useTranslation('stdcm');
3636
const { speedLimitByTag, speedLimitsByTags, dispatchUpdateSpeedLimitByTag } =
3737
useStoreDataForSpeedLimitByTagSelector({ isStdcm: true });
@@ -79,12 +79,14 @@ const StdcmConsist = ({ setCurrentSimulationInputs, disabled = false }: StdcmCon
7979
const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {
8080
searchRollingStock(e.target.value);
8181
if (e.target.value.trim().length === 0) {
82-
updateRollingStockID(undefined);
82+
dispatch(updateRollingStockID(undefined));
83+
dispatchUpdateSpeedLimitByTag(null);
8384
}
8485
};
8586

8687
const onSelectSuggestion = (option?: LightRollingStockWithLiveries) => {
8788
dispatch(updateRollingStockID(option?.id));
89+
dispatchUpdateSpeedLimitByTag(null);
8890
};
8991

9092
useEffect(() => {
@@ -93,26 +95,8 @@ const StdcmConsist = ({ setCurrentSimulationInputs, disabled = false }: StdcmCon
9395
} else {
9496
searchRollingStock('');
9597
}
96-
setCurrentSimulationInputs((prevState) => ({
97-
...prevState,
98-
consist: {
99-
tractionEngine: rollingStock,
100-
},
101-
}));
10298
}, [rollingStock]);
10399

104-
useEffect(() => {
105-
if (speedLimitByTag) {
106-
setCurrentSimulationInputs((prevState) => ({
107-
...prevState,
108-
consist: {
109-
...prevState?.consist,
110-
speedLimitByTag,
111-
},
112-
}));
113-
}
114-
}, [speedLimitByTag]);
115-
116100
return (
117101
<StdcmCard
118102
name={t('consist.consist')}

front/src/applications/stdcmV2/components/StdcmDestination.tsx

+2-19
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useMemo, useState } from 'react';
1+
import { useMemo, useState } from 'react';
22

33
import { useTranslation } from 'react-i18next';
44

@@ -7,7 +7,6 @@ import { useOsrdConfActions } from 'common/osrdContext';
77
import type { StdcmConfSliceActions } from 'reducers/osrdconf/stdcmConf';
88
import type { PathStep } from 'reducers/osrdconf/types';
99
import { useAppDispatch } from 'store';
10-
import { replaceElementAtIndex } from 'utils/array';
1110
import { extractDateAndTimefromISO, generateISODateFromDateTime } from 'utils/date';
1211

1312
import StdcmCard from './StdcmCard';
@@ -17,7 +16,6 @@ import DEFAULT_TOLERANCE from '../consts';
1716
import { ArrivalTimeTypes, type ScheduleConstraint, type StdcmConfigCardProps } from '../types';
1817

1918
const StdcmDestination = ({
20-
setCurrentSimulationInputs,
2119
disabled = false,
2220
destination,
2321
}: StdcmConfigCardProps & {
@@ -26,9 +24,7 @@ const StdcmDestination = ({
2624
const { t } = useTranslation('stdcm');
2725
const dispatch = useAppDispatch();
2826

29-
const [arrivalScheduleConstraint, setArrivalScheduleConstraint] = useState<
30-
ScheduleConstraint | undefined
31-
>();
27+
const [arrivalScheduleConstraint, setArrivalScheduleConstraint] = useState<ScheduleConstraint>();
3228

3329
const {
3430
updateDestination,
@@ -50,19 +46,6 @@ const StdcmDestination = ({
5046
[destination]
5147
);
5248

53-
useEffect(() => {
54-
setCurrentSimulationInputs((prevState) => ({
55-
...prevState,
56-
pathSteps: replaceElementAtIndex(
57-
prevState?.pathSteps,
58-
prevState?.pathSteps.length - 1,
59-
destination
60-
),
61-
destination,
62-
destinationTime: destinationArrival?.arrivalTime,
63-
}));
64-
}, [destination]);
65-
6649
const updateDestinationPoint = (pathStep: PathStep | null) => {
6750
if (!pathStep || !arrivalScheduleConstraint) {
6851
dispatch(updateDestination(pathStep));

front/src/applications/stdcmV2/components/StdcmOrigin.tsx

+2-15
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useMemo, useState } from 'react';
1+
import { useMemo, useState } from 'react';
22

33
import { useTranslation } from 'react-i18next';
44

@@ -7,7 +7,6 @@ import { useOsrdConfActions } from 'common/osrdContext';
77
import type { StdcmConfSliceActions } from 'reducers/osrdconf/stdcmConf';
88
import type { PathStep } from 'reducers/osrdconf/types';
99
import { useAppDispatch } from 'store';
10-
import { replaceElementAtIndex } from 'utils/array';
1110
import { extractDateAndTimefromISO, generateISODateFromDateTime } from 'utils/date';
1211

1312
import StdcmCard from './StdcmCard';
@@ -17,7 +16,6 @@ import DEFAULT_TOLERANCE from '../consts';
1716
import { ArrivalTimeTypes, type ScheduleConstraint, type StdcmConfigCardProps } from '../types';
1817

1918
const StdcmOrigin = ({
20-
setCurrentSimulationInputs,
2119
disabled = false,
2220
origin,
2321
}: StdcmConfigCardProps & {
@@ -26,9 +24,7 @@ const StdcmOrigin = ({
2624
const { t } = useTranslation('stdcm');
2725
const dispatch = useAppDispatch();
2826

29-
const [arrivalScheduleConstraint, setArrivalScheduleConstraint] = useState<
30-
ScheduleConstraint | undefined
31-
>();
27+
const [arrivalScheduleConstraint, setArrivalScheduleConstraint] = useState<ScheduleConstraint>();
3228

3329
const { updateOrigin, updateOriginArrival, updateOriginArrivalType, updateOriginTolerances } =
3430
useOsrdConfActions() as StdcmConfSliceActions;
@@ -44,15 +40,6 @@ const StdcmOrigin = ({
4440
[origin]
4541
);
4642

47-
useEffect(() => {
48-
setCurrentSimulationInputs((prevState) => ({
49-
...prevState,
50-
pathSteps: replaceElementAtIndex(prevState?.pathSteps, 0, origin),
51-
departureDate: originArrival?.arrivalDate,
52-
departureTime: originArrival?.arrivalTime,
53-
}));
54-
}, [origin]);
55-
5643
const updateOriginPoint = (pathStep: PathStep | null) => {
5744
if (!pathStep || !arrivalScheduleConstraint) {
5845
dispatch(updateOrigin(pathStep));

front/src/applications/stdcmV2/components/StdcmVias.tsx

+1-8
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import StdcmStopType from './StdcmStopType';
2222
import { StdcmStopTypes } from '../types';
2323
import type { StdcmConfigCardProps } from '../types';
2424

25-
const StdcmVias = ({ disabled = false, setCurrentSimulationInputs }: StdcmConfigCardProps) => {
25+
const StdcmVias = ({ disabled = false }: StdcmConfigCardProps) => {
2626
const { t } = useTranslation('stdcm');
2727
const dispatch = useAppDispatch();
2828
const { getPathSteps } = useOsrdConfSelectors();
@@ -103,13 +103,6 @@ const StdcmVias = ({ disabled = false, setCurrentSimulationInputs }: StdcmConfig
103103
});
104104
}, [stopTypes, pathSteps]);
105105

106-
useEffect(() => {
107-
setCurrentSimulationInputs((prevState) => ({
108-
...prevState,
109-
pathSteps,
110-
}));
111-
}, [pathSteps]);
112-
113106
return (
114107
<div className="stdcm-v2-vias-list">
115108
{intermediatePoints.length > 0 &&
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { useMemo } from 'react';
2+
3+
import { useSelector } from 'react-redux';
4+
5+
import { useOsrdConfSelectors } from 'common/osrdContext';
6+
import { useStoreDataForRollingStockSelector } from 'modules/rollingStock/components/RollingStockSelector/useStoreDataForRollingStockSelector';
7+
import type { StdcmConfSelectors } from 'reducers/osrdconf/stdcmConf/selectors';
8+
import { extractDateAndTimefromISO } from 'utils/date';
9+
10+
import type { StdcmSimulationInputs } from '../types';
11+
12+
const useStdcmForm = (): StdcmSimulationInputs => {
13+
const { getPathSteps, getSpeedLimitByTag } = useOsrdConfSelectors() as StdcmConfSelectors;
14+
const pathSteps = useSelector(getPathSteps);
15+
const speedLimitByTag = useSelector(getSpeedLimitByTag);
16+
const { rollingStock } = useStoreDataForRollingStockSelector();
17+
18+
const currentSimulationInputs = useMemo(() => {
19+
const origin = pathSteps.at(0);
20+
const originArrival = origin?.arrival ? extractDateAndTimefromISO(origin.arrival) : undefined;
21+
22+
return {
23+
pathSteps,
24+
departureDate: originArrival?.arrivalDate,
25+
departureTime: originArrival?.arrivalTime,
26+
consist: {
27+
tractionEngine: rollingStock,
28+
speedLimitByTag,
29+
},
30+
};
31+
}, [pathSteps, rollingStock, speedLimitByTag]);
32+
33+
return currentSimulationInputs;
34+
};
35+
36+
export default useStdcmForm;

front/src/applications/stdcmV2/types.ts

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ export type StdcmSimulation = {
2929

3030
/** This type is used for StdcmConsist, StdcmOrigin, StdcmDestination and StdcmVias components */
3131
export type StdcmConfigCardProps = {
32-
setCurrentSimulationInputs: React.Dispatch<React.SetStateAction<StdcmSimulationInputs>>;
3332
disabled?: boolean;
3433
};
3534

front/src/applications/stdcmV2/views/StdcmViewV2.tsx

+3-6
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,12 @@ import StdcmLoader from '../components/StdcmLoader';
1616
import StdcmResults from '../components/StdcmResults';
1717
import StdcmStatusBanner from '../components/StdcmStatusBanner';
1818
import useStdcmEnvironment, { NO_CONFIG_FOUND_MSG } from '../hooks/useStdcmEnv';
19-
import type { StdcmSimulation, StdcmSimulationInputs } from '../types';
19+
import useStdcmForm from '../hooks/useStdcmForm';
20+
import type { StdcmSimulation } from '../types';
2021

2122
const StdcmViewV2 = () => {
2223
// TODO : refacto. state useStdcm. Maybe we can merge some state together in order to reduce the number of refresh
23-
const [currentSimulationInputs, setCurrentSimulationInputs] = useState<StdcmSimulationInputs>({
24-
pathSteps: [null, null], // origin and destination are not set yet. We use the same logic as in the store.
25-
});
24+
const currentSimulationInputs = useStdcmForm();
2625
const [simulationsList, setSimulationsList] = useState<StdcmSimulation[]>([]);
2726
const [selectedSimulationIndex, setSelectedSimulationIndex] = useState(-1);
2827
const [showStatusBanner, setShowStatusBanner] = useState(false);
@@ -181,13 +180,11 @@ const StdcmViewV2 = () => {
181180
) : (
182181
<div>
183182
<StdcmConfig
184-
selectedSimulation={selectedSimulation}
185183
isPending={isPending}
186184
isDebugMode={isDebugMode}
187185
showBtnToLaunchSimulation={showBtnToLaunchSimulation}
188186
retainedSimulationIndex={retainedSimulationIndex}
189187
launchStdcmRequest={launchStdcmRequest}
190-
setCurrentSimulationInputs={setCurrentSimulationInputs}
191188
/>
192189

193190
{isPending && <StdcmLoader cancelStdcmRequest={cancelStdcmRequest} ref={loaderRef} />}

0 commit comments

Comments
 (0)