Improve VM screen

This commit is contained in:
2024-01-02 19:52:59 +01:00
parent d4ef389852
commit 767d2015df
2 changed files with 111 additions and 50 deletions

View File

@ -1,4 +1,3 @@
import DeleteIcon from "@mui/icons-material/Delete";
import VisibilityIcon from "@mui/icons-material/Visibility";
import {
Button,
@ -14,15 +13,12 @@ import {
} 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";
import { useSnackbar } from "../hooks/providers/SnackbarProvider";
import { useConfirm } from "../hooks/providers/ConfirmDialogProvider";
import { useNavigate } from "react-router-dom";
import { useAlert } from "../hooks/providers/AlertDialogProvider";
export function VMListRoute(): React.ReactElement {
const [list, setList] = React.useState<VMInfo[] | undefined>();
@ -66,39 +62,8 @@ function VMListWidget(p: {
list: VMInfo[];
onReload: () => void;
}): React.ReactElement {
const confirm = useConfirm();
const alert = useAlert();
const snackbar = useSnackbar();
const navigate = useNavigate();
const deleteVM = async (v: VMInfo) => {
try {
if (
!(await confirm(
`Do you really want to delete the vm ${v.name}? The operation CANNOT be undone!`,
"Delete a VM",
"DELETE"
))
)
return;
const keepData = !(await confirm(
"Do you want to delete the files of the VM?",
"Delete a VM",
"Delete the data",
"keep the data"
));
await VMApi.Delete(v, keepData);
snackbar("The VM was successfully deleted!");
p.onReload();
} catch (e) {
console.error(e);
alert(`Failed to delete VM!\n${e}`);
}
};
return (
<TableContainer component={Paper}>
<Table>
@ -135,11 +100,6 @@ function VMListWidget(p: {
</IconButton>
</RouterLink>
</Tooltip>
<Tooltip title="Delete this VM">
<IconButton onClick={() => deleteVM(row)}>
<DeleteIcon />
</IconButton>
</Tooltip>
</TableCell>
</TableRow>
))}