commit 334943b7db8dc98969e8ea8d3baf7a0c63be59df Author: Egutierrez Date: Fri May 15 16:38:07 2026 +0200 feat: scaffolding dag_engine_ui (issue 0095 step 2) ImGui app shell: - main.cpp con fn::run_app(cfg, render), panel Main placeholder. - CMakeLists.txt + fn_framework + fn_table_viz opt-in. - app.md frontmatter base. Capas HTTP/WS/tabs en commits siguientes. Co-Authored-By: Claude Opus 4.7 (1M context) diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d6e97ac --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,14 @@ +add_imgui_app(dag_engine_ui + main.cpp +) +target_include_directories(dag_engine_ui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + +# fn_table_viz: provides data_table::render(), viz_render, TQL engine, Lua, LLM. +# Guard keeps the app compilable in builds where vendor/lua is absent. +if(TARGET fn_table_viz) + target_link_libraries(dag_engine_ui PRIVATE fn_table_viz) +endif() + +if(WIN32) + set_target_properties(dag_engine_ui PROPERTIES WIN32_EXECUTABLE TRUE) +endif() diff --git a/app.md b/app.md new file mode 100644 index 0000000..4aa9d0e --- /dev/null +++ b/app.md @@ -0,0 +1,42 @@ +--- +name: dag_engine_ui +lang: cpp +domain: tools +description: "Frontend ImGui para dag_engine. Lista, lanza e inspecciona DAGs con live updates via WS." +tags: [imgui] +uses_functions: + # Uncomment when using data_table::render() — provided via fn_table_viz: + # - data_table_cpp_viz + # - viz_render_cpp_viz + # - compute_stage_cpp_core + # - compute_pipeline_cpp_core + # - compute_column_stats_cpp_core + # - auto_detect_type_cpp_core + # - tql_emit_cpp_core + # - tql_apply_cpp_core + # - lua_engine_cpp_core + # - join_tables_cpp_core + # - tql_to_sql_cpp_core + # - llm_anthropic_cpp_core +uses_types: [] +framework: "imgui" +entry_point: "main.cpp" +dir_path: "cpp/apps/dag_engine_ui" +repo_url: "https://gitea.organic-machine.com/dataforge/dag_engine_ui" +--- + +# dag_engine_ui + +Frontend ImGui para dag_engine. Lista, lanza e inspecciona DAGs con live updates via WS. + +## Build + +```bash +cd cpp && cmake --build build --target dag_engine_ui -j +``` + +## Run + +```bash +./cpp/build/dag_engine_ui +``` diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..8b649e5 --- /dev/null +++ b/main.cpp @@ -0,0 +1,45 @@ +#include +#include "app_base.h" +#include "core/panel_menu.h" +#include "core/icons_tabler.h" +#include "core/logger.h" +// #include "viz/data_table.h" // uncomment to enable data_table::render() panel + +// Toggles de paneles (visibles desde el menu View del menubar canonico) +static bool g_show_main = true; + +static void draw_main() { + if (!ImGui::Begin(TI_HOME " Main", &g_show_main)) { + ImGui::End(); + return; + } + ImGui::TextUnformatted("Hello from dag_engine_ui"); + ImGui::End(); +} + +static void render() { + // El framework dibuja menubar (View/Layouts/Settings/About) y un + // DockSpaceOverViewport central (auto_dockspace=true por defecto). + // Aqui solo se dibujan los paneles propios de la app. + if (g_show_main) draw_main(); + + // === Data panel (uncomment to enable) === + // static data_table::State data_state; + // static std::vector data_tables; // populate from your source + // data_table::render("main_data", data_tables, data_state); +} + +int main(int /*argc*/, char** /*argv*/) { + static fn_ui::PanelToggle panels[] = { + { "Main", nullptr, &g_show_main }, + }; + + fn::AppConfig cfg; + cfg.title = "dag_engine_ui — Frontend ImGui para dag_engine. Lista, lanza e inspecciona DAGs con live updates via WS."; + cfg.about = { "dag_engine_ui", "0.1.0", "Frontend ImGui para dag_engine. Lista, lanza e inspecciona DAGs con live updates via WS." }; + cfg.log = { "dag_engine_ui.log", 1 }; + cfg.panels = panels; + cfg.panel_count = sizeof(panels) / sizeof(panels[0]); + + return fn::run_app(cfg, render); +}