hbox-docs/docs/tableros/pendientes.md

50 lines
2.6 KiB
Markdown

---
title: "Pendientes"
description: "El tablero de pendientes del equipo: por hacer, en curso, bloqueado y hecho."
template: tablero.html
hide:
- toc
---
<div class="tb tb-pendientes">
<header class="tb-cab">
<div class="tb-cab__t"><h1>Pendientes</h1><span class="meta" id="meta">Ingeniería, producción, mecánica, compras y campo</span></div>
<div class="tb-cab__acc"><span id="acciones-kb"></span></div>
</header>
<details class="info tb-como">
<summary>Cómo se usa</summary>
<ol>
<li>Cada tarjeta del tablero es un <b>pendiente</b> (no confundir con la tarjeta EinarBoard). Léelo antes de empezar el trabajo.</li>
<li>Arrastra el pendiente a la columna que corresponda; en el teléfono usa <b>Mover a…</b>. El tablero anota quién lo movió y cuándo.</li>
<li>Toca el título para ver el detalle: descripción, enlaces, de qué depende y su historial. Ahí mismo edita y guarda.</li>
<li><b>Nuevo pendiente</b>: título corto, pista, responsable y fecha límite. Si depende de otro, márcalo en «Bloqueado por».</li>
<li>Columna <b>Bloqueado</b>: solo si no puedes avanzar. Escribe en la descripción qué falta y quién lo destraba.</li>
<li>Al terminar, muévelo a <b>Hecho</b>. No lo borres: solo el administrador borra, y el historial sirve de bitácora.</li>
<li>Rojo = vencido. Filtra por pista, responsable o versión de tarjeta; los filtros no cambian nada en el servidor.</li>
<li><b>Por persona</b> muestra una fila por responsable con sus pendientes en cada estado: sirve para ver quién está cargado y quién está libre. La dirección (<code>?vista=persona</code>, <code>?mios=1</code>) se puede compartir tal cual.</li>
</ol>
</details>
<div id="kb"></div>
</div>
<script>
(function () {
Kanban.montar(document.getElementById('kb'), {
filtros: true,
vistas: true,
botonNuevoEn: document.getElementById('acciones-kb'),
onCargado: (tareas, meta) => {
const abiertas = tareas.filter(t => t.estado !== 'hecho').length;
const venc = tareas.filter(t => t.vencida).length;
const bloq = tareas.filter(t => t.estado === 'bloqueado').length;
const n = (k, uno, varios) => k + ' ' + (k === 1 ? uno : varios);
document.getElementById('meta').textContent = [n(abiertas, 'abierto', 'abiertos'), n(bloq, 'bloqueado', 'bloqueados'), n(venc, 'vencido', 'vencidos')].join(' · ')
+ ' · al día a las ' + new Date().toLocaleTimeString('es-MX', { hour: '2-digit', minute: '2-digit', hour12: false })
+ (meta.user ? ' · ' + meta.user + (meta.admin ? ' (admin)' : '') : '');
}
});
})();
</script>