Actualizar servicios.html

This commit is contained in:
2026-02-22 15:43:00 +00:00
parent 81c2813440
commit 2f9f33b251

View File

@@ -458,7 +458,7 @@
const searchTerm = document.getElementById('searchFilter').value.toLowerCase(); const searchTerm = document.getElementById('searchFilter').value.toLowerCase();
const selectedOp = document.getElementById('opFilter').value; const selectedOp = document.getElementById('opFilter').value;
const weekValue = document.getElementById('weekFilter').value; // Ej: "2023-W12" const weekValue = document.getElementById('weekFilter').value;
let kpiUnassigned = 0; let kpiUnassigned = 0;
let kpiScheduled = 0; let kpiScheduled = 0;
@@ -479,55 +479,54 @@
const stateInfo = getServiceStateInfo(s); const stateInfo = getServiceStateInfo(s);
s._stateInfo = stateInfo; s._stateInfo = stateInfo;
// --- NUEVO REPARTO DE KPIs --- // --- CÁLCULO DE KPIs (Solo para los bloques de colores superiores) ---
const stName = stateInfo.name.toLowerCase(); const stName = stateInfo.name.toLowerCase();
// 1. SIN ASIGNAR
if (stateInfo.id === 'bolsa' || stName.includes('pendiente de asignar') || stName.includes('desasignado')) { if (stateInfo.id === 'bolsa' || stName.includes('pendiente de asignar') || stName.includes('desasignado')) {
kpiUnassigned++; kpiUnassigned++;
} } else if (stName.includes('incidencia') || stName.includes('pausa')) {
// 2. INCIDENCIA (Roba prioridad a Terminados en el dashboard)
else if (stName.includes('incidencia') || stName.includes('pausa')) {
kpiIncident++; kpiIncident++;
} } else if (dateRaw !== "") {
// 3. AGENDADOS (Debe tener fecha)
else if (dateRaw !== "") {
kpiScheduled++; kpiScheduled++;
} } else if (!stateInfo.is_final && !stName.includes('terminado')) {
// 4. ESPERA CLIENTE / EN CURSO (Tiene operario pero no fecha)
else if (!stateInfo.is_final && !stName.includes('terminado')) {
kpiWaiting++; kpiWaiting++;
} }
// --- FILTROS VISUALES (Buscador, Operario, Semana, Estado) --- // --- FILTROS DE BÚSQUEDA ---
const matchesSearch = searchTerm === "" || name.includes(searchTerm) || ref.includes(searchTerm) || addr.includes(searchTerm) || pop.includes(searchTerm) || phone.includes(searchTerm) || comp.includes(searchTerm); const matchesSearch = searchTerm === "" || name.includes(searchTerm) || ref.includes(searchTerm) || addr.includes(searchTerm) || pop.includes(searchTerm) || phone.includes(searchTerm) || comp.includes(searchTerm);
const matchesOp = selectedOp === "ALL" || assigned === selectedOp; const matchesOp = selectedOp === "ALL" || assigned === selectedOp;
// --- FILTRO DE SEMANAS ---
let matchesWeek = true; let matchesWeek = true;
if (weekValue !== "") { if (weekValue !== "") {
// Si hemos filtrado por semana, mostramos los de esa semana O los que no tengan fecha para no perderlos de vista
if (dateRaw) { if (dateRaw) {
matchesWeek = isDateInWeekString(dateRaw, weekValue); matchesWeek = isDateInWeekString(dateRaw, weekValue);
} else {
matchesWeek = false; // Si hay filtro de semana y no tiene fecha, lo ocultamos
} }
} }
// --- FILTRO DE ESTADOS (El culpable arreglado) ---
let matchesStatus = false; let matchesStatus = false;
// 👇 ESTA ES LA REGLA CAMBIADA 👇
if (activeStatusFilter === "ALL") { if (activeStatusFilter === "ALL") {
matchesStatus = true; // AHORA MUESTRA ABSOLUTAMENTE TODO SIN EXCEPCIÓN // MODO DIOS: Si estás en "TODOS", muestra TODO.
matchesStatus = true;
} else { } else {
// Si pinchas un filtro concreto, comprueba que el ID coincida
matchesStatus = String(stateInfo.id) === activeStatusFilter; matchesStatus = String(stateInfo.id) === activeStatusFilter;
} }
return matchesSearch && matchesOp && matchesWeek && matchesStatus; return matchesSearch && matchesOp && matchesWeek && matchesStatus;
}); });
// Actualizamos Dashboards Superiores // Pintar contadores
document.getElementById('kpi-unassigned').innerText = kpiUnassigned; document.getElementById('kpi-unassigned').innerText = kpiUnassigned;
document.getElementById('kpi-scheduled').innerText = kpiScheduled; document.getElementById('kpi-scheduled').innerText = kpiScheduled;
document.getElementById('kpi-waiting').innerText = kpiWaiting; document.getElementById('kpi-waiting').innerText = kpiWaiting;
document.getElementById('kpi-incident').innerText = kpiIncident; document.getElementById('kpi-incident').innerText = kpiIncident;
// Pintar Tarjetas
const grid = document.getElementById('servicesGrid'); const grid = document.getElementById('servicesGrid');
grid.innerHTML = filteredData.length > 0 grid.innerHTML = filteredData.length > 0
? filteredData.map(s => buildGridCard(s)).join('') ? filteredData.map(s => buildGridCard(s)).join('')