import VisibilityIcon from "@mui/icons-material/Visibility"; import { Button, IconButton, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Tooltip, } from "@mui/material"; import { filesize } from "filesize"; import React from "react"; import { useNavigate } from "react-router-dom"; import { VMApi, VMInfo } from "../api/VMApi"; import { AsyncWidget } from "../widgets/AsyncWidget"; import { RouterLink } from "../widgets/RouterLink"; import { VirtWebRouteContainer } from "../widgets/VirtWebRouteContainer"; import { VMStatusWidget } from "../widgets/vms/VMStatusWidget"; export function VMListRoute(): React.ReactElement { const [list, setList] = React.useState(); const loadKey = React.useRef(1); const load = async () => { setList(await VMApi.GetList()); }; const reload = () => { loadKey.current += 1; setList(undefined); }; return ( ( } > )} /> ); } function VMListWidget(p: { list: VMInfo[]; onReload: () => void; }): React.ReactElement { const navigate = useNavigate(); return ( Name Description Memory Status Actions {p.list.map((row) => ( navigate(row.ViewURL)} > {row.name} {row.description ?? ""} {filesize(row.memory * 1000 * 1000)} ))}
); }