From 4f3239cb6250041328ac5cb0b5f56a8a83fa47dd Mon Sep 17 00:00:00 2001 From: Achraf Mohyeddine Date: Tue, 5 Nov 2024 11:12:31 +0100 Subject: [PATCH] front: ensure behavior for non-recognized points in path Signed-off-by: Achraf Mohyeddine --- .../en/operationalStudies/manageTrainSchedule.json | 1 + .../fr/operationalStudies/manageTrainSchedule.json | 1 + .../components/Pathfinding/Pathfinding.tsx | 14 ++++++++++---- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/front/public/locales/en/operationalStudies/manageTrainSchedule.json b/front/public/locales/en/operationalStudies/manageTrainSchedule.json index 45c6572c79f..ef6e0947af7 100644 --- a/front/public/locales/en/operationalStudies/manageTrainSchedule.json +++ b/front/public/locales/en/operationalStudies/manageTrainSchedule.json @@ -91,6 +91,7 @@ "pathfinding": "Path search", "pathfindingDone": "Pathfinding done.", "pathfindingError": "An error occurred in pathfinding: {{errorMessage}}.", + "InvalidTrainScheduleStep": "At least one of the waypoints could not be recognized", "pathfindingInProgress": "Pathfinding in progress…", "pathfindingMissingParams": "Missing parameters for pathfinding: {{missingElements}}.", "pathfindingMissingParamsSimple": "Missing information for the search", diff --git a/front/public/locales/fr/operationalStudies/manageTrainSchedule.json b/front/public/locales/fr/operationalStudies/manageTrainSchedule.json index 1a7b6f70463..c7d1eac9065 100644 --- a/front/public/locales/fr/operationalStudies/manageTrainSchedule.json +++ b/front/public/locales/fr/operationalStudies/manageTrainSchedule.json @@ -91,6 +91,7 @@ "pathfinding": "Recherche d’itinéraire", "pathfindingDone": "Recherche d'itinéraire terminée.", "pathfindingError": "Erreur dans la recherche d’itinéraire : {{errorMessage}}.", + "InvalidTrainScheduleStep": "Au moins un des points de passage n'a pas été reconnu", "pathfindingInProgress": "Recherche d’itinéraire en cours…", "pathfindingMissingParams": "Éléments manquants pour la recherche : {{missingElements}}.", "pathfindingMissingParamsSimple": "Informations manquantes pour la recherche", diff --git a/front/src/modules/pathfinding/components/Pathfinding/Pathfinding.tsx b/front/src/modules/pathfinding/components/Pathfinding/Pathfinding.tsx index 18cf6b00ded..bcbcbabfd5f 100644 --- a/front/src/modules/pathfinding/components/Pathfinding/Pathfinding.tsx +++ b/front/src/modules/pathfinding/components/Pathfinding/Pathfinding.tsx @@ -10,6 +10,7 @@ import infraLogo from 'assets/pictures/components/tracks.svg'; import { Spinner } from 'common/Loaders'; import { useOsrdConfSelectors } from 'common/osrdContext'; import { usePathfinding } from 'modules/pathfinding/hooks/usePathfinding'; +import { isPathStepInvalid } from 'modules/pathfinding/utils'; import { useStoreDataForRollingStockSelector } from 'modules/rollingStock/components/RollingStockSelector/useStoreDataForRollingStockSelector'; import { conditionalStringConcat, formatKmValue } from 'utils/strings'; @@ -23,7 +24,9 @@ type PathfindingProps = { const Pathfinding = ({ pathProperties, setPathProperties }: PathfindingProps) => { const { t } = useTranslation(['operationalStudies/manageTrainSchedule']); - const { getOrigin, getDestination } = useOsrdConfSelectors(); + const { getOrigin, getDestination, getPathSteps } = useOsrdConfSelectors(); + const pathSteps = useSelector(getPathSteps); + const hasInvalidPathStep = pathSteps.some((via) => isPathStepInvalid(via)); const origin = useSelector(getOrigin, isEqual); const destination = useSelector(getDestination, isEqual); const { rollingStock } = useStoreDataForRollingStockSelector(); @@ -61,7 +64,8 @@ const Pathfinding = ({ pathProperties, setPathProperties }: PathfindingProps) => !pathfindingState.running && pathfindingState.done && origin && - destination && ( + destination && + !hasInvalidPathStep && (
@@ -83,7 +87,7 @@ const Pathfinding = ({ pathProperties, setPathProperties }: PathfindingProps) =>
) : ( <> - {pathfindingState.error && ( + {(pathfindingState.error || hasInvalidPathStep) && (
- {t('pathfindingError', { errorMessage: t(pathfindingState.error) })} + {hasInvalidPathStep + ? t('InvalidTrainScheduleStep') + : t('pathfindingError', { errorMessage: t(pathfindingState.error) })}
)}