feat: tabs DAG List / Detail / Run Detail via data_table_cpp_viz (issue 0095 step 5)
- tabs.{h,cpp}: 3 paneles que renderizan TableInput con data_table::render() + RowDoubleClick events para drill-down (DAG -> Detail -> Run Detail).
- main.cpp: arranca con auto-fetch DAGs y los 3 tabs visibles por defecto. Panel Main diagnostico apagado.
- CMakeLists.txt: linka empty_state.cpp del registry.
- app.md: uses_functions completo (data_table_cpp_viz + stack TQL + empty_state). Tags: [imgui, dashboard, dag, scheduler, http, websocket].
Funcionalidades:
- DAG List: tabla con Name/Schedule/Last Status/Tags/Valid/File. Status combina last_run (REST) + live_runs (WS). Double-click selecciona DAG.
- DAG Detail: header + Run Now (POST /api/dags/{name}/run) + tabla recent runs. Double-click run abre Run Detail.
- Run Detail: header del run + tabla steps (name/status/exit/duration/started) + CollapsingHeader por step con stdout/stderr.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
#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();
|
||||
|
||||
// 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);
|
||||
|
||||
} // namespace dag_ui_tabs
|
||||
Reference in New Issue
Block a user