Carregando...
async function loadTrackerSmartList() { const select = document.getElementById("objTracker"); if (!select) return; select.innerHTML = ''; try { const res = await fetch('/api/v2/trackers/smart-list', { credentials: 'include' }); const json = await res.json(); const items = json.items || []; for (const tr of items) { const opt = document.createElement('option'); opt.value = tr.selectable ? tr.id : ''; if (tr.status === 'available') { opt.textContent = `${tr.nome || tr.apelido || 'Tracker'} - ${tr.identificador} [Disponível]`; } else { opt.textContent = `${tr.nome || tr.apelido || 'Tracker'} - ${tr.identificador} [Em uso por: ${tr.object_name || '-'} / ${tr.user_name || '-'}]`; opt.disabled = true; } select.appendChild(opt); } } catch (e) { console.error('Erro ao carregar smart-list de trackers', e); } } async function saveObjeto() { try { const nomeEl = document.getElementById("objNome"); const tipoEl = document.getElementById("objTipo"); const trackerEl = document.getElementById("objTracker"); const fotoFile = document.getElementById("objFotoFile"); if (!nomeEl) { alert("Erro interno: campo nome não encontrado"); return; } const nome = (nomeEl.value || "").trim(); if (!nome) { alert("Digite o nome do objeto"); return; } let fotoUrl = null; // upload da foto if (fotoFile && fotoFile.files && fotoFile.files[0]) { const fd = new FormData(); fd.append("file", fotoFile.files[0]); const up = await fetch("/api/v2/upload/object-photo", { method: "POST", body: fd }); if (!up.ok) { throw new Error("Erro ao subir foto"); } const j = await up.json(); fotoUrl = j.public_url || j.url || null; } const payload = { name: nome, type: tipoEl ? tipoEl.value : "outro", photo: fotoUrl, tracker_id: trackerEl && trackerEl.value ? Number(trackerEl.value) : null }; const res = await fetch("/api/v2/tracked-objects", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload) }); const data = await res.json(); if (!res.ok) { throw new Error(data.detail || "Erro ao salvar"); } closeModal(); loadApp(); } catch (e) { alert("Erro ao salvar objeto: " + e.message); } }