diff --git a/calendario.html b/calendario.html index 60af148..3e4b1ca 100644 --- a/calendario.html +++ b/calendario.html @@ -46,7 +46,7 @@ .desc-box { background: white; border: 1px solid #e2e8f0; border-radius: 1.5rem; padding: 1.25rem; } -
+Consultando Base de Datos...
Compañía
@@ -131,12 +131,12 @@Ubicación
@@ -151,10 +151,10 @@Asignar Fechas y Tiempos
-Cambio de Estado
-Descripción Técnica
Sin datos adicionales.
'; - // CARGAMOS LA FECHA, LA HORA Y LA DURACIÓN EN EL MODAL document.getElementById('dateInput').value = raw.scheduled_date || ""; document.getElementById('timeInput').value = raw.scheduled_time || ""; document.getElementById('durationInput').value = raw.duration_minutes || "60"; const dbStat = raw.status_operativo; - const foundById = systemStatuses.find(st => String(st.id) === String(dbStat)); - if(foundById) document.getElementById('detStatusMap').value = foundById.id; + if(dbStat) document.getElementById('detStatusMap').value = dbStat; const modal = document.getElementById('serviceModal'); modal.style.display = 'flex'; setTimeout(() => modal.classList.remove('translate-y-full'), 10); calculateDistance(fullAddress); + safeLoadIcons(); } function closeModal() { @@ -501,6 +511,9 @@ async function calculateDistance(dest) { if(!navigator.geolocation) return; + document.getElementById('gpsLoading').classList.remove('hidden'); + document.getElementById('gpsResult').classList.add('hidden'); + navigator.geolocation.getCurrentPosition(async (pos) => { const lat = pos.coords.latitude; const lon = pos.coords.longitude; try { @@ -540,7 +553,6 @@ } catch (e) { alert("Error"); } } - // --- FUNCIÓN ACTUALIZADA PARA CAPTURAR LA DURACIÓN --- async function saveAppointment() { const id = document.getElementById('detId').value; const date = document.getElementById('dateInput').value; @@ -558,23 +570,30 @@ const originalContent = btn.innerHTML; btn.innerHTML = ` Guardando...`; btn.disabled = true; + safeLoadIcons(); try { - await fetch(`${API_URL}/services/set-appointment/${id}`, { + const res = await fetch(`${API_URL}/services/set-appointment/${id}`, { method: 'PUT', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify({ date, time, duration_minutes: duration, status_operativo: statusMap }) }); - closeDetailModal(); showToast("Estado actualizado"); refreshData(); - } catch (e) { alert("Error"); } - finally { btn.innerHTML = originalContent; btn.disabled = false; } + if (res.ok) { + showToast("Estado actualizado"); + closeModal(); + refreshData(); + } else { + alert("Error al guardar"); + } + } catch (e) { alert("Error de conexión"); } + finally { btn.innerHTML = originalContent; btn.disabled = false; safeLoadIcons(); } } function showToast(m) { const t = document.getElementById('toast'); document.getElementById('toastMsg').innerText = m; - t.classList.remove('opacity-0', '-translate-y-10'); t.classList.add('translate-y-0'); - setTimeout(() => { t.classList.add('opacity-0', '-translate-y-10'); t.classList.remove('translate-y-0'); }, 2000); + t.classList.remove('opacity-0', 'pointer-events-none', '-translate-y-10'); t.classList.add('translate-y-0'); + setTimeout(() => { t.classList.add('opacity-0', 'pointer-events-none', '-translate-y-10'); t.classList.remove('translate-y-0'); }, 2000); } function logout() { localStorage.clear(); window.location.href = "index.html"; }