feat: Enhance PropertyPanel, add RFID auto-gen, and fix node connections

This commit is contained in:
backuppc
2025-12-22 13:46:01 +09:00
parent df9be853ba
commit 4d1f131d3e
6 changed files with 1995 additions and 1515 deletions

View File

@@ -13,7 +13,7 @@ const AgvStatusPanel: React.FC<AgvStatusPanelProps> = ({ agvState }) => {
const isOn = (value & (1 << bitIndex)) !== 0;
// 필터링에 의해 isOn이 true인 것만 전달되지만 스타일 유지를 위해 체크 로직 유지
return (
<div className="flex items-center justify-between text-[10px] py-0.5 border-b border-gray-800 last:border-0 animate-in fade-in slide-in-from-left-1 duration-200">
<div key={label} className="flex items-center justify-between text-[10px] py-0.5 border-b border-gray-800 last:border-0 animate-in fade-in slide-in-from-left-1 duration-200">
<span className="text-gray-300 truncate pr-2" title={label}>{label.replace(/_/g, ' ')}</span>
<div className={`w-2.5 h-2.5 rounded-full flex-shrink-0 ${isOn ? colorClass : 'bg-gray-700'} shadow-sm`} />
</div>
@@ -41,7 +41,7 @@ const AgvStatusPanel: React.FC<AgvStatusPanelProps> = ({ agvState }) => {
</h4>
<div className="grid grid-cols-1 gap-0.5 min-h-[1.5rem]">
{getActiveKeys(SystemFlag1, agvState.system1).length > 0 ? (
getActiveKeys(SystemFlag1, agvState.system1).map((key) =>
getActiveKeys(SystemFlag1, agvState.system1).map((key) =>
renderBit(key, agvState.system1, SystemFlag1[key as any] as unknown as number, 'bg-blue-500')
)
) : (
@@ -57,7 +57,7 @@ const AgvStatusPanel: React.FC<AgvStatusPanelProps> = ({ agvState }) => {
</h4>
<div className="grid grid-cols-1 gap-0.5 min-h-[1.5rem]">
{getActiveKeys(AgvSignal, agvState.signalFlags).length > 0 ? (
getActiveKeys(AgvSignal, agvState.signalFlags).map((key) =>
getActiveKeys(AgvSignal, agvState.signalFlags).map((key) =>
renderBit(key, agvState.signalFlags, AgvSignal[key as any] as unknown as number, 'bg-yellow-500')
)
) : (
@@ -73,7 +73,7 @@ const AgvStatusPanel: React.FC<AgvStatusPanelProps> = ({ agvState }) => {
</h4>
<div className="grid grid-cols-1 gap-0.5 min-h-[1.5rem]">
{getActiveKeys(AgvError, agvState.errorFlags).length > 0 ? (
getActiveKeys(AgvError, agvState.errorFlags).map((key) =>
getActiveKeys(AgvError, agvState.errorFlags).map((key) =>
renderBit(key, agvState.errorFlags, AgvError[key as any] as unknown as number, 'bg-red-600 shadow-[0_0_5px_rgba(220,38,38,0.5)]')
)
) : (
@@ -89,7 +89,7 @@ const AgvStatusPanel: React.FC<AgvStatusPanelProps> = ({ agvState }) => {
</h4>
<div className="grid grid-cols-1 gap-0.5 min-h-[1.5rem]">
{getActiveKeys(SystemFlag0, agvState.system0).length > 0 ? (
getActiveKeys(SystemFlag0, agvState.system0).map((key) =>
getActiveKeys(SystemFlag0, agvState.system0).map((key) =>
renderBit(key, agvState.system0, SystemFlag0[key as any] as unknown as number, 'bg-cyan-500')
)
) : (