import React, { useState, useEffect } from 'react'; import { Database, RefreshCw } from 'lucide-react'; import { comms } from '../communication'; import { ProcessedDataRow } from '../types'; import { PanelHeader } from './common/PanelHeader'; import { CyberPanel } from './common/CyberPanel'; export const ProcessedDataPanel: React.FC = () => { const [data, setData] = useState([]); const [loading, setLoading] = useState(false); const loadData = async () => { setLoading(true); try { const dataJson = await comms.getProcessedData(); const parsedData = JSON.parse(dataJson) as ProcessedDataRow[]; // Display only the first 5 rows setData(parsedData.slice(0, 5)); } catch (error) { console.error('[ProcessedDataPanel] Failed to load data:', error); } finally { setLoading(false); } }; useEffect(() => { loadData(); // Refresh every 5 seconds const interval = setInterval(loadData, 5000); return () => clearInterval(interval); }, []); const getRowBackgroundColor = (row: ProcessedDataRow) => { if (row.REMARK.startsWith('(BYPASS')) { return 'bg-sky-300/20'; } return row.LOC === 'L' ? 'bg-slate-700/20' : 'bg-slate-800/10'; }; const getRowTextColor = (row: ProcessedDataRow) => { if (row.REMARK.startsWith('(BYPASS')) { return 'text-white'; } if (!row.PRNATTACH) { return 'text-red-500'; } if (!row.PRNVALID) { return 'text-emerald-900'; } return 'text-slate-200'; }; return (
{data.length === 0 ? ( ) : ( data.map((row, index) => ( )) )}
R MODEL START BATCH SID RID VENDER QTY (MAX) MFG V.LOT PARTNO CPN Remark Attach Valid
{loading ? 'Loading...' : 'No data available'}
{row.target} {row.JTYPE} {row.STIME} {row.BATCH} {row.SID} {row.RID} {row.VNAME} {row.QTY.toLocaleString()} {row.qtymax.toLocaleString()} {row.MFGDATE} {row.VLOT} {row.PARTNO} {row.MCN} {row.REMARK}
); };