zcatgui/docs/PLAN_REFACTOR_VIRTUAL_ADVANCED_TABLE.md
reugenio b9f412b64f refactor(virtual_advanced_table): Extraer drawing.zig e input.zig
Modularización del archivo principal (1367 LOC → 468 LOC):
- drawing.zig (495 LOC): FilterBar, Header, Rows, Footer, Scrollbars
- input.zig (232 LOC): Keyboard, MouseClick, helpers

Archivos sin cambios: state.zig (847 LOC - candidato futuro)
2025-12-29 09:48:01 +01:00

2.4 KiB

PLAN: Modularización de virtual_advanced_table.zig

Fecha: 2025-12-29 Estado: En progreso


Objetivo

Dividir virtual_advanced_table.zig (1367 LOC) en módulos más pequeños.


Estado Actual

virtual_advanced_table/
├── cell_editor.zig       # 179 LOC ✓
├── data_provider.zig     # 296 LOC ✓
├── paged_datasource.zig  # 188 LOC ✓
├── state.zig             # 847 LOC (revisar después)
├── types.zig             # 242 LOC ✓
└── virtual_advanced_table.zig  # 1367 LOC ⚠️ DIVIDIR

Estructura Final

virtual_advanced_table/
├── cell_editor.zig       # 179 LOC (sin cambios)
├── data_provider.zig     # 296 LOC (sin cambios)
├── paged_datasource.zig  # 188 LOC (sin cambios)
├── state.zig             # 847 LOC (sin cambios por ahora)
├── types.zig             # 242 LOC (sin cambios)
├── drawing.zig           # ~400 LOC (NUEVO)
├── input.zig             # ~200 LOC (NUEVO)
└── virtual_advanced_table.zig  # ~500 LOC (reducido)

Mapeo de Funciones

→ drawing.zig (~400 LOC)

Función Líneas orig Descripción
drawFilterBar 604-830 Barra de filtro superior
drawHeaderAt 836-911 Cabecera de tabla
drawRows 917-1008 Filas de datos
drawFooter 1014-1056 Pie de tabla
drawScrollbar 1062-1087 Scrollbar vertical
drawScrollbarH 1093-1120 Scrollbar horizontal

→ input.zig (~200 LOC)

Función Líneas orig Descripción
handleKeyboard 1169-1273 Manejo de teclado
handleMouseClick 1279-1345 Manejo de clicks
ensureColumnVisible 1127-1160 Scroll a columna
needsRefetch 577-598 Detectar necesidad de refetch

→ virtual_advanced_table.zig (reducido)

  • VirtualAdvancedTableResult struct
  • virtualAdvancedTable() (API pública)
  • virtualAdvancedTableRect() (orquestación)

Fases

  • FASE 1: Extraer drawing.zig
  • FASE 2: Extraer input.zig
  • FASE 3: Actualizar imports en virtual_advanced_table.zig
  • FASE 4: Verificar compilación
  • FASE 5: Commit y push

Historial

Fecha Hora Acción Estado
2025-12-29 ~02:30 Plan creado En progreso