b9716a7cd6
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>
3.2 KiB
3.2 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, framework, params, output, notes
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | framework | params | output | notes | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sparkline | component | cpp | viz | 1.2.0 | pure | void sparkline(const char* id, const float* values, int count, float width = 100.0f, float height = 20.0f) | Renderiza un mini grafico de lineas inline para uso en tablas, headers y KPI cards |
|
false |
|
true |
|
cpp/tests/test_sparkline.cpp | cpp/functions/viz/sparkline.cpp | imgui |
|
Renderiza el sparkline inline en el frame ImGui actual, reservando espacio con ImGui::Dummy | scaffolding/demo en primitives_gallery |
sparkline
Mini grafico de lineas inline construido sobre ImGui draw primitives. No requiere ImPlot.
Auto-escala el eje Y al rango minimo/maximo de los valores. Dibuja una polyline con relleno semitransparente bajo la curva. Disenado para encajar en celdas de tablas, headers y tarjetas KPI.
Ofrece dos overloads:
- Sin color: usa verde suave por defecto (
ImVec4(0.35, 0.85, 0.45, 1.0)) - Con color: acepta cualquier
ImVec4para personalizar la linea y el relleno
Debe llamarse dentro del render callback de fn::run_app (o cualquier contexto con un frame ImGui activo).
Ejemplo
// En una celda de tabla
ImGui::TableNextColumn();
sparkline("##revenue_spark", revenue.data(), (int)revenue.size(), 80.0f, 18.0f);
// Con color personalizado (rojo para valores negativos)
sparkline("##pnl", pnl.data(), (int)pnl.size(),
ImVec4(0.9f, 0.3f, 0.3f, 1.0f), 100.0f, 20.0f);
// KPI card inline con label
ImGui::Text("Revenue"); ImGui::SameLine();
sparkline("kpi_rev", data, count);
Notas
- El relleno bajo la curva usa alpha 40/255 del mismo color de la linea.
- Si todos los valores son iguales (rango < 1e-6), la linea se dibuja en el centro verticalmente.
- El grosor de linea es 1.5px para que sea legible a alturas de 16-24px.
idno se muestra visualmente; solo se pasa aPushIDpara que ImGui diferencie widgets con los mismos datos en la misma tabla.
Capability growth log
- v1.1.0 (2026-05-18) — Overloads con
y_min, y_maxexplicitos. Cuando la metrica tiene dominio conocido (CPU%/RAM% -> 0,100) varias cards comparten escala y son comparables visualmente. Outliers se clampan al rango. Variant sin bounds preserva auto-scale historico. - v1.2.0 (2026-05-18) — Alpha fade gradient default: segmento i pinta con alpha lerp(0.2, 1.0, i/(count-1)). Older -> faded, newest -> bright. Efecto "trail" hacia el numero actual. Fill bajo curva tambien fade (alpha 4..28). Cambio visual sin cambio de API.