docs: Update TABLES_ARCHITECTURE with FASE 5+6

This commit is contained in:
reugenio 2025-12-27 19:58:40 +01:00
parent a9caa522a1
commit d5edf2b962

View file

@ -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 |