#pragma once // Tabs / panels para dag_engine_ui: // - DAG List (lista todos los DAGs, double-click -> selecciona) // - DAG Detail (header + Run Now + recent runs como data_table) // - Run Detail (steps con duracion/status + stdout/stderr expandible) // // Todos usan data_table_cpp_viz (issue 0081). State persistente por tab. #include "data_http.h" #include #include namespace dag_ui_tabs { // Estado global cross-tab: que DAG/run esta seleccionado actualmente. struct Selection { std::string dag_name; // "" = nada seleccionado std::string run_id; // "" = nada seleccionado }; Selection& selection(); // Cache: detalle actual del DAG seleccionado + del run seleccionado. // Se rellena bajo demanda al cambiar la seleccion (o boton Refresh). struct Caches { dag_ui::DagDetail dag_detail; dag_ui::DagRunDetail run_detail; bool dag_detail_loaded = false; bool run_detail_loaded = false; }; Caches& caches(); // Estado del panel lateral "Function" — registry metadata para el function_id // seleccionado actualmente. selected_id == "" -> panel oculto. breadcrumb mantiene // el historial de navegacion para soportar el boton Back. struct FunctionPanelState { std::string selected_id; // "" = panel oculto dag_ui::FnInfo cached; bool loaded = false; std::string load_error; std::vector breadcrumb; // ids visitados antes del actual }; FunctionPanelState& function_panel(); // Render cada tab. api_url es el endpoint dag_engine. // `live_runs` es el cache global mantenido por WS (sirve para DAG List status). void draw_dag_list(const std::string& api_url, const std::vector& dags, const std::vector& live_runs); void draw_dag_detail(const std::string& api_url); void draw_run_detail(const std::string& api_url); // Timeline panel: scatter X=time, Y=DAG name, color por status. // `runs_all` es el cache global de las ultimas N runs (mantenido por main.cpp). void draw_timeline(const std::string& api_url, const std::vector& runs_all); // Health panel: KPIs derivados de runs_all (client-side). // runs_24h, success_rate, failed_runs_24h, pending_runs. void draw_health(const std::string& api_url, const std::vector& runs_all); // All Runs panel: historico completo de runs (todas las DAGs). Tabla // ordenada por started_at desc. Click row -> set selection().run_id. void draw_all_runs(const std::string& api_url, const std::vector& runs_all); // Function panel: detalle de la funcion del registry seleccionada (id, domain, // purity, signature, uses_functions[], uses_types[]). Lazy-load por click. void draw_function_panel(const std::string& api_url, bool* p_open); } // namespace dag_ui_tabs