-
Mahmoud Aglan authored
Pool is now a real 2D grid (rows × cols = squares). Admin sets dimensions, selects time slot from timeline strip above, then assigns squares to academies/groups/hourly/blocked/maintenance via drag selection. - New table: sa_pool_zone_bookings (zone_row × zone_col per time slot) - ALTER sa_facilities: add pool_grid_rows, pool_grid_cols - Rewritten PoolGridService with zone-based logic + copy-slot feature - Interactive view: timeline strip, 2D grid with drag/click/shift-rect select - API: state, assign, clear, update-grid, copy-slot - Seed: 4×6 grid with sample zone bookings - Fix mirror route mismatch (/sa/mirror/{id} now works) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
0b3ff07b