From 4647e26973564af0cd316a4fab8bf0d6ccbb6d2a Mon Sep 17 00:00:00 2001 From: host Date: Sun, 9 Aug 2026 18:59:07 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=20=D0=B0=D1=80=D1=85?= =?UTF-8?q?=D0=B8=D0=B2=D0=BD=D0=BE=D0=B3=D0=BE=20LXC-=D1=88=D0=B0=D0=B1?= =?UTF-8?q?=D0=BB=D0=BE=D0=BD=D0=B0=20=D0=B2=20=D1=84=D0=BE=D1=80=D0=BC?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/pages/AdminTemplates.jsx | 38 ++++++++++++++++++--------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/frontend/src/pages/AdminTemplates.jsx b/frontend/src/pages/AdminTemplates.jsx index 22871a6..3cf8cf7 100644 --- a/frontend/src/pages/AdminTemplates.jsx +++ b/frontend/src/pages/AdminTemplates.jsx @@ -20,11 +20,14 @@ export default function AdminTemplates() { const [busy, setBusy] = useState(false); const [importing, setImporting] = useState(null); + const vmTemplates = proxmoxTemplates?.vm_templates || []; + const lxcTemplates = proxmoxTemplates?.lxc_templates || []; + async function refresh() { setTemplates(await api.listTemplates()); } - async function fetchProxmox() { + async function findTemplates() { setError(""); setBusy(true); try { @@ -38,8 +41,8 @@ export default function AdminTemplates() { async function importVm(vm) { const key = `vm-${vm.vmid}`; - setError(""); setImporting(key); + setError(""); try { await api.createTemplate({ name: vm.name || `VM-${vm.vmid}`, @@ -60,8 +63,8 @@ export default function AdminTemplates() { async function importLxc(archive) { const key = `lxc-${archive.volid}`; - setError(""); setImporting(key); + setError(""); try { await api.createTemplate({ name: archive.name, @@ -120,9 +123,6 @@ export default function AdminTemplates() { } } - const vmTemplates = proxmoxTemplates?.vm_templates || []; - const lxcTemplates = proxmoxTemplates?.lxc_templates || []; - return (

Шаблоны VPS

@@ -130,7 +130,7 @@ export default function AdminTemplates() {

🔍 Найти шаблоны на Proxmox

- @@ -138,7 +138,7 @@ export default function AdminTemplates() {

🖥 VM-шаблоны

- {vmTemplates.length > 0 ? ( + {vmTemplates.length ? ( {vmTemplates.map((vm) => { @@ -156,16 +156,14 @@ export default function AdminTemplates() {

📦 Архивные LXC-шаблоны

- {lxcTemplates.length > 0 ? ( + {lxcTemplates.length ? (
VMIDИмяvCPURAM
{lxcTemplates.map((archive) => { const key = `lxc-${archive.volid}`; return ( - - - + ); @@ -182,11 +180,25 @@ export default function AdminTemplates() {
set("name", e.target.value)} required />
+ {form.guest_type === "vm" ? (
set("source_vmid", e.target.value)} placeholder="999" required />
) : ( -
set("source_template", e.target.value)} placeholder="local:vztmpl/..." required />
+
+ + +
)} +
set("description", e.target.value)} />
set("cores", e.target.value)} />
set("memory_mb", e.target.value)} />
ИмяХранилищеРазмер
{archive.name}{archive.storage || "—"}{archive.size_mb || 0} МБ{archive.name}{archive.storage || "—"}{archive.size_mb || 0} МБ