From 9646abffbe0bb1fc06c54d49d93786becfaf30fb Mon Sep 17 00:00:00 2001 From: Eddasol Date: Wed, 3 Jan 2024 15:05:41 +0100 Subject: [PATCH] Add location verification to rerun functionality --- .../MissionButtons/MissionRestartButton.tsx | 36 +++++++++++++++---- .../MissionHeader/MissionHeader.tsx | 4 +-- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/Displays/MissionButtons/MissionRestartButton.tsx b/frontend/src/components/Displays/MissionButtons/MissionRestartButton.tsx index 667905600..cd9932f43 100644 --- a/frontend/src/components/Displays/MissionButtons/MissionRestartButton.tsx +++ b/frontend/src/components/Displays/MissionButtons/MissionRestartButton.tsx @@ -9,6 +9,8 @@ import styled from 'styled-components' import { useRef, useState } from 'react' import { AlertType, useAlertContext } from 'components/Contexts/AlertContext' import { FailedRequestAlertContent } from 'components/Alerts/FailedRequestAlert' +import { ScheduleMissionWithLocalizationVerificationDialog } from 'components/Displays/LocalizationVerification/ScheduleMissionWithLocalizationVerification' +import { Mission } from 'models/Mission' const Centered = styled.div` display: flex; @@ -17,7 +19,7 @@ const Centered = styled.div` ` interface MissionProps { - missionId: string + mission: Mission hasFailedTasks: boolean } @@ -26,10 +28,12 @@ enum ReRunOptions { ReRunFailed, } -export const MissionRestartButton = ({ missionId, hasFailedTasks }: MissionProps) => { +export const MissionRestartButton = ({ mission, hasFailedTasks }: MissionProps) => { const { TranslateText } = useLanguageContext() const { setAlert } = useAlertContext() const [isOpen, setIsOpen] = useState(false) + const [isLocationVerificationOpen, setIsLocationVerificationOpen] = useState(false) + const [selectedRerunOption, setSelectedRerunOption] = useState() const anchorRef = useRef(null) let navigate = useNavigate() @@ -38,8 +42,8 @@ export const MissionRestartButton = ({ missionId, hasFailedTasks }: MissionProps navigate(path) } - const startReRun = (option: ReRunOptions) => - BackendAPICaller.reRunMission(missionId, option === ReRunOptions.ReRunFailed) + const startReRun = (option: ReRunOptions) => { + BackendAPICaller.reRunMission(mission.id, option === ReRunOptions.ReRunFailed) .then(() => navigateToHome()) .catch(() => setAlert( @@ -47,6 +51,8 @@ export const MissionRestartButton = ({ missionId, hasFailedTasks }: MissionProps ) ) + setIsLocationVerificationOpen(false) + } return ( @@ -75,16 +81,34 @@ export const MissionRestartButton = ({ missionId, hasFailedTasks }: MissionProps onClose={() => setIsOpen(false)} anchorEl={anchorRef.current} > - startReRun(ReRunOptions.ReRun)}> + { + setSelectedRerunOption(ReRunOptions.ReRun) + setIsLocationVerificationOpen(true) + }} + > {TranslateText('Re-run full mission')} {hasFailedTasks && ( - startReRun(ReRunOptions.ReRunFailed)}> + { + setSelectedRerunOption(ReRunOptions.ReRunFailed) + setIsLocationVerificationOpen(true) + }} + > {TranslateText('Re-run failed and cancelled tasks in the mission')} )} + {isLocationVerificationOpen && ( + startReRun(selectedRerunOption!)} + closeDialog={() => setIsLocationVerificationOpen(false)} + robotId={mission.robot.id} + missionDeckNames={[mission.area?.deckName ?? '']} + /> + )} ) } diff --git a/frontend/src/components/Pages/MissionPage/MissionHeader/MissionHeader.tsx b/frontend/src/components/Pages/MissionPage/MissionHeader/MissionHeader.tsx index 38efb8f29..2347ab790 100644 --- a/frontend/src/components/Pages/MissionPage/MissionHeader/MissionHeader.tsx +++ b/frontend/src/components/Pages/MissionPage/MissionHeader/MissionHeader.tsx @@ -126,9 +126,7 @@ export const MissionHeader = ({ mission }: { mission: Mission }) => { missionStatus={mission.status} /> )} - {mission.endTime && ( - - )} + {mission.endTime && } {mission.description && `${translatedDescription}: ${mission.description}`}