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>
5.7 KiB
5.7 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
| 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 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| data_table_grid | function | cpp | viz | 1.0.0 | impure | void data_table::render_grid_stage0(const char* id, State& st, const char* const* cells, int row_count, int orig_cols, int eff_cols, const char* const* eff_headers, const ColumnType* eff_types, const int* src_for_eff, const std::vector<int>& visible_rows, const TableInput& main_t, std::vector<TableEvent>* events_out) | Render del grid de datos de la tabla TQL: ImGui::BeginTable con freeze de cabecera, headers clicables (sort), drag-drop de columnas para reordenar, renderers declarativos por ColumnSpec (Badge/Progress/Duration/Icon/Button/Dots/CategoricalChip/ColorScale), aplicacion de ColorRules por celda, seleccion de rango (Ctrl+C TSV), stats overlay en encabezados. Dos entrypoints: render_grid_stage0 (datos crudos + derived Lua) y render_grid_stage_n (output materializado de compute_stage). Sub-funcion extraida de modules/data_table/data_table.cpp (issue 0107c). |
|
|
|
false | error_go_core |
|
false | cpp/functions/viz/data_table_grid.cpp | imgui |
|
Void. Mutates st (sort, selection, col_order). Appends to events_out si no null. |
Documentacion
Sub-funcion que encapsula el render del grid de celdas de la tabla TQL. Es el bloque mas grande del refactor 0107c (~1300 LOC del fuente original).
Renderers declarativos (draw_cell_custom)
| Renderer | Que muestra |
|---|---|
Text |
Selectable de texto, tooltip on-hover si tooltip_on_hover=true |
Badge |
Pastilla de color (background del spec) con texto |
Progress |
Barra de progreso ImGui [0..100] |
Duration |
Formato "Xh Ym Zs" desde segundos enteros |
Icon |
Glyph Tabler (usa icons_tabler.h) |
Button |
Boton clickable; emite TableEventKind::ButtonClick con action_id |
Dots |
Circulos coloreados por reglas de chips del ColumnSpec |
CategoricalChip |
Pastilla con borde coloreado; color por palette hash |
ColorScale |
Degradado de fondo segun valor numerico normalizado |
Flujo render_grid_stage0
- Setup
ImGuiTableFlags(Borders + RowBg + Resizable + ScrollY). BeginTable→TableSetupColumnpor cada col visible enst.col_order.TableSetupScrollFreeze(0, 1)para freeze de header.- Header row:
Selectablecon sort-click (apply_header_sort_click), drag-drop source/target para reordenar columnas. - Por cada fila en
visible_rows: por cada col visible enst.col_order:apply_color_rules_for_cell→draw_cell_custom. - Seleccion de rango: mouse drag con
sel_anchor/sel_end; Ctrl+C genera TSV al portapapeles. EndTable+PopStyleColor(3).
Flujo render_grid_stage_n
Igual pero opera sobre cur_cells ya materializados del chain compute_stage. Ademas:
- Stats overlay en headers (histograma/top-categories de
st.stats_cache). - Drill popup: right-click en celda de breakout col ofrece "Drill into: col = val".
Ejemplo
// Dentro del render() principal, path stage == 0:
if (st.display == data_table::ViewMode::Table && visible_cols > 0) {
data_table::render_grid_stage0(id, st,
cells_in, row_count_in, orig_cols, eff_cols,
eff_headers.data(), eff_types.data(), src_for_eff.data(),
visible_rows, main_t, events_out);
}
Cuando usarla
Llamar desde el entrypoint thin data_table::render() tras calcular visible_rows (stage 0) o materializar el chain (stage > 0). No llamar directamente desde apps — la API publica es data_table::render().
Gotchas
render_grid_stage0yrender_grid_stage_ndeben llamarse dentro de unImGui::BeginChildo contexto de ventana activo. No funcionan fuera de un frame ImGui.- La funcion hace
PushStyleColorpara Header/HeaderHovered/HeaderActive y debe hacer el correspondientePopStyleColor(3). No anidar pushes adicionales sin su pop. draw_cell_customcon rendererButtonemite eventos; sievents_outes null se ignoran silenciosamente (back-compat).- El
thread_localen el entrypoint original (main_hdr_ptrs, joinables_v) no se mueve a esta funcion — esos son responsabilidad del entrypoint thin. - Despues del split,
apply_color_rules_for_cellvive endata_table_color_rules_cpp_viz— no re-implementar aqui.