#pragma once // data_table — render UI completa de tabla TQL. // Entry-point publica del stack data_table del registry. // Issue 0081-H. Promovido desde cpp/apps/primitives_gallery/playground/tables/data_table.h // Phase 2 (issue 0081-O, v1.2.0): Button renderer + event sink + tooltip + RightClick. // // Uso basico (back-compat, sin events): // data_table::State st; // persistir entre frames // ImGui::Begin("Window"); ImGui::BeginChild("tbl", {-1,-1}); // data_table::render("my_table", {table1, table2}, st); // ImGui::EndChild(); ImGui::End(); // // Uso con events (Phase 2): // std::vector events; // data_table::render("my_table", {table1, table2}, st, &events); // for (auto& ev : events) { // if (ev.kind == data_table::TableEventKind::ButtonClick && // ev.action_id == "cancel") { ... } // } // // Requiere ImGui context + ImPlot context activos. // Namespace identico al playground para facilitar migracion (solo cambiar include path). #include "core/data_table_types.h" #include namespace data_table { // render — Render barra-de-chips + tabla + panels de visualizacion. // Mutates `st` en respuesta a la interaccion del usuario. // // `id` — ID unico de ImGui para esta instancia (ej. "##my_table"). // `tables` — lista de TableInput. tables[0] es la main por defecto; // si State.main_source no-vacio se usa por nombre. // Tablas extra se exponen como joinables en la UI. // `st` — estado mutable. Debe persistir entre frames (no stack-local). // `events_out` — if non-null, populated with UI events (ButtonClick, // RowDoubleClick, RowRightClick) fired this frame. The caller // clears/reads the vector after each render call. // Pass nullptr to disable event collection (back-compat). // `show_chrome` — si false, oculta la barra de chips + breadcrumb por defecto. // El usuario puede reactivarla via el boton "Show UI". void render(const char* id, const std::vector& tables, State& st, std::vector* events_out, bool show_chrome = true); // Overload for back-compat: same as render(..., nullptr, show_chrome). inline void render(const char* id, const std::vector& tables, State& st, bool show_chrome = true) { render(id, tables, st, nullptr, show_chrome); } } // namespace data_table