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) => `
${escapeHtml(item.name)} ${escapeHtml(item.description)}
` ) .join(""); } catch { el.innerHTML = "

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; }