Filmá los ambientes de tu casa u oficina. Nuestro sistema identifica el mobiliario, calcula el volumen y te entrega una cotización estimada al instante — sin esperar visitas ni llamados.
1Grabá el video
Recorré cada ambiente lentamente, mostrando el mobiliario. Recomendado: 30 a 90 segundos.
Procesando...
2Volumen relevado
0 m³
0% de un camión estándar de 20 m³
3Presupuesto
Volumen relevado0 m³
PresupuestoA consultar
Con este volumen, nuestro equipo confirma el valor exacto y qué vehículo usar. Te contactamos con el presupuesto una vez que enviás tu solicitud.
✓Solicitudes recibidas
Sin solicitudes todavía.
// Crear modal de confirmación y esperar respuesta del usuario
function confirmDeleteLead(leadId, name, timestamp, btnEl){
const existing = document.getElementById('confirmOverlay');
if (existing) existing.remove();
const overlay = document.createElement('div');
overlay.id = 'confirmOverlay';
overlay.style = 'position:fixed;inset:0;background:rgba(0,0,0,0.6);display:flex;align-items:center;justify-content:center;z-index:9999;';
const card = document.createElement('div');
card.style = 'background:var(--white);color:var(--paper);padding:18px;border-radius:10px;max-width:420px;width:92%;';
const dateStr = new Date(timestamp).toLocaleString('es-AR');
card.innerHTML = `
Borrar solicitud
Vas a borrar la solicitud de ${name} del ${dateStr}. Esta acción es irrecuperable en Cloudflare.
`;
overlay.appendChild(card);
document.body.appendChild(overlay);
document.getElementById('cancelDel').addEventListener('click', ()=>{ overlay.remove(); });
document.getElementById('confirmDel').addEventListener('click', async ()=>{
try{
overlay.remove();
await performDeleteLead(leadId, btnEl);
} catch(err){ alert('No se pudo borrar la solicitud: '+ err.message); }
});
}
async function performDeleteLead(leadId, btnEl){
if (!adminKey) { adminKey = prompt('Contraseña de administrador:'); if (!adminKey) return; }
const r = await fetch(API_BASE + '/api/leads/' + encodeURIComponent(leadId), { method: 'DELETE', headers: { 'x-admin-key': adminKey } });
if (!r.ok){ const txt = await r.text(); alert('Error al borrar: '+ (txt || r.status)); return; }
// Quitar la tarjeta DOM asociada (navegar hacia el contenedor padre .lead-card)
let el = btnEl;
while (el && !el.classList.contains('lead-card')) el = el.parentElement;
if (el && el.parentElement) {
const parent = el.parentElement;
parent.removeChild(el);
// Si el grupo quedó vacío, intentar eliminar el encabezado anterior si corresponde
// buscamos el encabezado (un H3 creado justo antes del primer lead del grupo)
// si el siguiente elemento es otro H3 o no hay más .lead-card elementos, limpiamos
// Simplificamos: si no hay más .lead-card dentro leadsContainer, mostramos mensaje vacío
const container = document.getElementById('leadsContainer');
if (!container.querySelector('.lead-card')) container.innerHTML = '
Sin solicitudes todavía.
';
}
}
function escapeHtml(str){ return String(str).replace(/&/g,'&').replace(//g,'>').replace(/"/g,'"'); }