From d5edf2b96225934741af6ae9e640943ff0b8d7b5 Mon Sep 17 00:00:00 2001 From: reugenio Date: Sat, 27 Dec 2025 19:58:40 +0100 Subject: [PATCH] docs: Update TABLES_ARCHITECTURE with FASE 5+6 --- docs/TABLES_ARCHITECTURE.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/docs/TABLES_ARCHITECTURE.md b/docs/TABLES_ARCHITECTURE.md index e7eb958..890bd87 100644 --- a/docs/TABLES_ARCHITECTURE.md +++ b/docs/TABLES_ARCHITECTURE.md @@ -1,7 +1,7 @@ # Arquitectura de Tablas en zcatgui > **Documento de referencia definitivo** para entender, usar y extender los widgets de tabla. -> Actualizado: 2025-12-27 (FASE 4.5 completada - rendering unificado) +> Actualizado: 2025-12-27 (FASES 0-6 completadas - unificación total) --- @@ -56,6 +56,16 @@ zcatgui proporciona **dos widgets de tabla** que comparten lógica común: │ │ - MemoryDataSource [Adaptador datos memoria] │ │ │ │ - PagedDataSource [Adaptador datos paginados] │ │ │ │ │ │ +│ │ ESTADO EMBEBIDO (FASE 5): │ │ +│ │ - NavigationState [active_col, scroll, double_click]│ │ +│ │ - CellEditState [editing, buffer, cursor] │ │ +│ │ │ │ +│ │ SCROLLBARS UNIFICADOS (FASE 6): │ │ +│ │ - drawVerticalScrollbar() [Scrollbar vertical] │ │ +│ │ - drawHorizontalScrollbar() [Scrollbar horizontal] │ │ +│ │ - VerticalScrollbarParams [Configuración vertical] │ │ +│ │ - HorizontalScrollbarParams [Configuración horizontal] │ │ +│ │ │ │ │ │ LÓGICA COMÚN: │ │ │ │ - calculateNextCell() / calculatePrevCell() [Tab navigation] │ │ │ │ - toggleSort() [Ordenación] │ │ @@ -65,7 +75,7 @@ zcatgui proporciona **dos widgets de tabla** que comparten lógica común: │ │ │ │ │ │ TIPOS COMPARTIDOS: │ │ │ │ - RowState (normal/modified/new/deleted/error) │ │ -│ │ - TabNavigateResult, CellPosition, CellEditState │ │ +│ │ - TabNavigateResult, CellPosition │ │ │ │ - DrawRowsConfig, RowRenderColors, ColumnRenderDef │ │ │ └─────────────────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────┘ @@ -82,14 +92,14 @@ src/widgets/ ├── advanced_table/ # Tabla con datos en memoria │ ├── advanced_table.zig # Widget principal (usa drawRowsWithDataSource) │ ├── datasource.zig # MemoryDataSource (adaptador) -│ ├── state.zig # Estado (embeds CellEditState) +│ ├── state.zig # Estado (embeds nav: NavigationState) │ ├── types.zig # Tipos específicos │ └── schema.zig # Definición de columnas │ └── virtual_advanced_table/ # Tabla con datos paginados ├── virtual_advanced_table.zig # Widget principal (usa drawRowsWithDataSource) ├── paged_datasource.zig # PagedDataSource (adaptador) - ├── state.zig # Estado (embeds CellEditState) + ├── state.zig # Estado (embeds nav: NavigationState) ├── types.zig # Tipos específicos └── data_provider.zig # Interface para datos BD ``` @@ -475,6 +485,9 @@ Esto causaba que el focus del widget alternara incorrectamente cada frame. | Fecha | Cambio | |-------|--------| +| 2025-12-27 | FASE 6: Scrollbars unificados (drawVerticalScrollbar, drawHorizontalScrollbar) | +| 2025-12-27 | FASE 5: NavigationState embebido en ambos States | +| 2025-12-27 | FASE 4.5: AdvancedTable usa drawRowsWithDataSource (sin bucle for propio) | | 2025-12-27 | Fix bug colores alternando + campo `handled` en EditKeyboardResult | | 2025-12-27 | Refactorización DRY: lógica común movida a table_core.zig | | 2025-12-26 | table_core.zig creado con funciones de renderizado compartidas |