From ab9414e2a93f9240828ed55318ad215146e2bc97 Mon Sep 17 00:00:00 2001 From: marsalva Date: Sun, 6 Sep 2026 20:41:39 +0000 Subject: [PATCH] =?UTF-8?q?Fix:=20la=20burbuja=20de=20"Solicitar=20Servici?= =?UTF-8?q?os"=20ahora=20cuenta=20tambi=C3=A9n=20los=20avisos=20sin=20grem?= =?UTF-8?q?io?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit El contador de menu.html (badgeBolsa) solo contaba avisos con gremio coincidente, igual que antes de la regla nueva de solicitar.html que deja ver los avisos sin gremio a cualquiera. Ahora usa el mismo criterio (guildOk) y la burbuja muestra "X servicios y X sin gremio" en vez de solo "X libres", para que cuadre con lo que se ve al entrar en Solicitar Servicios. --- menu.html | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/menu.html b/menu.html index 6a86161..0a7fe45 100644 --- a/menu.html +++ b/menu.html @@ -237,22 +237,32 @@ const dataScraped = await resScraped.json(); if (dataScraped.ok) { let bolsaCount = 0; + let sinGremioCount = 0; dataScraped.services.forEach(s => { if(s.assigned_to || s.provider === 'SYSTEM_BLOCK') return; const raw = s.raw_data || {}; const dbStatus = raw.status_operativo; if(s.status === 'archived' || (dbStatus && ['anulado', 'terminado', 'finalizado'].includes(dbStatus.toLowerCase()))) return; - const sGuild = String(s.guild_id || raw.guild_id); + // 🆕 Mismo criterio que solicitar.html: si el aviso no tiene gremio asignado + // de verdad, es visible para cualquier operario (antes esto no se contaba aquí, + // por eso el número de la burbuja no cuadraba con lo que salía en la lista). + const rawGuildId = s.guild_id ?? raw.guild_id; + const hasGuild = rawGuildId !== undefined && rawGuildId !== null && String(rawGuildId).trim() !== "" && String(rawGuildId) !== "0"; + const sGuild = String(rawGuildId); const sCp = String(raw['Código Postal'] || raw['CP'] || "").trim(); - const matchGuild = userGuilds.includes(Number(sGuild)) || userGuilds.includes(String(sGuild)); + const matchGuild = hasGuild && (userGuilds.includes(Number(sGuild)) || userGuilds.includes(String(sGuild))); const matchZone = userZones.some(z => sCp.startsWith(z)); - if((userGuilds.length === 0 || matchGuild) && (userZones.length === 0 || matchZone)) { + const guildOk = !hasGuild || userGuilds.length === 0 || matchGuild; + if(guildOk && (userZones.length === 0 || matchZone)) { bolsaCount++; + if (!hasGuild) sinGremioCount++; } }); if (bolsaCount > 0) { const b2 = document.getElementById('badgeBolsa'); - b2.innerText = `${bolsaCount} libre${bolsaCount > 1 ? 's' : ''}`; + let texto = `${bolsaCount} servicio${bolsaCount > 1 ? 's' : ''}`; + if (sinGremioCount > 0) texto += ` y ${sinGremioCount} sin gremio`; + b2.innerText = texto; b2.classList.remove('hidden'); } }