Skip to content

Commit df58fbc

Browse files
committed
front: adapt markers position when pathfinding is success in itinerarymodal
Signed-off-by: SharglutDev <[email protected]>
1 parent d0dd8ad commit df58fbc

File tree

1 file changed

+27
-3
lines changed
  • front/src/applications/operationalStudies/views/Scenario/components/ManageTimetableItem/Itinerary

1 file changed

+27
-3
lines changed

front/src/applications/operationalStudies/views/Scenario/components/ManageTimetableItem/Itinerary/ItineraryModalMap.tsx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import { useCallback, useMemo, useRef, useState } from 'react';
22

3+
import type { Position } from 'geojson';
34
import { useTranslation } from 'react-i18next';
45
import type { MapLayerMouseEvent, MapRef } from 'react-map-gl/maplibre';
56

7+
import { matchOpRefAndOp } from 'applications/operationalStudies/utils';
68
import type { PathProperties } from 'common/api/osrdEditoastApi';
79
import BaseMap from 'common/Map/BaseMap';
810
import MapButtons from 'common/Map/Buttons/MapButtons';
@@ -168,10 +170,32 @@ const ItineraryModalMap = ({
168170
const pathStepLocation = step.location;
169171
if (!pathStepLocation || !pathStepMetadata || pathStepMetadata?.isInvalid) return null;
170172

171-
const allCoordinates = computePathStepCoordinates(pathStepMetadata);
173+
let coordinates: Position | undefined;
174+
if (pathProperties?.operational_points) {
175+
// If there is a pathfinding, we use it to get the simulated coordinates
176+
if (pathStepMetadata.type == 'trackOffset') {
177+
coordinates = pathStepMetadata.coordinates;
178+
} else {
179+
const matchedOp = pathProperties.operational_points.find((op) =>
180+
matchOpRefAndOp(pathStepLocation, op)
181+
);
182+
const secondaryCodeMetadata = pathStepMetadata.locationsBySecondaryCode.get(
183+
matchedOp?.extensions?.sncf?.ch || ''
184+
);
185+
const trackMetadata = secondaryCodeMetadata?.find(
186+
(metadata) => metadata.trackId === matchedOp?.part.track
187+
);
188+
coordinates = trackMetadata?.coordinates;
189+
}
190+
} else {
191+
// If not, we use the input informations to compute them
192+
const allCoordinates = computePathStepCoordinates(pathStepMetadata);
193+
194+
coordinates =
195+
allCoordinates.length === 1 ? allCoordinates[0] : getBarycenter(allCoordinates);
196+
}
172197

173-
const coordinates =
174-
allCoordinates.length === 1 ? allCoordinates[0] : getBarycenter(allCoordinates);
198+
if (!coordinates) return null;
175199

176200
let name = '';
177201
if (pathStepMetadata.type === 'trackOffset') {

0 commit comments

Comments
 (0)