feat: Add real-time IO/interlock updates, HW status display, and history page

- Implement real-time IO value updates via IOValueChanged event
- Add interlock toggle and real-time interlock change events
- Fix ToggleLight to check return value of DIO.SetRoomLight
- Add HW status display in Footer matching WinForms HWState
- Implement GetHWStatus API and 250ms broadcast interval
- Create HistoryPage React component for work history viewing
- Add GetHistoryData API for database queries
- Add date range selection, search, filter, and CSV export
- Add History button in Header navigation
- Add PickerMoveDialog component for manage operations
- Fix DataSet column names (idx, PRNATTACH, PRNVALID, qtymax)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-27 00:14:47 +09:00
parent bb67d04d90
commit 3bd35ad852
19 changed files with 2917 additions and 81 deletions

View File

@@ -1,13 +1,15 @@
import React from 'react';
import React, { ReactNode } from 'react';
import { LucideIcon } from 'lucide-react';
interface PanelHeaderProps {
title: string;
icon: LucideIcon;
className?: string;
children?: ReactNode;
}
export const PanelHeader: React.FC<PanelHeaderProps> = ({ title, icon: Icon }) => (
<div className="flex items-center gap-3 mb-6 border-b border-white/10 pb-2">
export const PanelHeader: React.FC<PanelHeaderProps> = ({ title, icon: Icon, className, children }) => (
<div className={`flex items-center gap-3 mb-6 border-b border-white/10 pb-2 ${className || ''}`}>
<div className="text-neon-blue animate-pulse">
<Icon className="w-5 h-5" />
</div>
@@ -15,5 +17,6 @@ export const PanelHeader: React.FC<PanelHeaderProps> = ({ title, icon: Icon }) =
{title}
</h2>
<div className="flex-1 h-px bg-gradient-to-r from-neon-blue/50 to-transparent"></div>
{children}
</div>
);