feat: add C++ ImGui functions for core UI and visualization
Funciones C++/ImGui para dashboards (grid, panel, docking, sidebar, tabs), visualizaciones (candlestick, gauge, histogram, pie, sparkline, heatmap, scatter, line, bar, surface3d, kpi, table), grafos (force layout, renderer, viewport, spatial hash, types) y utilidades (time series buffer, tracy zones, memory/fps overlay, plot theme). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
---
|
||||
name: table_view
|
||||
kind: component
|
||||
lang: cpp
|
||||
domain: viz
|
||||
version: "1.0.0"
|
||||
purity: pure
|
||||
signature: "bool table_view(const char* id, const char* const* headers, int col_count, const char* const* cells, int row_count)"
|
||||
description: "Renderiza una tabla interactiva con sorting y scroll usando ImGui Tables API"
|
||||
tags: [imgui, table, visualization, dashboard, data]
|
||||
uses_functions: []
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: [imgui]
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "cpp/functions/viz/table_view.cpp"
|
||||
framework: imgui
|
||||
params:
|
||||
- name: id
|
||||
desc: "Identificador unico de la tabla para ImGui (debe ser unico en el frame)"
|
||||
- name: headers
|
||||
desc: "Array de strings con los nombres de las columnas"
|
||||
- name: col_count
|
||||
desc: "Numero de columnas"
|
||||
- name: cells
|
||||
desc: "Array flat row-major de strings; acceso a celda (row, col) via cells[row * col_count + col]"
|
||||
- name: row_count
|
||||
desc: "Numero de filas de datos, sin contar el header"
|
||||
output: "true si la tabla se renderizo visible, false si fue clipped o skipped por ImGui"
|
||||
---
|
||||
|
||||
# table_view
|
||||
|
||||
Wrapper atomico sobre `ImGui::BeginTable` / `ImGui::EndTable`. Renderiza una tabla con las siguientes capacidades:
|
||||
|
||||
- **Borders**: bordes entre celdas y columnas
|
||||
- **Sortable**: muestra indicadores de orden en los headers (el caller es responsable de ordenar `cells` antes de llamar)
|
||||
- **RowBg**: filas alternadas con color de fondo
|
||||
- **Resizable**: el usuario puede arrastrar los separadores de columna
|
||||
- **ScrollY**: scroll vertical con altura fija de 300px
|
||||
- **Reorderable**: el usuario puede reordenar columnas arrastrando los headers
|
||||
|
||||
El caller controla el orden de los datos — `table_view` solo habilita el flag `Sortable` para que ImGui muestre los indicadores visuales, pero no reordena `cells` internamente.
|
||||
|
||||
Debe llamarse dentro del render callback de `fn::run_app` (o cualquier contexto con un frame ImGui activo).
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```cpp
|
||||
const char* headers[] = {"Nombre", "Valor", "Estado"};
|
||||
const char* cells[] = {
|
||||
"Alpha", "1.23", "OK",
|
||||
"Beta", "4.56", "WARN",
|
||||
"Gamma", "7.89", "ERROR",
|
||||
};
|
||||
table_view("##mi_tabla", headers, 3, cells, 3);
|
||||
```
|
||||
|
||||
## Notas
|
||||
|
||||
- `id` debe comenzar con `##` si no se quiere mostrar como titulo de ventana en el contexto ImGui.
|
||||
- El outer size fijo de `ImVec2(0, 300)` puede parametrizarse en una version futura.
|
||||
- El sorting real de datos queda fuera del scope de esta funcion para mantenerla pura y componible.
|
||||
Reference in New Issue
Block a user