fixes and improvements
This commit is contained in:
@@ -182,13 +182,33 @@ function MachineEditor({
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid size={{ xs: 12, md: 3 }}>
|
<Grid size={{ xs: 12, md: 3 }}>
|
||||||
<TextField
|
{editingMachine ? (
|
||||||
fullWidth
|
<TextField
|
||||||
size="small"
|
fullWidth
|
||||||
label="Mode"
|
size="small"
|
||||||
value={draft.mode}
|
label="Mode"
|
||||||
disabled
|
value={draft.mode}
|
||||||
/>
|
disabled
|
||||||
|
/>
|
||||||
|
) : (
|
||||||
|
<TextField
|
||||||
|
select
|
||||||
|
fullWidth
|
||||||
|
size="small"
|
||||||
|
label="Mode"
|
||||||
|
value={draft.mode}
|
||||||
|
onChange={(e) => {
|
||||||
|
const newMode = e.target.value as MonitoringMachineInput["mode"];
|
||||||
|
setDraft((current) => ({
|
||||||
|
...emptyMachine(newMode),
|
||||||
|
id: current.id,
|
||||||
|
}));
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MenuItem value="local">Local</MenuItem>
|
||||||
|
<MenuItem value="ssh">SSH</MenuItem>
|
||||||
|
</TextField>
|
||||||
|
)}
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid size={{ xs: 12, md: 3 }}>
|
<Grid size={{ xs: 12, md: 3 }}>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
@@ -1073,29 +1093,11 @@ export function Settings() {
|
|||||||
null,
|
null,
|
||||||
[orderedMachines, selectedMachineId],
|
[orderedMachines, selectedMachineId],
|
||||||
);
|
);
|
||||||
const localMachines = orderedMachines.filter(
|
|
||||||
(machine) => machine.mode === "local",
|
|
||||||
);
|
|
||||||
const sshMachines = orderedMachines.filter(
|
|
||||||
(machine) => machine.mode === "ssh",
|
|
||||||
);
|
|
||||||
const clearSSHValidation = () => {
|
const clearSSHValidation = () => {
|
||||||
setSSHValidationMessage("");
|
setSSHValidationMessage("");
|
||||||
setSSHValidationError("");
|
setSSHValidationError("");
|
||||||
setSSHValidationStatus("");
|
setSSHValidationStatus("");
|
||||||
};
|
};
|
||||||
const beginLocal = () => {
|
|
||||||
clearSSHValidation();
|
|
||||||
setMachineDraft(emptyMachine("local"));
|
|
||||||
setEditingMachine(null);
|
|
||||||
setMachineDialogOpen(true);
|
|
||||||
};
|
|
||||||
const beginRemote = () => {
|
|
||||||
clearSSHValidation();
|
|
||||||
setMachineDraft(emptyMachine("ssh"));
|
|
||||||
setEditingMachine(null);
|
|
||||||
setMachineDialogOpen(true);
|
|
||||||
};
|
|
||||||
const openEditMachine = (input: MonitoringMachineInput, original?: MonitoringMachine | null) => {
|
const openEditMachine = (input: MonitoringMachineInput, original?: MonitoringMachine | null) => {
|
||||||
clearSSHValidation();
|
clearSSHValidation();
|
||||||
setMachineDraft(input);
|
setMachineDraft(input);
|
||||||
@@ -1178,66 +1180,6 @@ export function Settings() {
|
|||||||
>
|
>
|
||||||
{tab === "machines" && (
|
{tab === "machines" && (
|
||||||
<Stack spacing={2}>
|
<Stack spacing={2}>
|
||||||
<Card variant="outlined">
|
|
||||||
<CardContent sx={{ p: 1.5 }}>
|
|
||||||
<Stack spacing={1.25}>
|
|
||||||
<Stack
|
|
||||||
direction="row"
|
|
||||||
spacing={1}
|
|
||||||
sx={{
|
|
||||||
alignItems: "center",
|
|
||||||
justifyContent: "space-between",
|
|
||||||
flexWrap: "wrap",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Box>
|
|
||||||
<Typography
|
|
||||||
variant="overline"
|
|
||||||
sx={{
|
|
||||||
display: "block",
|
|
||||||
lineHeight: 1.1,
|
|
||||||
color: "text.secondary",
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Quick actions
|
|
||||||
</Typography>
|
|
||||||
<Typography variant="body2" color="text.secondary">
|
|
||||||
Create a local profile or remote SSH target.
|
|
||||||
</Typography>
|
|
||||||
</Box>
|
|
||||||
<Stack
|
|
||||||
direction="row"
|
|
||||||
spacing={1}
|
|
||||||
sx={{ flexWrap: "wrap" }}
|
|
||||||
>
|
|
||||||
<Chip
|
|
||||||
label={`${orderedMachines.length} total`}
|
|
||||||
size="small"
|
|
||||||
variant="outlined"
|
|
||||||
/>
|
|
||||||
<Chip
|
|
||||||
label={`${localMachines.length} local`}
|
|
||||||
size="small"
|
|
||||||
variant="outlined"
|
|
||||||
/>
|
|
||||||
<Chip
|
|
||||||
label={`${sshMachines.length} ssh`}
|
|
||||||
size="small"
|
|
||||||
variant="outlined"
|
|
||||||
/>
|
|
||||||
</Stack>
|
|
||||||
</Stack>
|
|
||||||
<Stack direction="row" spacing={1} sx={{ flexWrap: "wrap" }}>
|
|
||||||
<Button variant="outlined" onClick={beginLocal}>
|
|
||||||
New local machine
|
|
||||||
</Button>
|
|
||||||
<Button variant="outlined" onClick={beginRemote}>
|
|
||||||
New SSH machine
|
|
||||||
</Button>
|
|
||||||
</Stack>
|
|
||||||
</Stack>
|
|
||||||
</CardContent>
|
|
||||||
</Card>
|
|
||||||
{orderedMachines.length > 0 ? (
|
{orderedMachines.length > 0 ? (
|
||||||
<Box
|
<Box
|
||||||
sx={{
|
sx={{
|
||||||
@@ -1253,6 +1195,21 @@ export function Settings() {
|
|||||||
title="Machines"
|
title="Machines"
|
||||||
description="Select a machine to see its settings."
|
description="Select a machine to see its settings."
|
||||||
minHeight={420}
|
minHeight={420}
|
||||||
|
footer={
|
||||||
|
<Button
|
||||||
|
variant="outlined"
|
||||||
|
size="small"
|
||||||
|
fullWidth
|
||||||
|
onClick={() => {
|
||||||
|
clearSSHValidation();
|
||||||
|
setMachineDraft(emptyMachine("local"));
|
||||||
|
setEditingMachine(null);
|
||||||
|
setMachineDialogOpen(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Add machine
|
||||||
|
</Button>
|
||||||
|
}
|
||||||
>
|
>
|
||||||
<Box sx={{ flex: 1, overflowY: "auto" }}>
|
<Box sx={{ flex: 1, overflowY: "auto" }}>
|
||||||
{orderedMachines.map((machine) => {
|
{orderedMachines.map((machine) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user