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'); } }