Turn XML routes into tabs

This commit is contained in:
2024-01-03 11:54:56 +01:00
parent f890cba5a4
commit ffac6991c4
8 changed files with 59 additions and 117 deletions

View File

@ -1,50 +0,0 @@
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { IconButton } from "@mui/material";
import React from "react";
import { useParams } from "react-router-dom";
import { NetworkApi, NetworkInfo, NetworkURL } from "../api/NetworksApi";
import { AsyncWidget } from "../widgets/AsyncWidget";
import { RouterLink } from "../widgets/RouterLink";
import { VirtWebRouteContainer } from "../widgets/VirtWebRouteContainer";
import { XMLWidget } from "../widgets/XMLWidget";
export function NetXMLRoute(): React.ReactElement {
const { uuid } = useParams();
const [net, setNet] = React.useState<NetworkInfo | undefined>();
const [src, setSrc] = React.useState<string | undefined>();
const load = async () => {
setNet(await NetworkApi.GetSingle(uuid!));
setSrc(await NetworkApi.GetSingleXML(uuid!));
};
return (
<AsyncWidget
loadKey={uuid}
load={load}
errMsg="Failed to load network information!"
build={() => <XMLRouteInner net={net!} src={src!} />}
/>
);
}
function XMLRouteInner(p: {
net: NetworkInfo;
src: string;
}): React.ReactElement {
return (
<VirtWebRouteContainer
label={`XML definition of ${p.net.name}`}
actions={
<RouterLink to={NetworkURL(p.net)}>
<IconButton>
<ArrowBackIcon />
</IconButton>
</RouterLink>
}
>
<XMLWidget src={p.src} />
</VirtWebRouteContainer>
);
}

View File

@ -42,14 +42,6 @@ function VMRouteBody(p: { vm: VMInfo }): React.ReactElement {
<span style={{ display: "inline-flex", alignItems: "center" }}>
<VMStatusWidget vm={p.vm} onChange={setState} />
<RouterLink to={p.vm.XMLURL}>
<Tooltip title="View domain definition">
<IconButton size="small">
<Icon path={mdiXml} style={{ width: "1em" }} />
</IconButton>
</Tooltip>
</RouterLink>
<ConfigImportExportButtons
filename={`vm-${p.vm.name}.json`}
currentConf={p.vm}

View File

@ -1,47 +0,0 @@
import React from "react";
import { useParams } from "react-router-dom";
import { VMApi, VMInfo } from "../api/VMApi";
import { AsyncWidget } from "../widgets/AsyncWidget";
import { VirtWebRouteContainer } from "../widgets/VirtWebRouteContainer";
import { IconButton } from "@mui/material";
import { RouterLink } from "../widgets/RouterLink";
import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import { XMLWidget } from "../widgets/XMLWidget";
export function VMXMLRoute(): React.ReactElement {
const { uuid } = useParams();
const [vm, setVM] = React.useState<VMInfo | undefined>();
const [src, setSrc] = React.useState<string | undefined>();
const load = async () => {
setVM(await VMApi.GetSingle(uuid!));
setSrc(await VMApi.GetSingleXML(uuid!));
};
return (
<AsyncWidget
loadKey={uuid}
load={load}
errMsg="Failed to load VM information!"
build={() => <XMLRouteInner vm={vm!} src={src!} />}
/>
);
}
function XMLRouteInner(p: { vm: VMInfo; src: string }): React.ReactElement {
return (
<VirtWebRouteContainer
label={`XML definition of ${p.vm.name}`}
actions={
<RouterLink to={p.vm.ViewURL}>
<IconButton>
<ArrowBackIcon />
</IconButton>
</RouterLink>
}
>
<XMLWidget src={p.src} />
</VirtWebRouteContainer>
);
}

View File

@ -51,14 +51,6 @@ function ViewNetworkRouteInner(p: {
<span style={{ display: "flex", alignItems: "center" }}>
<NetworkStatusWidget net={p.network} onChange={setNetStatus} />
<RouterLink to={NetworkXMLURL(p.network)}>
<Tooltip title="View network definition">
<IconButton size="small">
<Icon path={mdiXml} style={{ width: "1em" }} />
</IconButton>
</Tooltip>
</RouterLink>
<ConfigImportExportButtons
filename={`net-${p.network.name}.json`}
currentConf={p.network}