ui/react-app/src/views/ViewStatus.tsx (103 lines of code) (raw):
import {
Chip,
Container,
List,
ListItem,
SxProps,
Table,
TableCell,
tableCellClasses,
TableContainer,
TableRow,
TextareaAutosize,
Theme,
Typography,
} from '@mui/material';
import { useAMStatus } from '../client/am-client';
const tableStyle: SxProps<Theme> = {
[`& .${tableCellClasses.root}`]: {
borderBottom: 'none',
},
};
const tableHeaderStyle: SxProps<Theme> = {
fontWeight: 'bold',
};
interface tableCellProperties {
header: string;
content: string;
}
function CustomTableCell(props: tableCellProperties) {
const { header, content } = props;
return (
<TableRow>
<TableCell variant="head" sx={tableHeaderStyle}>
{header}
</TableCell>
<TableCell>{content}</TableCell>
</TableRow>
);
}
export default function ViewStatus() {
const { data } = useAMStatus();
if (data === undefined || data === null) {
return null;
}
return (
<Container maxWidth="md">
<Typography variant="h4">Status</Typography>
<TableContainer>
<Table size="small" sx={tableStyle}>
<CustomTableCell header="Uptime" content={data.uptime} />
</Table>
</TableContainer>
<Typography variant="h4">Cluster Status</Typography>
<Table size="small" sx={tableStyle}>
<CustomTableCell header="Name" content={data.cluster.name} />
<TableRow>
<TableCell variant="head" sx={tableHeaderStyle}>
Status
</TableCell>
<TableCell>
<Chip color={data.cluster.status === 'ready' ? 'success' : 'error'} label={data.cluster.status} />
</TableCell>
</TableRow>
<TableRow>
<TableCell variant="head" sx={tableHeaderStyle}>
Peers
</TableCell>
<TableCell>
<List>
{data.cluster.peers.map((peer, i) => {
return (
<ListItem disablePadding sx={{ display: 'list-item' }} key={i}>
<p>
Name: {peer.name}
<br />
Address: {peer.address}
</p>
</ListItem>
);
})}
</List>
</TableCell>
</TableRow>
</Table>
<Typography variant="h4">Version Information</Typography>
<TableContainer>
<Table size="small" sx={tableStyle}>
<CustomTableCell header="Branch" content={data.versionInfo.branch} />
<CustomTableCell header="Build Date" content={data.versionInfo.buildDate} />
<CustomTableCell header="Build User" content={data.versionInfo.buildUser} />
<CustomTableCell header="Go Version" content={data.versionInfo.goVersion} />
<CustomTableCell header="Revision" content={data.versionInfo.revision} />
<CustomTableCell header="Version" content={data.versionInfo.version} />
</Table>
</TableContainer>
<Typography variant="h4">Config</Typography>
<TextareaAutosize
readOnly
aria-multiline
value={data.config.original}
style={{ width: '100%', backgroundColor: 'lightgrey' }}
/>
</Container>
);
}