import React from 'react'; import { ArrowUp, ArrowDown, RotateCcw, RotateCw, StopCircle, Disc, ChevronsUp, ChevronsDown, Magnet, AlertTriangle } from 'lucide-react'; import { AgvState, AgvMotionState, AgvRunConfig } from '../types'; interface AgvManualControlsProps { agvState: AgvState; setMotion: (state: AgvMotionState) => void; setRunConfig: (config: AgvRunConfig) => void; setError: (error: string | null) => void; onTurn180: (direction: 'LEFT' | 'RIGHT') => void; setLiftStatus: (status: 'IDLE' | 'UP' | 'DOWN') => void; setMagnet: (isOn: boolean) => void; } const AgvManualControls: React.FC = ({ agvState, setMotion, setRunConfig, setError, onTurn180, setLiftStatus, setMagnet, }) => { const isRunning = agvState.motionState === AgvMotionState.RUNNING || agvState.motionState === AgvMotionState.MARK_STOPPING; const isError = agvState.error !== null; const updateRunConfig = (key: keyof AgvRunConfig, value: any) => { if (isError) return; setRunConfig({ ...agvState.runConfig, [key]: value }); }; const handleMarkStop = () => { if (agvState.motionState === AgvMotionState.RUNNING) { setRunConfig({ ...agvState.runConfig, speedLevel: 'L' }); setMotion(AgvMotionState.MARK_STOPPING); } }; const resetError = () => { setError(null); }; const setManualMotion = (motion: AgvMotionState, direction?: 'FWD' | 'BWD') => { setMotion(motion); if (direction) { updateRunConfig('direction', direction); } }; return (
{/* Error Overlay */} {isError && (
{agvState.error}
)}

Manual Operation

{/* Extra Actions */}
); }; export default AgvManualControls;