b9716a7cd6
Snapshot de WIP acumulado de sesiones previas antes de merge wave 1 del flow 0008 (kanban_cpp + agent_runner_api + DoD schema). Incluye: - dev/flows/0008-kanban-cpp-and-agent-workflows.md - dev/issues/0112-0119*.md (7 sub-issues) - WIP previo en cmd/fn/doctor.go, registry/*, modules/, cpp/, etc. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
71 lines
3.1 KiB
C++
71 lines
3.1 KiB
C++
#pragma once
|
|
// data_table_drill — drill-down stack + breadcrumb de stages.
|
|
// Sub-funcion extraida de modules/data_table/data_table.cpp (issue 0107c).
|
|
//
|
|
// Responsabilidad:
|
|
// - make_drill_filter: construye un Filter Op::Eq sobre un col_idx.
|
|
// - apply_drill_step / undo_drill_step: manipula el stack drill_back/forward.
|
|
// - drill_up: retrocede un stage.
|
|
// - drill_into: API publica que anade un filter al stage previo y cambia active.
|
|
// - draw_stage_breadcrumb: UI de la barra de breadcrumb con botones < > ^.
|
|
//
|
|
// Rangos del fuente original:
|
|
// - make_drill_filter : linea 700-706
|
|
// - apply_drill_step : lineas 708-718
|
|
// - undo_drill_step : lineas 720-730
|
|
// - drill_up : lineas 731-745
|
|
// - drill_into : lineas 2898-2919
|
|
// - draw_stage_breadcrumb: lineas 1383-1488
|
|
//
|
|
// Dependencias: data_table_types.h (State, DrillStep, Filter, Stage).
|
|
|
|
#include "core/data_table_types.h"
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace data_table {
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// Helpers internos del drill stack (usados por drill_into y draw_stage_breadcrumb).
|
|
// Se exponen en el header para que data_table_grid pueda llamarlos al
|
|
// procesar el drill popup de celdas en stage > 0.
|
|
// ---------------------------------------------------------------------------
|
|
|
|
// make_drill_filter: crea un Filter Op::Eq para col_idx con el valor dado.
|
|
Filter make_drill_filter(int col_idx, const std::string& value);
|
|
|
|
// apply_drill_step: inserta step.added en el stage en step.target_stage y
|
|
// actualiza st.active_stage. Retorna true si el step se aplico correctamente.
|
|
bool apply_drill_step(State& st, const DrillStep& step);
|
|
|
|
// undo_drill_step: elimina el filter insertado por apply_drill_step y restaura
|
|
// st.active_stage a step.prev_active_stage. Retorna true si se deshizo.
|
|
bool undo_drill_step(State& st, const DrillStep& step);
|
|
|
|
// drill_up: retrocede st.active_stage en 1 si hay stages previos.
|
|
// Retorna true si se pudo retroceder.
|
|
bool drill_up(State& st);
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// API publica: drill_into
|
|
// Anade un filter Op::Eq sobre col_name=value al stage (from_stage - 1) y
|
|
// cambia st.active_stage a from_stage - 1. Graba el step en st.drill_back
|
|
// y limpia st.drill_forward (rama nueva del arbol de drill).
|
|
//
|
|
// prev_input_headers: headers del INPUT del stage from_stage (para traducir
|
|
// col_name a col_idx en el stage previo).
|
|
// ---------------------------------------------------------------------------
|
|
void drill_into(State& st, int from_stage,
|
|
const std::string& col_name, const std::string& value,
|
|
const std::vector<std::string>& prev_input_headers);
|
|
|
|
// ---------------------------------------------------------------------------
|
|
// UI: draw_stage_breadcrumb
|
|
// Dibuja la barra de navegacion de drill con botones < (back), > (forward),
|
|
// ^ (up) y el nombre del stage activo. Mutates st.drill_back/forward y
|
|
// st.active_stage en respuesta a clicks.
|
|
// ---------------------------------------------------------------------------
|
|
void draw_stage_breadcrumb(State& st);
|
|
|
|
} // namespace data_table
|