7eb7b3d0c8
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>
4.9 KiB
4.9 KiB
name, version, lang, description, members, uses_functions, tags, dir_path
| name | version | lang | description | members | uses_functions | tags | dir_path | |||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| data_table | 2.1.0 | cpp | Reusable C++ ImGui module to render a full TQL-aware data table: chips bar, table grid, viz panels, column-stats inline, drill, color rules, joins, TQL editor, Ask AI, Button renderer, event sink, tooltip per-cell. v2.0.0 splits the 4777 LOC entrypoint into 6 sub-functions. v2.1.0 separates members (module-owned) from uses_functions (consumed registry functions). |
|
|
|
modules/data_table |
Documentation
C++ ImGui module to render a full data table with TQL pipeline, viz panels, joins, color rules, declarative cell renderers (Badge, Progress, Duration, Icon, Button, Dots, CategoricalChip, ColorScale), drill, Ask AI and event sink.
Entry-point: data_table::render(id, tables, state, events_out, show_chrome).
Opt-in en una app
app.md: anadiruses_modules: [data_table_cpp].CMakeLists.txt:target_link_libraries(<app> PRIVATE fn_module_data_table).- Header:
#include "data_table/data_table.h"y#include "core/data_table_types.h". - Reservar
data_table::Statepersistente entre frames y llamardata_table::render(...)cada frame.
Funciones miembro
Cada ID en members es una funcion del registry que el modulo bundla en su static lib. Cuando una app declara uses_modules: [data_table_cpp], automaticamente "usa" estas funciones a traves del modulo — no hace falta listarlas otra vez en uses_functions.
Version policy
Semver. Bumps de version se documentan en ## Capability growth log. Cambios en API publica (data_table.h) = major. Adicion de funcionalidad opt-in = minor. Bugfix = patch.
Capability growth log
- v2.0.0 (2026-05-17) — Major internal refactor (issue 0107c): split
data_table.cpp(4777 LOC entrypoint monolitico) en 6 sub-funciones del registry encpp/functions/viz/:data_table_chips,data_table_grid,data_table_drill,data_table_color_rules,data_table_ai_panel,data_table_viz_panels. Entrypoint reducido a 1818 LOC (custom column modal + render orchestration +ui()singleton). Nuevo header internomodules/data_table/data_table_internal.hconUiStateaggregator + helpers compartidos (ops_for_type,op_label,effective_type,view_mode_label,parse_hex_color,lerp_color_along_stops,filters_hash,ColInfo,auto_promote_aggregated, etc.). API publicadata_table::render(...)INTACTA — apps consumidoras NO necesitan cambios. Cada sub-funcion ahora puede testearse aisladamente (issue 0108 testbed agresivo). Members expandido de 13 a 19 (anaden 6 sub-funciones);audit_data_table_usage_go_infra+fn doctor modules(0107a) auditan drift contra esta lista. - v1.5.0 (2026-05-17) — Per-table state isolation:
stats_mode/cache,sel_*,inspect_*,drill_*movidos de UiState singleton aState(fix multi-table). Conditional color extendido con tres modos:CellBg(legacy),CategoricalDot(autopalette de 12 hash-deterministico),NumericRange(gradiente N-color sobre bg). Hover del menu contextual de header restaurado. - v1.4.0 (2026-05-16) — CategoricalChip (dot izquierda + text) + ColorScale (gradient N-color en fondo de celda)
- v1.3.1 (anterior) — Dots renderer via ImDrawList (font-independent)
- v1.3.0 — Dots renderer para sparkline-like de status timelines
- v1.2.0 — Joins, drill, color rules, tooltip per-cell, Button event sink
- v1.0.0 — Initial table + TQL pipeline + chips bar
Notes
- El modulo se compila como static lib
fn_module_data_table(cmake target). Static lib bundla todos los miembros — apps consumidoras solo enlazan UN target. - Replaces former
fn_table_viztarget (2026-05-16). - Requiere
fn_framework(parafn::local_path()usado en Ask AI export).