chore: snapshot WIP previo + flow 0008 + 7 sub-issues (0112-0119)
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1 del flow 0008 (kanban_cpp + agent_runner_api + DoD schema). Incluye: - dev/flows/0008-kanban-cpp-and-agent-workflows.md - dev/issues/0112-0119*.md (7 sub-issues) - WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# cpp-dashboard-viz
|
||||
|
||||
Primitivas de dashboards/observability en C++ ImGui: cards de KPI, sparklines, line/bar/scatter/pie/heatmap plots, panel containers. Estilo y altura consistente con `fn_tokens` + ImPlot. Pensadas para grids densos y monitores tipo `services_monitor` / `process_explorer` / `registry_dashboard`.
|
||||
|
||||
## Funciones del grupo
|
||||
|
||||
| ID | Firma corta | Que hace |
|
||||
|---|---|---|
|
||||
| `kpi_card_cpp_viz` | `kpi_card(label,value,delta,history,...,[y_min,y_max],[fmt],[icon])` | Card con valor grande + delta + sparkline. Overload v1.4 con bounds fijos. |
|
||||
| `sparkline_cpp_viz` | `sparkline(id,values,count,[color],[y_min,y_max],w,h)` | Mini line chart inline (sin ImPlot) para tablas/cards. v1.1 con Y fijo. |
|
||||
| `line_plot_cpp_viz` | `line_plot(title,xs,ys,count,[y_min,y_max],height)` | Line plot ImPlot con ejes pineados. v1.2 con Y fijo. |
|
||||
| `bar_chart_cpp_viz` | `bar_chart(title,labels,values,count,...)` | Barras verticales con tooltip y rotacion automatica. |
|
||||
| `scatter_plot_cpp_viz` | `scatter_plot(title,xs,ys,count,height)` | Scatter 2D ImPlot. |
|
||||
| `pie_chart_cpp_viz` | `pie_chart(title,labels,values,count,height)` | Pie/donut con tooltip por slice. |
|
||||
| `heatmap_cpp_viz` | `heatmap(title,data,rows,cols,...)` | Mapa de calor 2D. |
|
||||
| `histogram_cpp_viz` | `histogram(title,values,count,bins,height)` | Histograma con bins automaticos. |
|
||||
| `dashboard_panel_cpp_core` | `dashboard_panel_begin/end(title,...)` | Contenedor estilizado con borde y padding. |
|
||||
| `plot_theme_cpp_core` | gestion de temas | Presets dark/light/high-contrast para ImPlot. |
|
||||
|
||||
## Ejemplo canonico — grid de KPIs con escala absoluta
|
||||
|
||||
```cpp
|
||||
#include "viz/kpi_card.h"
|
||||
#include "viz/line_plot.h"
|
||||
#include "core/icons_tabler.h"
|
||||
|
||||
// CPU%, RAM% comparten dominio 0-100 -> Y fijo permite comparar visualmente
|
||||
// entre cards y entre hosts en el mismo grid.
|
||||
ImGui::Columns(2, "kpis", false);
|
||||
kpi_card("CPU", cpu_pct, 0.0f, cpu_history, n, 0.0f, 100.0f, "%.1f%%", TI_CPU);
|
||||
ImGui::NextColumn();
|
||||
kpi_card("RAM", ram_pct, 0.0f, ram_history, n, 0.0f, 100.0f, "%.1f%%", TI_DATABASE);
|
||||
ImGui::Columns(1);
|
||||
|
||||
// Grafico grande tambien fijo:
|
||||
float xs[N], ys[N]; /* ... */
|
||||
line_plot("CPU %", xs, ys, N, 0.0f, 100.0f, 160.0f);
|
||||
```
|
||||
|
||||
## Fronteras
|
||||
|
||||
- **NO incluye `data_table_*`** — tablas TQL viven en `cpp-tables` y `data-table-renderers`.
|
||||
- **NO incluye 3D** (`scatter_3d`, `surface_plot_3d`, `contour`, `mc_*_gpu`) — exploraciones cientificas, no dashboards.
|
||||
- **NO incluye `graph_renderer` / `graph_icons`** — GPU graph layout es otro dominio.
|
||||
- Apps que componen estas primitivas (`services_monitor`, `process_explorer`, `registry_dashboard`) NO entran aqui — son artefactos, no funciones.
|
||||
|
||||
## Notas
|
||||
|
||||
- Todas las primitivas son `pure` (no I/O, no estado mutable salvo ImGui frame state) salvo `kpi_card` y `sparkline` que escriben al draw list del frame.
|
||||
- Altura del plot SIEMPRE explicita — evita feedback loops con contenedores `AutoResizeY`.
|
||||
- Colores: usar `fn_tokens::colors::{primary,success,error,text_muted,...}` para coherencia con `@fn_library`.
|
||||
- Y fijo (overloads v1.1+/v1.2+/v1.4+) es la forma correcta para metricas con dominio conocido: hosts en grid comparables sin truco visual.
|
||||
Reference in New Issue
Block a user