Files
fn_registry/cpp/functions/viz/viz_render.h
T
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

43 lines
1.8 KiB
C++

// viz_render — dispatcher de visualizaciones ImPlot sobre StageOutput.
// Cada modo elige automaticamente las columnas relevantes (primera categorica,
// primera o varias numericas) salvo override desde ViewConfig.
// Issue 0081-G. Promovido desde cpp/apps/primitives_gallery/playground/tables/viz.h
#pragma once
#include "core/data_table_types.h"
#include "imgui.h"
#include <vector>
#include <string>
namespace viz {
// Render principal. Devuelve true si renderiza el modo solicitado, false si
// no se cumplen pre-condiciones (faltan cols numericas/categoricas etc.).
//
// `size`: ImVec2(-1,-1) usa todo el espacio disponible.
// `out`: output del stage activo (headers, types, cells flat row-major).
// `clicked_row_out`: si != nullptr, el render escribira el indice de row del
// `StageOutput` clicado por user. -1 si no hubo click drillable. Fase 10
// (issue 0079): habilitado para bar/column/pie/donut/funnel/scatter/bubble/
// heatmap. Resto de modos: no hit-test, queda en -1.
bool render(const data_table::StageOutput& out,
data_table::ViewMode mode,
const data_table::ViewConfig& cfg,
ImVec2 size = ImVec2(-1, -1),
int* clicked_row_out = nullptr);
// Helper expuesto: encuentra primera col numerica. -1 si ninguna.
int first_numeric_col(const data_table::StageOutput& out);
// Helper: primera col categorica (String/Date/Bool/Json o Int con muchos
// uniques bajos — heuristica). -1 si ninguna.
int first_category_col(const data_table::StageOutput& out);
// Helper: extrae columna como vector<double>. Cells no parseables -> NaN.
std::vector<double> extract_numeric(const data_table::StageOutput& out, int col);
// Helper: extrae columna como vector<string> (categorias).
std::vector<std::string> extract_category(const data_table::StageOutput& out, int col);
} // namespace viz