Modo Customize en los dashboards de Wireless, UPS, Signage y Observatory
User value
Los dashboards de Wireless, UPS, Signage y Observatory ganan un modo Customize: la rejilla de widgets viene bloqueada por defecto (nadie la mueve sin querer), pero al entrar en edición se pueden ocultar y recuperar widgets, moverlos y redimensionarlos, con Done/Cancel y persistencia única en el servidor. En pantallas estrechas se apilan en vertical. Motor: GridStack 13.3.0.
Esta página consolida una serie de PRs (v1.133.0 → v1.157.0, s328-329 y mega-auditoría 24-09) que fueron construyendo la funcionalidad por capas; se actualiza en cada entrega significativa en vez de crear una página por PR.
Cómo usarla
- En cualquiera de los 4 dashboards, entrar en modo Customize desde el menú Widgets.
- Ocultar/mostrar widgets, arrastrar para reordenar, redimensionar.
- Done guarda el layout (por usuario u organización, ver más abajo); Cancel descarta los cambios.
- En pantalla estrecha, el mismo modo permite reordenar en vertical y ocultar widgets; el guardado de la variante móvil es independiente del de escritorio.
Implementación — entregas
- v1.133.0 (
8cb12f732, 14-09) — motor base: rejilla bloqueada, ocultar/mostrar, Done/Cancel, apilado en móvil, GridStack 13.3.0. - v1.133.1 (
86791947) — fix menor: la barra de edición se veía siempre por un choquehiddenvsdisplay:flex. - v1.134.0 (
d8a434ff, 15-09) — Observatory Overview se suma al modo Customize, sobre la misma mecánica compartida; layout pasa de por-organización a por-usuario. - v1.135.0 (
c8314f49, 16-09) — botón “Set as organization default” (solo admin); lectura en cascada persona → organización → fábrica en los 4 dashboards; helper_dashboard_layout.py. - v1.136.0 (
1bc1d770, 16-09) — variante móvil independiente:?variant=mobile, guardado aparte con su propio default de organización;resolve_varianten el helper. - v1.137.0 (
ae408e2f, 16-09) — “Add chart”: instanciaschart-<k>configurables (target/perfil/métrica) en los paneles por equipo de Wireless/UPS/Signage, tope 8; Observatory queda fuera. Iterado en caliente tras la primera verificación real en pantalla (dabc63f0tamaño inicial,deee029cpérdida deid,f228f59abotón BIG sin conectar). - v1.139.0 (
8ae13b60, 17-09) — el widget combinadochartsse parte en un widget por gráfica: cada una con su propio estado (rango, fabricante), oculto = parado por gráfica;layoutSplit.jsconvierte los layouts guardados de forma idempotente al cargar. - v1.157.0 (
4dcb4a07, 24-09, mega-auditoría B-66) — el diseño que llega adashboard-layoutse valida antes de guardarse:idcon patrón limitado (letras, números,-,_, hasta 64), posiciones y tamaños enteros acotados (sin negativos),hiddenbooleano,params.profile_id/target_identeros ymetricde texto; tope 64 elementos. La validación es tolerante — las claves extra de GridStack se conservan y el diseño se guarda tal cual llegó; un diseño inválido responde 400. Guardar el diseño por defecto de la organización deja ahora una entradadashboard.org_default.saveen el registro del sistema. Límite honesto: los topes (64 elementos, tamaños hasta 1000) están elegidos por criterio y no medidos.
Implementación técnica
- Validación (v1.157.0):
monitoring/api/schemas.py—_DashboardLayoutIn(con_validate_layout_items) es la base común deOverviewLayoutIn/WirelessLayoutIn/UpsLayoutIn/SignageLayoutIn. Modelos Pydantic internos_LayoutItemIn/_LayoutParamsInconextra="allow"para no romper diseños antiguos.
Commits relacionados
8cb12f732, 86791947, d8a434ff, c8314f49, 1bc1d770, ae408e2f, dabc63f0, deee029c, f228f59a, 8ae13b60 (v1.133.0 a v1.139.0, s328-329) · 4dcb4a07 (v1.157.0, mega-auditoría B-66, 24-09-2026).
Véase también
- [[feature—monitoring—group-report-button]]
- [[feature—monitoring—equipos-fuera-de-servicio]]
- [[feature—monitoring—rangos-tiempo-graficas-7-30-dias]]
- [[entity—monitoring—targetlistout-payload-slim]]
- [[incident—20260921—dashboards-informes-sai-wifi-campos-sin-consulta]]