hbox-docs/docs/tableros/kanban.html

55 lines
2.5 KiB
HTML

<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Tablero de pendientes (kanban) — HBOX</title>
<link rel="stylesheet" href="tablero.css">
</head>
<body>
<div class="wrap">
<header class="top">
<div><h1>Tablero de pendientes</h1><div class="meta" id="meta">Ingeniería · Producción · Mecánica · Compras · Campo</div></div>
<nav>
<a href="../">← Documentación</a>
<a class="activo" href="kanban.html">Pendientes</a>
<a href="ingenieria.html">Ingeniería</a>
<a href="produccion.html">Producción</a>
<a href="../inventario/inventario.html">Inventario</a>
<a href="../sitios/">Sitios</a>
<a href="equipo.html">👥 Equipo</a>
</nav>
</header>
<details class="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>
</ol>
</details>
<div id="kb"></div>
</div>
<script src="kanban.js"></script>
<script>
Kanban.montar(document.getElementById('kb'), {
filtros: true,
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;
document.getElementById('meta').textContent = abiertas + ' abiertos · ' + bloq + ' bloqueados · ' + venc + ' vencidos'
+ ' · actualizado ' + new Date().toLocaleTimeString('es-MX', { hour: '2-digit', minute: '2-digit' })
+ (meta.user ? ' · ' + meta.user + (meta.admin ? ' (admin)' : '') : '');
}
});
</script>
</body>
</html>