diff --git a/calendario.html b/calendario.html
index 5938eff..31f59ea 100644
--- a/calendario.html
+++ b/calendario.html
@@ -513,28 +513,76 @@
'purple': { text: 'text-purple-600', bg: 'bg-purple-50', border: 'border-purple-100' }
};
- function renderServices() {
+ function renderServices() {
const container = document.getElementById('servicesList');
+ const dayTitle = document.getElementById('dayTitle');
const displayDate = selectedDateStr.split('-').reverse().join('/');
- document.getElementById('dayTitle').innerText = `DÍA ${displayDate}`;
+
+ const queryInput = document.getElementById('searchInput');
+ const query = queryInput ? queryInput.value.toLowerCase().trim() : "";
- const dayServices = localServices.filter(s => String(s.raw_data.scheduled_date || "").trim() === selectedDateStr);
- dayServices.sort((a, b) => String(a.raw_data.scheduled_time || "23:59").localeCompare(String(b.raw_data.scheduled_time || "23:59")));
+ let servicesToRender = [];
- if (dayServices.length === 0) {
- container.innerHTML = `
Día de Descanso
No tienes servicios para este día.
`;
+ // 🔥 MODO BÚSQUEDA GLOBAL O MODO DÍA NORMAL 🔥
+ if (query === "") {
+ // Modo Normal: Solo mostramos el día seleccionado en el carrusel
+ dayTitle.innerText = `DÍA ${displayDate}`;
+ servicesToRender = localServices.filter(s => String(s.raw_data.scheduled_date || "").trim() === selectedDateStr);
+
+ // Ordenar por hora
+ servicesToRender.sort((a, b) => String(a.raw_data.scheduled_time || "23:59").localeCompare(String(b.raw_data.scheduled_time || "23:59")));
+ } else {
+ // Modo Búsqueda: Ignoramos el día y buscamos en TODA la agenda
+ dayTitle.innerText = `RESULTADOS DE BÚSQUEDA TOTA LES`;
+ servicesToRender = localServices.filter(s => {
+ const raw = s.raw_data || {};
+ const searchString = `
+ ${s.service_ref || ""}
+ ${raw["Nombre Cliente"] || raw["CLIENTE"] || ""}
+ ${raw["Dirección"] || raw["DOMICILIO"] || ""}
+ ${raw["Población"] || raw["POBLACION-PROVINCIA"] || ""}
+ ${raw["Descripción"] || raw["DESCRIPCION"] || raw["Averia"] || ""}
+ ${raw["Compañía"] || raw["Procedencia"] || ""}
+ `.toLowerCase();
+ return searchString.includes(query);
+ });
+
+ // Ordenar por fecha y luego por hora
+ servicesToRender.sort((a, b) => {
+ const dateA = String(a.raw_data.scheduled_date || "9999-12-31");
+ const dateB = String(b.raw_data.scheduled_date || "9999-12-31");
+ if (dateA !== dateB) return dateA.localeCompare(dateB);
+ return String(a.raw_data.scheduled_time || "23:59").localeCompare(String(b.raw_data.scheduled_time || "23:59"));
+ });
+ }
+
+ // Si la lista final está vacía (ya sea por descanso o porque la búsqueda no coincide)
+ if (servicesToRender.length === 0) {
+ const isSearch = query !== "";
+ container.innerHTML = `
+
+
+
${isSearch ? 'Sin resultados' : 'Día de Descanso'}
+
${isSearch ? 'No hay coincidencias en toda tu agenda.' : 'No tienes servicios para este día.'}
+
`;
safeLoadIcons(); return;
}
- container.innerHTML = dayServices.map(s => {
+ container.innerHTML = servicesToRender.map(s => {
const raw = s.raw_data || {};
- const time = raw.scheduled_time || "--:--";
+ let time = raw.scheduled_time || "--:--";
+
+ // 🔥 DETALLE PRO: Si estamos buscando, mostramos el día de la cita en la tarjeta
+ if (query !== "" && raw.scheduled_date) {
+ const [y, m, d] = raw.scheduled_date.split('-');
+ time = `