diff --git a/frontend/app/pages/servers/index.vue b/frontend/app/pages/servers/index.vue index d35ff61..175072f 100644 --- a/frontend/app/pages/servers/index.vue +++ b/frontend/app/pages/servers/index.vue @@ -5,106 +5,220 @@ const { apiFetch } = useApi() const servers = ref([]) const newServer = ref({ - hostname: "", - description: "" + hostname: "", + description: "", + owner_id: null }) const loading = ref(false) const error = ref("") -async function loadServers() { - loading.value = true - try { - servers.value = await apiFetch("/servers") - } catch (e: any) { - error.value = e.message - } finally { - loading.value = false +const editingId = ref(null) + +const editServer = ref({ + hostname: "", + description: "", + owner_id: null +}) + +function startEdit(server: any) { + editingId.value = Number(server.id) + editServer.value = { + hostname: server.hostname, + description: server.description, + owner_id: server.owner_id } } +function cancelEdit() { + editingId.value = null +} -async function createServer() { - if (!newServer.value.hostname.trim()) return - +async function saveEdit(serverId: number) { try { - const server = await apiFetch("/servers", { - method: "POST", + const updated = await apiFetch(`/servers/${serverId}`, { + method: "PUT", body: { - hostname: newServer.value.hostname, - description: newServer.value.description + hostname: editServer.value.hostname, + description: editServer.value.description, + owner_id: editServer.value.owner_id } }) - servers.value.push(server) - newServer.value = { hostname: "", description: "" } + // Liste aktualisieren + const idx = servers.value.findIndex(s => s.id === serverId) + if (idx !== -1) servers.value[idx] = updated + + editingId.value = null } catch (e: any) { error.value = e.message } } + +const owners = ref([]) + +async function loadOwners() { + try { + owners.value = await apiFetch("/owners") + } catch (e: any) { + error.value = e.message + } +} + +async function loadServers() { + loading.value = true + try { + servers.value = await apiFetch("/servers") + } catch (e: any) { + error.value = e.message + } finally { + loading.value = false + } +} + +async function createServer() { + if (!newServer.value.hostname.trim()) return + + try { + const server = await apiFetch("/servers", { + method: "POST", + body: { + hostname: newServer.value.hostname, + description: newServer.value.description, + owner_id: newServer.value.owner_id + } + }) + + servers.value.push(server) + newServer.value = { hostname: "", description: "" } + } catch (e: any) { + error.value = e.message + } +} + onMounted(() => { - loadServers() + loadOwners() + loadServers() })