Wireframe note: The FES Bike schedule table already follows this pattern.
The ScheduleTable class takes a scheduleType parameter.
New equipment types just pass a different type string.
EquipmentBoard — Shared Reservation Class
Input: equipmentType (string), timeSlots (array), days (array)
Firebase path pattern: equipment/{type}/schedule/{weekKey}/{day}/{timeSlot}
Flow: Load → Render grid → Click slot → Confirm → Save → Re-render
Integration per equipment type
// 1. Define config per equipment
const bertecConfig = {
type: 'bertec',
timeSlots: ['8am','9am','10am','11am','1pm','2pm','3pm'],
days: ['Monday','Tuesday','Wednesday','Thursday','Friday'],
slotDuration: 30, // minutes
maxPerSlot: 1, // one person per slot
};
// 2. Instantiate shared class
const board = new EquipmentBoard(dataManager, bertecConfig);
board.mount(document.getElementById('bertecBoard'));
File plan
src/js/ui/equipmentBoard.js → Shared EquipmentBoard class
equipment.html → Hub page (this page)
fesBike.html → Already built, uses ScheduleTable
equipment-bertec.html → New (wireframe)
equipment-xcite.html → New (wireframe)