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) <noreply@anthropic.com>
This commit is contained in:
2026-05-15 16:38:07 +02:00
commit 334943b7db
3 changed files with 101 additions and 0 deletions
+14
View File
@@ -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()
+42
View File
@@ -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
```
+45
View File
@@ -0,0 +1,45 @@
#include <imgui.h>
#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_table::TableInput> 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);
}