import React from 'react'; import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Typography, Box } from '@mui/material'; import { secondsToTime } from './common'; const NodeList = ({ nodes, selectedNodeId, setSelectedNodeId }) => { const handleRowClick = (key) => { if (key === selectedNodeId) { setSelectedNodeId(null); return; } setSelectedNodeId(Number(key)); }; const getModeColor = (mode) => { switch (mode) { case 'OPERATIONAL': return ''; case 'INITIALIZATION': return 'warning.main'; case 'MAINTENANCE': return 'secondary.main'; case 'SOFTWARE_UPDATE': return 'success.main'; case 'OFFLINE': return 'error.main'; default: return 'error.main'; } }; const renderNodeRow = (key) => { const node = nodes[key]; const status = node.status; const health = status.getConstant('health'); const mode = status.getConstant('mode'); const isSelected = Number(key) === Number(selectedNodeId); return ( handleRowClick(Number(key))} sx={{ cursor: 'pointer', backgroundColor: isSelected ? 'rgba(204, 120, 92, 0.08)' : 'transparent', '&:hover': { backgroundColor: 'rgba(245, 240, 232, 0.9)', }, }} > {key} {node.name} {health} {mode} {secondsToTime(status.uptime_sec)} {node.status.vendor_specific_status_code} ); }; return ( Online Nodes NID Name Health Mode Uptime VSSC {Object.keys(nodes).map((key) => renderNodeRow(key))}
); }; export default NodeList;