Обновление файла

This commit is contained in:
2026-07-25 03:34:13 +03:00
parent 139d76fcc9
commit b9e333d581
+9 -11
View File
@@ -1,13 +1,11 @@
import React, { useEffect, useState, useCallback } from "react"; import React, { useEffect, useState, useCallback } from "react";
import { useParams, useNavigate } from "react-router-dom"; import { useParams, useNavigate } from "react-router-dom";
import { api } from "../api.js"; import { api } from "../api.js";
import ConsoleViewer from "../components/ConsoleViewer.jsx";
export default function InstanceDetail() { export default function InstanceDetail() {
const { id } = useParams(); const { id } = useParams();
const navigate = useNavigate(); const navigate = useNavigate();
const [instance, setInstance] = useState(null); const [instance, setInstance] = useState(null);
const [showConsole, setShowConsole] = useState(false);
const [error, setError] = useState(""); const [error, setError] = useState("");
const [busy, setBusy] = useState(false); const [busy, setBusy] = useState(false);
@@ -75,20 +73,20 @@ export default function InstanceDetail() {
<button className="btn" disabled={busy || instance.status !== "running"} onClick={() => doAction("stop")}> <button className="btn" disabled={busy || instance.status !== "running"} onClick={() => doAction("stop")}>
Стоп (force) Стоп (force)
</button> </button>
<button className="btn" onClick={() => setShowConsole((v) => !v)}>
{showConsole ? "Скрыть консоль" : "Открыть консоль"}
</button>
<button className="btn btn-danger" disabled={busy} onClick={doDelete}> <button className="btn btn-danger" disabled={busy} onClick={doDelete}>
Удалить Удалить
</button> </button>
</div> </div>
</div> </div>
{showConsole && ( <div className="card">
<div className="card"> <h3 style={{ marginTop: 0 }}>Подключение</h3>
<ConsoleViewer instanceId={instance.id} /> <p className="instance-meta">
</div> Для доступа к виртуальной машине используйте SSH с IP-адресом,
)} который отображается в дашборде, и учётными данными cloud-init,
заданными при создании.
</p>
</div>
</div> </div>
); );
} }