Skip to content

Commit 933ebab

Browse files
committed
fixup! front: select op with map when add train
1 parent decde3b commit 933ebab

File tree

2 files changed

+76
-28
lines changed

2 files changed

+76
-28
lines changed

front/src/modules/trainschedule/components/ManageTrainSchedule/ManageTrainScheduleMap/AddPathStepPopup.tsx

+16-28
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
/* eslint-disable @typescript-eslint/no-explicit-any */
22
import React, { useEffect, useState } from 'react';
33

4-
import { Select } from '@osrd-project/ui-core';
54
import { point } from '@turf/helpers';
65
import { omit } from 'lodash';
76
import { useTranslation } from 'react-i18next';
@@ -24,6 +23,7 @@ import { type PathStep } from 'reducers/osrdconf/types';
2423
import { getPointCoordinates } from 'utils/geometry';
2524

2625
import type { FeatureInfoClick } from '../types';
26+
import OperationalPointPopupDetails from './OperationalPointPopupDetails';
2727

2828
type AddPathStepPopupProps = {
2929
pathProperties?: ManageTrainSchedulePathProperties;
@@ -177,34 +177,22 @@ const AddPathStepPopup = ({
177177
closeOnClick={false}
178178
className="map-popup-click-select"
179179
>
180-
<div className="details">
181-
<div className="details-track">
182-
{featureInfoClick.isOperationalPoint &&
183-
featureInfoClick.feature.properties.extensions_sncf_track_name}
184-
<small>{featureInfoClick.feature.properties.extensions_sncf_line_code}</small>
185-
</div>
186-
<div className="details-line">
187-
{featureInfoClick.isOperationalPoint ? (
188-
<>
189-
{featureInfoClick.feature.properties.extensions_identifier_name} <br />
190-
{featureInfoClick.feature.properties.extensions_sncf_trigram}{' '}
191-
{featureInfoClick.feature.properties.extensions_sncf_ch}
192-
</>
193-
) : (
194-
featureInfoClick.feature.properties.extensions_sncf_line_name
195-
)}
196-
</div>
197-
</div>
198-
199-
{featureInfoClick.isOperationalPoint && clickedOp?.tracks && (
200-
<Select
201-
getOptionLabel={(option) => option?.trackName || t('anyTrack')}
202-
getOptionValue={(option) => option?.trackName || ''}
203-
id="select-track"
204-
onChange={(selectedOption) => setSelectedTrack(selectedOption)}
205-
options={clickedOp.tracks}
206-
value={selectedTrack}
180+
{featureInfoClick.isOperationalPoint ? (
181+
<OperationalPointPopupDetails
182+
operationalPoint={featureInfoClick}
183+
clickedOp={clickedOp!}
184+
selectedTrack={selectedTrack!}
185+
setSelectedTrack={setSelectedTrack}
207186
/>
187+
) : (
188+
<div className="details">
189+
<div className="details-track">
190+
<small>{featureInfoClick.feature.properties.extensions_sncf_line_code}</small>
191+
</div>
192+
<div className="details-line">
193+
{featureInfoClick.feature.properties.extensions_sncf_line_name}
194+
</div>
195+
</div>
208196
)}
209197

210198
<div className="actions">
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import React, { type SetStateAction } from 'react';
2+
3+
import { Select } from '@osrd-project/ui-core';
4+
import { useTranslation } from 'react-i18next';
5+
6+
import type { PathStep } from 'reducers/osrdconf/types';
7+
8+
import type { FeatureInfoClick } from '../types';
9+
10+
type OperationalPointPopupDetailsProps = {
11+
operationalPoint: FeatureInfoClick;
12+
clickedOp: Extract<PathStep, { uic: number }> & {
13+
tracks: {
14+
trackName?: string;
15+
coordinates?: number[];
16+
}[];
17+
};
18+
selectedTrack: {
19+
trackName?: string;
20+
coordinates?: number[];
21+
};
22+
setSelectedTrack: React.Dispatch<
23+
SetStateAction<{ trackName?: string; coordinates?: number[] } | undefined>
24+
>;
25+
};
26+
27+
const OperationalPointPopupDetails: React.FC<OperationalPointPopupDetailsProps> = ({
28+
operationalPoint,
29+
clickedOp,
30+
selectedTrack,
31+
setSelectedTrack,
32+
}) => {
33+
const { t } = useTranslation(['operationalStudies/manageTrainSchedule']);
34+
35+
return (
36+
<>
37+
<div className="details">
38+
<div className="details-track">
39+
{operationalPoint.feature.properties!.extensions_sncf_track_name}
40+
<small>{operationalPoint.feature.properties!.extensions_sncf_line_code}</small>
41+
</div>
42+
<div className="details-line">
43+
{operationalPoint.feature.properties!.extensions_identifier_name} <br />
44+
{operationalPoint.feature.properties!.extensions_sncf_trigram}{' '}
45+
{operationalPoint.feature.properties!.extensions_sncf_ch}
46+
</div>
47+
</div>
48+
<Select
49+
getOptionLabel={(option) => option?.trackName || t('anyTrack')}
50+
getOptionValue={(option) => option?.trackName || ''}
51+
id="select-track"
52+
onChange={(selectedOption) => setSelectedTrack(selectedOption)}
53+
options={clickedOp.tracks}
54+
value={selectedTrack}
55+
/>
56+
</>
57+
);
58+
};
59+
60+
export default OperationalPointPopupDetails;

0 commit comments

Comments
 (0)