Files
dag_engine_ui/tabs.h
T
egutierrez 4abc3f97ec chore: auto-commit (8 archivos)
- CMakeLists.txt
- app.md
- data_http.cpp
- data_http.h
- main.cpp
- tabs.cpp
- tabs.h
- appicon.ico

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

78 lines
3.0 KiB
C++

#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 <string>
#include <vector>
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<std::string> 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<dag_ui::DagInfo>& dags,
const std::vector<dag_ui::DagRunRow>& 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<dag_ui::DagRunRow>& 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<dag_ui::DagRunRow>& 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<dag_ui::DagRunRow>& 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