From c64a0fc6e4f040bff1875ad5428798f750ae1fd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Chirico=20Indreb=C3=B8?= Date: Fri, 26 Jul 2024 15:55:22 +0200 Subject: [PATCH] Move installation filtering to contexts --- .../src/components/Contexts/AlertContext.tsx | 15 ++--------- .../Contexts/InstallationContext.tsx | 12 +++++++-- .../Contexts/MissionDefinitionsContext.tsx | 11 +++++++- .../Contexts/MissionRunsContext.tsx | 17 ++++++++++++- .../src/components/Contexts/RobotContext.tsx | 15 ++++++++++- .../components/Contexts/SafeZoneContext.tsx | 12 +++------ .../MissionOverview/MissionQueueView.tsx | 11 +++----- .../MissionOverview/OngoingMissionView.tsx | 19 +++----------- .../SelectMissionsToScheduleDialog.tsx | 7 +----- .../FrontPage/MissionOverview/StopDialogs.tsx | 7 +----- .../RobotCards/RobotStatusSection.tsx | 25 +++++++------------ .../Pages/InspectionPage/DeckCards.tsx | 7 +----- .../InspectionPage/InspectionOverview.tsx | 22 +++++++--------- .../InspectionPage/InspectionSection.tsx | 20 ++++++--------- .../Pages/InspectionPage/InspectionTable.tsx | 6 +---- .../InspectionPage/ScheduleMissionDialogs.tsx | 16 +++--------- 16 files changed, 94 insertions(+), 128 deletions(-) diff --git a/frontend/src/components/Contexts/AlertContext.tsx b/frontend/src/components/Contexts/AlertContext.tsx index dee860cfe..5fa42b1f4 100644 --- a/frontend/src/components/Contexts/AlertContext.tsx +++ b/frontend/src/components/Contexts/AlertContext.tsx @@ -169,14 +169,7 @@ export const AlertProvider: FC = ({ children }) => { const backendAlert: Alert = JSON.parse(message) const alertType = alertTypeEnumMap[backendAlert.alertCode] - if (backendAlert.robotId !== null) { - const relevantRobots = enabledRobots.filter((r) => r.id === backendAlert.robotId) - if (!relevantRobots) return - const relevantRobot = relevantRobots[0] - if (relevantRobot.currentInstallation.installationCode !== installationCode) return - - // Here we could update the robot state manually, but this is best done on the backend - } + if (backendAlert.robotId !== null && !enabledRobots.filter((r) => r.id === backendAlert.robotId)) return if (alertType === AlertType.SafeZoneSuccess) { setAlert( @@ -211,11 +204,7 @@ export const AlertProvider: FC = ({ children }) => { useEffect(() => { const newBlockedRobotNames = enabledRobots - .filter( - (robot) => - robot.currentInstallation.installationCode.toLocaleLowerCase() === - installationCode.toLocaleLowerCase() && robot.status === RobotStatus.Blocked - ) + .filter((robot) => robot.status === RobotStatus.Blocked) .map((robot) => robot.name!) const isBlockedRobotNamesModifyed = diff --git a/frontend/src/components/Contexts/InstallationContext.tsx b/frontend/src/components/Contexts/InstallationContext.tsx index afda7912e..668aab9d0 100644 --- a/frontend/src/components/Contexts/InstallationContext.tsx +++ b/frontend/src/components/Contexts/InstallationContext.tsx @@ -163,13 +163,21 @@ export const InstallationProvider: FC = ({ children }) => { window.localStorage.setItem('installationCode', derivedCode) } + const [filteredInstallationDecks, setFilteredInstallationDecks] = useState([]) + const [filteredInstallationAreas, setFilteredInstallationAreas] = useState([]) + useEffect(() => { + setFilteredInstallationDecks(installationDecks.filter((d) => d.installationCode === installationCode)) + setFilteredInstallationAreas(installationAreas.filter((a) => a.installationCode === installationCode)) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [installationCode, installationDecks, installationAreas]) + return ( diff --git a/frontend/src/components/Contexts/MissionDefinitionsContext.tsx b/frontend/src/components/Contexts/MissionDefinitionsContext.tsx index bad68f20d..e7f73f74f 100644 --- a/frontend/src/components/Contexts/MissionDefinitionsContext.tsx +++ b/frontend/src/components/Contexts/MissionDefinitionsContext.tsx @@ -99,7 +99,16 @@ export const useMissionDefinitions = (): IMissionDefinitionsContext => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [BackendAPICaller.accessToken, installationCode]) - return { missionDefinitions } + const [filteredMissionDefinitions, setFilteredMissionDefinitions] = useState([]) + + useEffect(() => { + setFilteredMissionDefinitions( + missionDefinitions.filter((m) => m.installationCode.toLowerCase() === installationCode.toLowerCase()) + ) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [installationCode, missionDefinitions]) + + return { missionDefinitions: filteredMissionDefinitions } } export const MissionDefinitionsProvider: FC = ({ children }) => { diff --git a/frontend/src/components/Contexts/MissionRunsContext.tsx b/frontend/src/components/Contexts/MissionRunsContext.tsx index be79d5cc4..a8b0e9240 100644 --- a/frontend/src/components/Contexts/MissionRunsContext.tsx +++ b/frontend/src/components/Contexts/MissionRunsContext.tsx @@ -7,6 +7,7 @@ import { useLanguageContext } from './LanguageContext' import { AlertType, useAlertContext } from './AlertContext' import { FailedRequestAlertContent } from 'components/Alerts/FailedRequestAlert' import { AlertCategory } from 'components/Alerts/AlertsBanner' +import { useInstallationContext } from './InstallationContext' const upsertMissionList = (list: Mission[], mission: Mission) => { let newMissionList = [...list] @@ -82,6 +83,7 @@ export const useMissionRuns = (): IMissionRunsContext => { const { registerEvent, connectionReady } = useSignalRContext() const { TranslateText } = useLanguageContext() const { setAlert } = useAlertContext() + const { installationCode } = useInstallationContext() useEffect(() => { if (connectionReady) { @@ -157,7 +159,20 @@ export const useMissionRuns = (): IMissionRunsContext => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [BackendAPICaller.accessToken]) - return { ongoingMissions, missionQueue, loadingMissionSet, setLoadingMissionSet } + const [filteredMissionQueue, setFilteredMissionQueue] = useState([]) + const [filteredOngoingMissions, setFilteredOngoingMissions] = useState([]) + useEffect(() => { + setFilteredOngoingMissions(ongoingMissions.filter((m) => m.area?.installationCode === installationCode)) + setFilteredMissionQueue(missionQueue.filter((m) => m.area?.installationCode === installationCode)) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [installationCode, ongoingMissions, missionQueue]) + + return { + ongoingMissions: filteredOngoingMissions, + missionQueue: filteredMissionQueue, + loadingMissionSet, + setLoadingMissionSet, + } } export const MissionRunsProvider: FC = ({ children }) => { diff --git a/frontend/src/components/Contexts/RobotContext.tsx b/frontend/src/components/Contexts/RobotContext.tsx index f0b4f8a13..8de161655 100644 --- a/frontend/src/components/Contexts/RobotContext.tsx +++ b/frontend/src/components/Contexts/RobotContext.tsx @@ -6,6 +6,7 @@ import { useLanguageContext } from './LanguageContext' import { AlertType, useAlertContext } from './AlertContext' import { FailedRequestAlertContent } from 'components/Alerts/FailedRequestAlert' import { AlertCategory } from 'components/Alerts/AlertsBanner' +import { useInstallationContext } from './InstallationContext' const upsertRobotList = (list: Robot[], mission: Robot) => { let newList = [...list] @@ -34,6 +35,7 @@ export const RobotProvider: FC = ({ children }) => { const { registerEvent, connectionReady } = useSignalRContext() const { TranslateText } = useLanguageContext() const { setAlert } = useAlertContext() + const { installationCode } = useInstallationContext() useEffect(() => { if (connectionReady) { @@ -86,10 +88,21 @@ export const RobotProvider: FC = ({ children }) => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []) + const [filteredRobots, setFilteredRobots] = useState([]) + + useEffect(() => { + setFilteredRobots( + enabledRobots.filter( + (r) => r.currentInstallation.installationCode.toLowerCase() === installationCode.toLowerCase() + ) + ) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [installationCode, enabledRobots]) + return ( {children} diff --git a/frontend/src/components/Contexts/SafeZoneContext.tsx b/frontend/src/components/Contexts/SafeZoneContext.tsx index 938548171..379efbbc9 100644 --- a/frontend/src/components/Contexts/SafeZoneContext.tsx +++ b/frontend/src/components/Contexts/SafeZoneContext.tsx @@ -1,6 +1,5 @@ import { createContext, FC, useContext, useEffect, useState } from 'react' import { useRobotContext } from './RobotContext' -import { useInstallationContext } from './InstallationContext' import { AlertType, useAlertContext } from './AlertContext' import { SafeZoneAlertContent } from 'components/Alerts/SafeZoneAlert' import { AlertCategory } from 'components/Alerts/AlertsBanner' @@ -23,17 +22,12 @@ export const SafeZoneContext = createContext(defaultSafeZoneIn export const SafeZoneProvider: FC = ({ children }) => { const [safeZoneStatus, setSafeZoneStatus] = useState(defaultSafeZoneInterface.safeZoneStatus) const { enabledRobots } = useRobotContext() - const { installationCode } = useInstallationContext() const { setAlert, clearAlert } = useAlertContext() useEffect(() => { - const missionQueueFozenStatus = enabledRobots - .filter( - (robot) => - robot.currentInstallation.installationCode.toLocaleLowerCase() === - installationCode.toLocaleLowerCase() - ) - .filter((robot) => robot.flotillaStatus === RobotFlotillaStatus.SafeZone) + const missionQueueFozenStatus = enabledRobots.filter( + (robot) => robot.flotillaStatus === RobotFlotillaStatus.SafeZone + ) if (missionQueueFozenStatus.length > 0 && safeZoneStatus === false) { setSafeZoneStatus((oldStatus) => !oldStatus) diff --git a/frontend/src/components/Pages/FrontPage/MissionOverview/MissionQueueView.tsx b/frontend/src/components/Pages/FrontPage/MissionOverview/MissionQueueView.tsx index c428527bb..c80dd1424 100644 --- a/frontend/src/components/Pages/FrontPage/MissionOverview/MissionQueueView.tsx +++ b/frontend/src/components/Pages/FrontPage/MissionOverview/MissionQueueView.tsx @@ -7,7 +7,6 @@ import { Mission, placeholderMission } from 'models/Mission' import { EmptyMissionQueuePlaceholder } from './NoMissionPlaceholder' import { useLanguageContext } from 'components/Contexts/LanguageContext' import { useMissionsContext } from 'components/Contexts/MissionRunsContext' -import { useInstallationContext } from 'components/Contexts/InstallationContext' import { AlertType, useAlertContext } from 'components/Contexts/AlertContext' import { FailedRequestAlertContent } from 'components/Alerts/FailedRequestAlert' import { FrontPageSectionId } from 'models/FrontPageSectionId' @@ -30,11 +29,7 @@ const MissionTable = styled.div` export const MissionQueueView = (): JSX.Element => { const { TranslateText } = useLanguageContext() const { missionQueue, ongoingMissions, loadingMissionSet, setLoadingMissionSet } = useMissionsContext() - const { installationCode } = useInstallationContext() const { setAlert } = useAlertContext() - const localMissionQueue = missionQueue.filter( - (m) => m.installationCode?.toLocaleLowerCase() === installationCode.toLocaleLowerCase() - ) const onDeleteMission = (mission: Mission) => BackendAPICaller.deleteMission(mission.id).catch((_) => @@ -55,7 +50,7 @@ export const MissionQueueView = (): JSX.Element => { // eslint-disable-next-line react-hooks/exhaustive-deps }, [missionQueue, ongoingMissions]) - const missionQueueDisplay = localMissionQueue.map((mission, index) => ( + const missionQueueDisplay = missionQueue.map((mission, index) => ( )) @@ -74,9 +69,9 @@ export const MissionQueueView = (): JSX.Element => { {TranslateText('Mission Queue')} - {localMissionQueue.length > 0 && missionQueueDisplay} + {missionQueue.length > 0 && missionQueueDisplay} {loadingMissionSet.size > 0 && loadingQueueDisplay} - {loadingMissionSet.size === 0 && localMissionQueue.length === 0 && } + {loadingMissionSet.size === 0 && missionQueue.length === 0 && } ) diff --git a/frontend/src/components/Pages/FrontPage/MissionOverview/OngoingMissionView.tsx b/frontend/src/components/Pages/FrontPage/MissionOverview/OngoingMissionView.tsx index c0aa531d8..ac7c6909c 100644 --- a/frontend/src/components/Pages/FrontPage/MissionOverview/OngoingMissionView.tsx +++ b/frontend/src/components/Pages/FrontPage/MissionOverview/OngoingMissionView.tsx @@ -7,9 +7,6 @@ import { useNavigate } from 'react-router-dom' import { config } from 'config' import { Icons } from 'utils/icons' import { useMissionsContext } from 'components/Contexts/MissionRunsContext' -import { useInstallationContext } from 'components/Contexts/InstallationContext' -import { useEffect, useState } from 'react' -import { Mission } from 'models/Mission' import { tokens } from '@equinor/eds-tokens' const StyledOngoingMissionView = styled.div` @@ -42,8 +39,6 @@ const StyledButton = styled(Button)` export const OngoingMissionView = (): JSX.Element => { const { TranslateText } = useLanguageContext() const { ongoingMissions } = useMissionsContext() - const { installationCode } = useInstallationContext() - const [ongingMissionsToDisplay, setOngoingMissionsToDisplay] = useState([]) let navigate = useNavigate() const routeChange = () => { @@ -51,15 +46,7 @@ export const OngoingMissionView = (): JSX.Element => { navigate(path) } - useEffect(() => { - setOngoingMissionsToDisplay( - ongoingMissions.filter( - (m) => m.installationCode?.toLocaleLowerCase() === installationCode.toLocaleLowerCase() - ) - ) - }, [ongoingMissions, installationCode]) - - const ongoingMissionCards = ongingMissionsToDisplay.map((mission, index) => ( + const ongoingMissionCards = ongoingMissions.map((mission, index) => ( )) @@ -71,8 +58,8 @@ export const OngoingMissionView = (): JSX.Element => { - {ongingMissionsToDisplay.length > 0 && ongoingMissionCards} - {ongingMissionsToDisplay.length === 0 && } + {ongoingMissions.length > 0 && ongoingMissionCards} + {ongoingMissions.length === 0 && } diff --git a/frontend/src/components/Pages/FrontPage/MissionOverview/ScheduleMissionDialog/SelectMissionsToScheduleDialog.tsx b/frontend/src/components/Pages/FrontPage/MissionOverview/ScheduleMissionDialog/SelectMissionsToScheduleDialog.tsx index 0b6f98151..8addad6df 100644 --- a/frontend/src/components/Pages/FrontPage/MissionOverview/ScheduleMissionDialog/SelectMissionsToScheduleDialog.tsx +++ b/frontend/src/components/Pages/FrontPage/MissionOverview/ScheduleMissionDialog/SelectMissionsToScheduleDialog.tsx @@ -148,17 +148,12 @@ const SelectRobotComponent = memo( }) => { const { enabledRobots } = useRobotContext() const { TranslateText } = useLanguageContext() - const { installationCode } = useInstallationContext() return ( (r ? r.name + ' (' + r.model.type + ')' : '')} options={enabledRobots.filter( - (r) => - r.currentInstallation.installationCode.toLocaleLowerCase() === - installationCode.toLocaleLowerCase() && - (r.status === RobotStatus.Available || r.status === RobotStatus.Busy) && - r.isarConnected + (r) => (r.status === RobotStatus.Available || r.status === RobotStatus.Busy) && r.isarConnected )} disabled={!enabledRobots} selectedOptions={[selectedRobot]} diff --git a/frontend/src/components/Pages/FrontPage/MissionOverview/StopDialogs.tsx b/frontend/src/components/Pages/FrontPage/MissionOverview/StopDialogs.tsx index 2928b995c..9055a3665 100644 --- a/frontend/src/components/Pages/FrontPage/MissionOverview/StopDialogs.tsx +++ b/frontend/src/components/Pages/FrontPage/MissionOverview/StopDialogs.tsx @@ -141,12 +141,7 @@ export const StopRobotDialog = (): JSX.Element => { const { installationCode } = useInstallationContext() const { setAlert } = useAlertContext() - const safeZoneActivated = - enabledRobots.find( - (r) => - r.currentInstallation.installationCode === installationCode && - r.flotillaStatus === RobotFlotillaStatus.SafeZone - ) !== undefined + const safeZoneActivated = enabledRobots.find((r) => r.flotillaStatus === RobotFlotillaStatus.SafeZone) !== undefined const openDialog = async () => { setIsStopRobotDialogOpen(true) diff --git a/frontend/src/components/Pages/FrontPage/RobotCards/RobotStatusSection.tsx b/frontend/src/components/Pages/FrontPage/RobotCards/RobotStatusSection.tsx index 785cc5350..1edb91dd9 100644 --- a/frontend/src/components/Pages/FrontPage/RobotCards/RobotStatusSection.tsx +++ b/frontend/src/components/Pages/FrontPage/RobotCards/RobotStatusSection.tsx @@ -1,7 +1,6 @@ import { Typography } from '@equinor/eds-core-react' import styled from 'styled-components' import { RobotStatusCard, RobotStatusCardPlaceholder } from './RobotStatusCard' -import { useInstallationContext } from 'components/Contexts/InstallationContext' import { useLanguageContext } from 'components/Contexts/LanguageContext' import { useRobotContext } from 'components/Contexts/RobotContext' @@ -18,23 +17,17 @@ const RobotView = styled.div` export const RobotStatusSection = () => { const { TranslateText } = useLanguageContext() - const { installationCode } = useInstallationContext() const { enabledRobots } = useRobotContext() - const relevantRobots = enabledRobots - .filter( - (robot) => - robot.currentInstallation.installationCode.toLocaleLowerCase() === installationCode.toLocaleLowerCase() - ) - .sort((robot, robotToCompareWith) => - robot.status! !== robotToCompareWith.status! - ? robot.status! > robotToCompareWith.status! - ? 1 - : -1 - : robot.name! > robotToCompareWith.name! - ? 1 - : -1 - ) + const relevantRobots = enabledRobots.sort((robot, robotToCompareWith) => + robot.status! !== robotToCompareWith.status! + ? robot.status! > robotToCompareWith.status! + ? 1 + : -1 + : robot.name! > robotToCompareWith.name! + ? 1 + : -1 + ) const robotDisplay = relevantRobots.map((robot) => ) diff --git a/frontend/src/components/Pages/InspectionPage/DeckCards.tsx b/frontend/src/components/Pages/InspectionPage/DeckCards.tsx index 64ea32e97..0b8f558be 100644 --- a/frontend/src/components/Pages/InspectionPage/DeckCards.tsx +++ b/frontend/src/components/Pages/InspectionPage/DeckCards.tsx @@ -13,7 +13,6 @@ import { Icons } from 'utils/icons' import { tokens } from '@equinor/eds-tokens' import { useMissionsContext } from 'components/Contexts/MissionRunsContext' import { useRobotContext } from 'components/Contexts/RobotContext' -import { useInstallationContext } from 'components/Contexts/InstallationContext' interface IDeckCardProps { deckMissions: DeckInspectionTuple[] @@ -33,12 +32,8 @@ const DeckCard = ({ deckData, onClickDeck, selectedDeck, handleScheduleAll }: De const { TranslateText } = useLanguageContext() const { ongoingMissions } = useMissionsContext() const { enabledRobots } = useRobotContext() - const { installationCode } = useInstallationContext() - const isScheduleMissionsDisabled = - enabledRobots.filter((r) => r.currentInstallation.installationCode === installationCode).length === 0 || - installationCode === '' || - deckData.inspections.length === 0 + const isScheduleMissionsDisabled = enabledRobots.length === 0 || deckData.inspections.length === 0 const getCardColorFromInspections = (inspections: Inspection[]): DeckCardColors => { if (inspections.length === 0) return DeckCardColors.Gray diff --git a/frontend/src/components/Pages/InspectionPage/InspectionOverview.tsx b/frontend/src/components/Pages/InspectionPage/InspectionOverview.tsx index cc9de3fd1..7dc23ca84 100644 --- a/frontend/src/components/Pages/InspectionPage/InspectionOverview.tsx +++ b/frontend/src/components/Pages/InspectionPage/InspectionOverview.tsx @@ -53,22 +53,18 @@ export const InspectionOverviewSection = () => { const [echoMissions, setEchoMissions] = useState([]) const [activeTab, setActiveTab] = useState(0) - const isScheduleButtonDisabled = - enabledRobots.filter((r) => r.currentInstallation.installationCode === installationCode).length === 0 || - installationCode === '' + const isScheduleButtonDisabled = enabledRobots.length === 0 || installationCode === '' const anchorRef = useRef(null) - const allInspections = missionDefinitions - .filter((m) => m.installationCode === installationCode) - .map((m) => { - return { - missionDefinition: m, - deadline: m.lastSuccessfulRun - ? getInspectionDeadline(m.inspectionFrequency, m.lastSuccessfulRun.endTime!) - : undefined, - } - }) + const allInspections = missionDefinitions.map((m) => { + return { + missionDefinition: m, + deadline: m.lastSuccessfulRun + ? getInspectionDeadline(m.inspectionFrequency, m.lastSuccessfulRun.endTime!) + : undefined, + } + }) const fetchEchoMissions = () => { setIsFetchingEchoMissions(true) diff --git a/frontend/src/components/Pages/InspectionPage/InspectionSection.tsx b/frontend/src/components/Pages/InspectionPage/InspectionSection.tsx index d02745b3f..ed5ce6310 100644 --- a/frontend/src/components/Pages/InspectionPage/InspectionSection.tsx +++ b/frontend/src/components/Pages/InspectionPage/InspectionSection.tsx @@ -28,7 +28,7 @@ interface DeckAreaTuple { } export const InspectionSection = () => { - const { installationCode, installationDecks, installationAreas } = useInstallationContext() + const { installationDecks, installationAreas } = useInstallationContext() const [selectedDeck, setSelectedDeck] = useState() const [selectedMissions, setSelectedMissions] = useState() const [isDialogOpen, setIsDialogOpen] = useState(false) @@ -37,14 +37,12 @@ export const InspectionSection = () => { const { ongoingMissions, missionQueue } = useMissionsContext() const { missionDefinitions } = useMissionDefinitionsContext() - const decks: DeckAreaTuple[] = installationDecks - .filter((deck) => deck.installationCode.toLowerCase() === installationCode.toLowerCase()) - .map((deck) => { - return { - areas: installationAreas.filter((a) => a.deckName === deck.deckName), - deck: deck, - } - }) + const decks: DeckAreaTuple[] = installationDecks.map((deck) => { + return { + areas: installationAreas.filter((a) => a.deckName === deck.deckName), + deck: deck, + } + }) const closeDialog = () => { setIsAlreadyScheduled(false) @@ -67,9 +65,7 @@ export const InspectionSection = () => { const deckMissions: DeckInspectionTuple[] = decks?.map(({ areas, deck }) => { - const missionDefinitionsInDeck = missionDefinitions.filter( - (m) => m.area?.deckName === deck.deckName && m.installationCode === installationCode - ) + const missionDefinitionsInDeck = missionDefinitions.filter((m) => m.area?.deckName === deck.deckName) return { inspections: missionDefinitionsInDeck.map((m) => { return { diff --git a/frontend/src/components/Pages/InspectionPage/InspectionTable.tsx b/frontend/src/components/Pages/InspectionPage/InspectionTable.tsx index a9a0df792..2162637b0 100644 --- a/frontend/src/components/Pages/InspectionPage/InspectionTable.tsx +++ b/frontend/src/components/Pages/InspectionPage/InspectionTable.tsx @@ -14,7 +14,6 @@ import { AlreadyScheduledMissionDialog, ScheduleMissionDialog } from './Schedule import { useEffect, useState } from 'react' import { useMissionsContext } from 'components/Contexts/MissionRunsContext' import { useRobotContext } from 'components/Contexts/RobotContext' -import { useInstallationContext } from 'components/Contexts/InstallationContext' import { FrontPageSectionId } from 'models/FrontPageSectionId' import { SmallScreenInfoText } from 'utils/InfoText' @@ -133,7 +132,6 @@ interface IInspectionRowProps { const InspectionRow = ({ inspection, openDialog, setMissions, openScheduledDialog }: IInspectionRowProps) => { const { TranslateText } = useLanguageContext() const { ongoingMissions, missionQueue } = useMissionsContext() - const { installationCode } = useInstallationContext() const { enabledRobots } = useRobotContext() const navigate = useNavigate() const mission = inspection.missionDefinition @@ -142,9 +140,7 @@ const InspectionRow = ({ inspection, openDialog, setMissions, openScheduledDialo const isScheduled = missionQueue.map((m) => m.missionId).includes(mission.id) const isOngoing = ongoingMissions.map((m) => m.missionId).includes(mission.id) - const isScheduleButtonDisabled = - enabledRobots.filter((r) => r.currentInstallation.installationCode === installationCode).length === 0 || - installationCode === '' + const isScheduleButtonDisabled = enabledRobots.length === 0 if (isOngoing) { status = ( diff --git a/frontend/src/components/Pages/InspectionPage/ScheduleMissionDialogs.tsx b/frontend/src/components/Pages/InspectionPage/ScheduleMissionDialogs.tsx index 3d6270798..096b369e3 100644 --- a/frontend/src/components/Pages/InspectionPage/ScheduleMissionDialogs.tsx +++ b/frontend/src/components/Pages/InspectionPage/ScheduleMissionDialogs.tsx @@ -1,8 +1,7 @@ import { Autocomplete, Dialog, Typography, Icon } from '@equinor/eds-core-react' import styled from 'styled-components' import { useLanguageContext } from 'components/Contexts/LanguageContext' -import { useState, useEffect } from 'react' -import { useInstallationContext } from 'components/Contexts/InstallationContext' +import { useState } from 'react' import { Robot } from 'models/Robot' import { CondensedMissionDefinition } from 'models/MissionDefinition' import { BackendAPICaller } from 'api/ApiCaller' @@ -54,23 +53,14 @@ const StyledDangerContent = styled.div` export const ScheduleMissionDialog = (props: IProps): JSX.Element => { const { TranslateText } = useLanguageContext() const { enabledRobots } = useRobotContext() - const { installationCode } = useInstallationContext() const { setLoadingMissionSet } = useMissionsContext() const { setAlert } = useAlertContext() const [isLocalizationVerificationDialogOpen, setIsLocalizationVerificationDialog] = useState(false) const [selectedRobot, setSelectedRobot] = useState() const [missionsToSchedule, setMissionsToSchedule] = useState() - const [robotOptions, setRobotOptions] = useState([]) - - useEffect(() => { - const relevantRobots = [...enabledRobots].filter( - (robot) => robot.currentInstallation.installationCode.toLowerCase() === installationCode.toLowerCase() - ) - setRobotOptions(relevantRobots) - }, [enabledRobots, installationCode]) const onSelectedRobot = (selectedRobot: Robot) => { - if (robotOptions) setSelectedRobot(selectedRobot) + if (enabledRobots) setSelectedRobot(selectedRobot) } const onScheduleButtonPress = (missions: CondensedMissionDefinition[]) => () => { @@ -148,7 +138,7 @@ export const ScheduleMissionDialog = (props: IProps): JSX.Element => { r.name + ' (' + r.model.type + ')'} - options={robotOptions} + options={enabledRobots} label={TranslateText('Select robot')} onOptionsChange={(changes) => onSelectedRobot(changes.selectedItems[0])} autoWidth={true}