#pragma once // data_table_viz_panels — paneles de visualizacion lateral de la tabla TQL. // Sub-funcion extraida de modules/data_table/data_table.cpp (issue 0107c). // // Responsabilidad: // - draw_table_toggle: boton de toggle entre modo tabla y ultimo modo viz. // - draw_extra_panel: render de un panel de viz adicional (VizPanel) con su // toolbar mini (titulo, pin/close, selector de chart). // - draw_viz_config_popup: popup de configuracion de visualizacion (columnas // x/y, modo, config del grafico activo). // - draw_viz_selector: selector de modo de viz (iconos/grid de ViewMode). // - maybe_recompute_stats: recalcula las estadisticas de columna si cambiaron // los datos visibles (para el stats overlay en headers y config popup). // // Rangos del fuente original: // - draw_table_toggle : lineas 1527-1552 // - draw_extra_panel : lineas 1553-1638 // - draw_viz_config_popup : lineas 1640-1815 // - draw_viz_selector : lineas 1816-1892 // - maybe_recompute_stats : lineas 2474-2502 // // Dependencias: data_table_types.h, viz_render.h (viz::render), imgui.h. #include "core/data_table_types.h" #include "imgui.h" #include #include namespace data_table { // --------------------------------------------------------------------------- // draw_table_toggle // Boton que cambia display entre ViewMode::Table y el ultimo modo viz no-tabla. // `id_suffix` diferencia multiples toggles en la misma ventana. // `st_ptr` si no null se usa para actualizar `st.display` directamente; // si null usa display/last_non_table pasados por ref. // --------------------------------------------------------------------------- void draw_table_toggle(ViewMode& display, ViewMode& last_non_table, const char* id_suffix, State* st_ptr = nullptr); // --------------------------------------------------------------------------- // draw_extra_panel // Dibuja un VizPanel adicional (child window con toolbar mini + chart). // Retorna true si el usuario cerro el panel (el caller debe borrar el entry). // --------------------------------------------------------------------------- bool draw_extra_panel(State& st, VizPanel& p, int idx, const StageOutput& so, const std::vector* col_specs); // --------------------------------------------------------------------------- // draw_viz_config_popup // Popup de configuracion de visualizacion: columnas x/y, modo de chart, // colores, histogramas bins, pie radius, etc. Mutates st.viz_config y // st.extra_panels. // --------------------------------------------------------------------------- void draw_viz_config_popup(State& st); // --------------------------------------------------------------------------- // draw_viz_selector // Selector de modo de visualizacion: grid de iconos con ViewMode disponibles. // Se abre via boton "Ask AI" o desde draw_viz_config_popup. // --------------------------------------------------------------------------- void draw_viz_selector(State& st); // --------------------------------------------------------------------------- // maybe_recompute_stats // Recalcula st.stats_cache si el snapshot de datos ha cambiado // (se detecta por hash de visible_rows + filtros). Solo recalcula si // st.stats_mode == true. // --------------------------------------------------------------------------- void maybe_recompute_stats(State& st, const char* const* cells, int row_count, int orig_cols, int eff_cols, const std::vector& active_filters, const std::vector& visible_rows, const std::vector& src_for_eff); } // namespace data_table