From 0921bd348578ac8e8024fe87ec84fcd023213a88 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Fri, 10 Jan 2025 11:22:49 +0530 Subject: [PATCH] feat: routing for robot --- src/components/robot/Recordings.tsx | 261 +++++++++++----------------- 1 file changed, 98 insertions(+), 163 deletions(-) diff --git a/src/components/robot/Recordings.tsx b/src/components/robot/Recordings.tsx index c05ea261..46484cb1 100644 --- a/src/components/robot/Recordings.tsx +++ b/src/components/robot/Recordings.tsx @@ -1,12 +1,13 @@ -import React, { useState } from 'react'; +import React, { useState } from "react"; import { RecordingsTable } from "./RecordingsTable"; import { Grid } from "@mui/material"; import { RunSettings, RunSettingsModal } from "../run/RunSettings"; import { ScheduleSettings, ScheduleSettingsModal } from "./ScheduleSettings"; import { IntegrationSettings, IntegrationSettingsModal } from "../integration/IntegrationSettings"; import { RobotSettings, RobotSettingsModal } from "./RobotSettings"; -import { RobotEditModal } from './RobotEdit'; -import { RobotDuplicationModal } from './RobotDuplicate'; +import { RobotEditModal } from "./RobotEdit"; +import { RobotDuplicationModal } from "./RobotDuplicate"; +import { useNavigate, useLocation, useParams } from "react-router-dom"; interface RecordingsProps { handleEditRecording: (id: string, fileName: string) => void; @@ -15,181 +16,115 @@ interface RecordingsProps { setRecordingInfo: (id: string, name: string) => void; } -export const Recordings = ({ handleEditRecording, handleRunRecording, setRecordingInfo, handleScheduleRecording }: RecordingsProps) => { - const [runSettingsAreOpen, setRunSettingsAreOpen] = useState(false); - const [scheduleSettingsAreOpen, setScheduleSettingsAreOpen] = useState(false); - const [integrateSettingsAreOpen, setIntegrateSettingsAreOpen] = useState(false); - const [robotSettingsAreOpen, setRobotSettingsAreOpen] = useState(false); - const [robotEditAreOpen, setRobotEditAreOpen] = useState(false); - const [robotDuplicateAreOpen, setRobotDuplicateAreOpen] = useState(false); +export const Recordings = ({ + handleEditRecording, + handleRunRecording, + setRecordingInfo, + handleScheduleRecording, +}: RecordingsProps) => { + const navigate = useNavigate(); + const location = useLocation(); + const { selectedRecordingId } = useParams(); const [params, setParams] = useState([]); - const [selectedRecordingId, setSelectedRecordingId] = useState(''); - const handleIntegrateRecording = (id: string, settings: IntegrationSettings) => { }; - const handleSettingsRecording = (id: string, settings: RobotSettings) => { }; - const handleEditRobot = (id: string, settings: RobotSettings) => { }; - const handleDuplicateRobot = (id: string, settings: RobotSettings) => { }; - const handleSettingsAndIntegrate = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setIntegrateSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setIntegrateSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } - - const handleSettingsAndRun = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setRunSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setRunSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } - - const handleSettingsAndSchedule = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setScheduleSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setScheduleSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } - - const handleRobotSettings = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setRobotSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setRobotSettingsAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } - - const handleEditRobotOption = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setRobotEditAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setRobotEditAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } - - const handleDuplicateRobotOption = (id: string, name: string, params: string[]) => { - if (params.length === 0) { - setRobotDuplicateAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } else { - setParams(params); - setRobotDuplicateAreOpen(true); - setRecordingInfo(id, name); - setSelectedRecordingId(id); - } - } + const handleNavigate = (path: string, id: string, name: string, params: string[]) => { + setParams(params); + setRecordingInfo(id, name); + navigate(path); + }; const handleClose = () => { setParams([]); - setRunSettingsAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } + setRecordingInfo("", ""); + navigate("/robots"); // Navigate back to the main robots page + }; - const handleIntegrateClose = () => { - setParams([]); - setIntegrateSettingsAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } + // Determine which modal to open based on the current route + const getCurrentModal = () => { + const currentPath = location.pathname; - const handleScheduleClose = () => { - setParams([]); - setScheduleSettingsAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } - - const handleRobotSettingsClose = () => { - setParams([]); - setRobotSettingsAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } - - const handleRobotEditClose = () => { - setParams([]); - setRobotEditAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } - - const handleRobotDuplicateClose = () => { - setParams([]); - setRobotDuplicateAreOpen(false); - setRecordingInfo('', ''); - setSelectedRecordingId(''); - } + if (currentPath.endsWith("/run")) { + return ( + + ); + } else if (currentPath.endsWith("/schedule")) { + return ( + + ); + } else if (currentPath.endsWith("/integrate")) { + return ( + {}} + /> + ); + } else if (currentPath.endsWith("/settings")) { + return ( + {}} + /> + ); + } else if (currentPath.endsWith("/edit")) { + return ( + {}} + /> + ); + } else if (currentPath.endsWith("/duplicate")) { + return ( + {}} + /> + ); + } + return null; + }; return ( - handleRunRecording(settings)} - isTask={params.length !== 0} - params={params} - /> - handleScheduleRecording(settings)} - /> - handleIntegrateRecording(selectedRecordingId, settings)} - /> - handleSettingsRecording(selectedRecordingId, settings)} - /> - handleEditRobot(selectedRecordingId, settings)} - /> - handleDuplicateRobot(selectedRecordingId, settings)} - /> - + {getCurrentModal()} + + handleNavigate(`/robots/${id}/run`, id, name, params) + } + handleScheduleRecording={(id, name, params) => + handleNavigate(`/robots/${id}/schedule`, id, name, params) + } + handleIntegrateRecording={(id, name, params) => + handleNavigate(`/robots/${id}/integrate`, id, name, params) + } + handleSettingsRecording={(id, name, params) => + handleNavigate(`/robots/${id}/settings`, id, name, params) + } + handleEditRobot={(id, name, params) => + handleNavigate(`/robots/${id}/edit`, id, name, params) + } + handleDuplicateRobot={(id, name, params) => + handleNavigate(`/robots/${id}/duplicate`, id, name, params) + } /> ); -} \ No newline at end of file +};