document.addEventListener("DOMContentLoaded", () => { loadItems(); loadHealth(); document.getElementById("add-form").addEventListener("submit", async (e) => { e.preventDefault(); const name = document.getElementById("item-name").value.trim(); const desc = document.getElementById("item-desc").value.trim(); if (!name) return; await fetch("/api/items", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, description: desc }), }); document.getElementById("item-name").value = ""; document.getElementById("item-desc").value = ""; loadItems(); }); }); async function loadItems() { const el = document.getElementById("items-list"); try { const res = await fetch("/api/items"); const data = await res.json(); if (!data.items || data.items.length === 0) { el.innerHTML = "
No items yet.
"; return; } el.innerHTML = data.items .map( (item) => `Failed to load items.
"; } } async function deleteItem(id) { await fetch(`/api/items/${id}`, { method: "DELETE" }); loadItems(); } async function loadHealth() { const el = document.getElementById("health"); try { const res = await fetch("/api/health"); const data = await res.json(); el.textContent = JSON.stringify(data, null, 2); } catch { el.textContent = "Health check failed"; } } function escapeHtml(text) { const div = document.createElement("div"); div.appendChild(document.createTextNode(text)); return div.innerHTML; }