Update: Relocate AutoRun controls and cleanup

This commit is contained in:
2025-12-19 00:05:27 +09:00
parent c4089aeb20
commit 051138489b
3 changed files with 1227 additions and 1217 deletions

31
App.tsx
View File

@@ -8,6 +8,7 @@ import AgvControls from './components/AgvControls';
import BmsPanel from './components/BmsPanel'; import BmsPanel from './components/BmsPanel';
import AcsControls from './components/AcsControls'; import AcsControls from './components/AcsControls';
import AgvStatusPanel from './components/AgvStatusPanel'; import AgvStatusPanel from './components/AgvStatusPanel';
import AgvAutoRunControls from './components/AgvAutoRunControls';
import SystemLogPanel from './components/SystemLogPanel'; import SystemLogPanel from './components/SystemLogPanel';
import { SerialPortHandler } from './services/serialService'; import { SerialPortHandler } from './services/serialService';
@@ -1164,8 +1165,38 @@ const App: React.FC = () => {
<div className="w-80 border-r border-gray-800 bg-gray-900 flex flex-col shrink-0"> <div className="w-80 border-r border-gray-800 bg-gray-900 flex flex-col shrink-0">
<div className="flex-1 overflow-hidden"> <div className="flex-1 overflow-hidden">
<AgvStatusPanel agvState={agvState} /> <AgvStatusPanel agvState={agvState} />
</div> </div>
{/* Auto Run Controls (Left Sidebar) */}
<div className="w-80 border-r border-gray-800 bg-gray-900 flex flex-col shrink-0">
<div className="flex-1 overflow-hidden">
<AgvAutoRunControls
agvState={agvState}
updateRunConfig={(key, value) => {
if (agvState.error) return;
setAgvState(s => ({ ...s, runConfig: { ...s.runConfig, [key]: value } }));
}}
toggleRun={() => {
if (agvState.error) return;
if (agvState.motionState === AgvMotionState.RUNNING || agvState.motionState === AgvMotionState.MARK_STOPPING) {
setAgvState(s => ({ ...s, motionState: AgvMotionState.IDLE }));
} else {
const isFwd = agvState.runConfig.direction === 'FWD';
const hasLine = isFwd ? agvState.sensorLineFront : agvState.sensorLineRear;
if (!hasLine) {
setAgvState(s => ({ ...s, error: 'LINE_OUT' }));
return;
}
setAgvState(s => ({ ...s, motionState: AgvMotionState.RUNNING }));
}
}}
isRunning={agvState.motionState === AgvMotionState.RUNNING || agvState.motionState === AgvMotionState.MARK_STOPPING}
isError={agvState.error !== null}
setLidar={(isOn) => setAgvState(s => ({ ...s, lidarEnabled: isOn, sensorStatus: isOn ? '1' : '0' }))}
/>
</div>
</div>
{/* Middle 2: ACS Panel (Fixed) */} {/* Middle 2: ACS Panel (Fixed) */}
<div className="flex-shrink-0"> <div className="flex-shrink-0">

1
commit_msg_2.txt Normal file
View File

@@ -0,0 +1 @@
Update: Relocate AutoRun controls and cleanup

View File

@@ -3,7 +3,7 @@ import React from 'react';
import { StopCircle, Play, Square, AlertTriangle, ChevronsUp, ChevronsDown, Magnet, Radar, ArrowLeft, ArrowRight } from 'lucide-react'; import { StopCircle, Play, Square, AlertTriangle, ChevronsUp, ChevronsDown, Magnet, Radar, ArrowLeft, ArrowRight } from 'lucide-react';
import { AgvState, AgvMotionState, AgvRunConfig } from '../types'; import { AgvState, AgvMotionState, AgvRunConfig } from '../types';
import AgvManualControls from './AgvManualControls'; import AgvManualControls from './AgvManualControls';
import AgvAutoRunControls from './AgvAutoRunControls';
interface AgvControlsProps { interface AgvControlsProps {
agvState: AgvState; agvState: AgvState;
@@ -29,22 +29,7 @@ const AgvControls: React.FC<AgvControlsProps> = ({ agvState, setMotion, setLift,
}); });
}; };
const toggleRun = () => {
if (isError) return;
if (isRunning) {
setMotion(AgvMotionState.IDLE);
} else {
const isFwd = agvState.runConfig.direction === 'FWD';
const hasLine = isFwd ? agvState.sensorLineFront : agvState.sensorLineRear;
if (!hasLine) {
setError('LINE_OUT');
return;
}
setMotion(AgvMotionState.RUNNING);
}
};
const handleMarkStop = () => { const handleMarkStop = () => {
if (agvState.motionState === AgvMotionState.RUNNING) { if (agvState.motionState === AgvMotionState.RUNNING) {
@@ -152,14 +137,7 @@ const AgvControls: React.FC<AgvControlsProps> = ({ agvState, setMotion, setLift,
{/* Auto Run Controls */} {/* Auto Run Controls */}
{/* Auto Run Controls (분리된 콤포넌트) */} {/* Auto Run Controls (분리된 콤포넌트) */}
<AgvAutoRunControls
agvState={agvState}
updateRunConfig={updateRunConfig}
toggleRun={toggleRun}
isRunning={isRunning}
isError={isError}
setLidar={setLidar}
/>
</div> </div>
); );
}; };