hbox-docs/docs/js/sitio.js
Leopoldo Rodríguez 4cc18b517f Cuentas en bloque, contraseña inicial y sitio/correo en Equipo
backend/cuentas.py: restablece en bloque (todos menos leo y claude) y da de alta
a varios desde backend/cuentas/2026-10-23_alta-sitios.json (jesush, miguel, joel,
antonio, danielg); la contraseña la pide en la terminal. Miembros con sitio,
correo y correo_alt; marca contrasena_inicial con aviso en el sitio hasta que la
persona la cambie. Los ids de responsable se recalculan con el equipo de hoy.
Lote 2026-10-23_usuarios-campo. Pruebas: tests-cuentas.sh (47).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016X4CAujMuib2tDqt9JRg6X
2026-10-23 14:14:50 -06:00

52 lines
2.7 KiB
JavaScript

/* Sitio Drogheda: detalles que necesitan datos del servidor en todas las páginas.
- Junto a «Pendientes» en el menú lateral, cuántos hay abiertos (de /api/tareas/resumen).
- (23-oct) Quien sigue con la contraseña inicial (la que le dieron al darle acceso o al restablecerla) ve una
franja arriba con la liga a Mi cuenta. Lo dice /api/whoami; el servidor quita la marca cuando la cambia.
Si el servidor no responde, la página queda igual. */
(function () {
function cuentaPendientes() {
var ligas = [].slice.call(document.querySelectorAll('.md-nav--primary a.md-nav__link')).filter(function (a) {
try { return /\/tableros\/pendientes\/?$/.test(new URL(a.href, location.href).pathname); } catch (e) { return false; }
});
if (!ligas.length) return;
fetch('/api/tareas/resumen', { cache: 'no-store', credentials: 'same-origin' })
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (j) {
if (!j || !j.ok || !j.por_pista) return;
var abiertos = 0;
Object.keys(j.por_pista).forEach(function (p) {
var e = j.por_pista[p] || {};
abiertos += (e['por-hacer'] || 0) + (e['en-curso'] || 0) + (e['bloqueado'] || 0);
});
var vencidos = (j.vencidas || []).length;
ligas.forEach(function (a) {
if (a.querySelector('.hg-cuenta')) return;
var s = document.createElement('span');
s.className = 'hg-cuenta' + (vencidos ? ' hg-cuenta--vencidos' : '');
s.textContent = abiertos;
s.title = abiertos + ' abiertos' + (vencidos ? ', ' + vencidos + ' vencido' + (vencidos > 1 ? 's' : '') : '');
a.appendChild(s);
});
})
.catch(function () {});
}
function avisoContrasena() {
fetch('/api/whoami', { cache: 'no-store', credentials: 'same-origin' })
.then(function (r) { return r.ok ? r.json() : null; })
.then(function (j) {
if (!j || !j.contrasena_inicial || document.querySelector('.hg-pass-inicial')) return;
var d = document.createElement('div');
d.className = 'hg-pass-inicial';
d.setAttribute('role', 'status');
d.innerHTML = '<b>Sigues con la contraseña inicial.</b> Cámbiala en <a href="/cuenta.html">Mi cuenta</a>: '
+ 'así nadie más puede entrar con tu usuario.';
var main = document.querySelector('.md-main');
if (main) main.parentNode.insertBefore(d, main); else document.body.insertBefore(d, document.body.firstChild);
})
.catch(function () {});
}
function arrancar() { cuentaPendientes(); avisoContrasena(); }
if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', arrancar);
else arrancar();
})();