{{ tooltip.text }}
Rackley Swimming

Pool Deck App

Profile
{{ user.displayName.charAt(0) }}
{{ user.displayName }}
Logout
{{ selectedCenterLabel || 'Select Center' }}
— Clear —
{{ c.locationName }}
No results
{{ currentStaffLabel }}

Please select a center first.

— Clear —
{{ s.givenNames }} {{ s.surname }}
No results

Shift Activity Report

{{ shiftReportTeacherLabel }}
— All Teachers —
{{ s.givenNames }} {{ s.surname }}
Select center and date to list teachers. No teachers for this session. No results

Print Roster

{{ printTeacherLabel }}
— All Teachers —
{{ s.givenNames }} {{ s.surname }}
Select center and date to list teachers. No teachers for this session. No results
{{ selectedStaffLabel || 'All Staff' }}
All Staff
{{ s.givenNames }} {{ s.surname }}
No results
Showing lessons that contain the student you're searching for: "{{ studentSearch }}"
No lessons found for "{{ studentSearch }}"
Area
— All Times —
{{ val }}
No results
— All Levels —
{{ val }}
No results
— All Teachers —
{{ val }}
No results
# Tr As
{{ lesson.area }} {{ lesson.time }} {{ lesson.level }} {{ lesson.teacher }} {{ lesson.studentCount }} {{ lesson.trialCount || '' }} {{ lesson.assessmentCount || '' }}

{{ selectedLesson.area }} - {{ selectedLesson.time }} - {{ selectedLesson.teacher }}

{{ selectedLesson.level }}

ID Att Full Name Age Lvl Lsn Status Info
{{ student.studentId }}
{{ student.givenNames }} {{ student.surname }}
{{ student.age != null ? student.age : '—' }} {{ student.levelStartDate ? new Date(student.levelStartDate).toLocaleDateString('en-AU', {day:'2-digit',month:'2-digit',year:'numeric'}) : '—' }} {{ student.levelLessonsAttended ?? '—' }} Cancelled
{{ icon.content }} {{ icon.content }}

Loading students...

No students found

Try adjusting your filters or center selection.

Please select a Center and Swimming Manager to get started.

Admin Dashboard

BigQuery Synchronization

Fetch the latest lesson and student data from BigQuery source tables.

Data Reconciliation

Pipeline: Links MS SQL → BQ tables → BQ views → PDA sync → UI

Diagnoses gaps at each stage for the selected center and date. Stage 1 shows what BigQuery's raw tables have that the views filter out. Stage 2 shows what the views have that the app hasn't loaded.

Select a center and date on the dashboard first.
Checking: {{ selectedCenterLabel }} on {{ selectedDate }}
Error: {{ reconcileResult.error }}

Links Reconciliation

Paste rows from the MS SQL Links query (tab-separated) to compare against the app's local data. Cancelled bookings are automatically excluded.

Select a center and date on the dashboard to generate the query.
{{ linksParseError }}

{{ linksParseSummary }}

Error: {{ linksResult.error }}
All in sync — {{ linksResult.sqlClassCount }} class(es), all active bookings present
{{ linksResult.missingClasses.length }} missing class(es) · {{ linksResult.missingStudents.length }} missing student booking(s)

Tick a class to hide its students from the list below.

ID {{ c.classId }} {{ c.locationName }} {{ c.level || '—' }} {{ c.lessonTime || '' }} {{ c.className || '' }}
{{ linksFilteredStudents.length }} shown
No students match the filter.
{{ s.studentId }} {{ s.className || s.classId }} {{ s.lessonTime || '—' }} {{ s.level || '—' }} {{ s.locationName }}

Operation Logs

{{ log }}

BigQuery Sync Progress

In Progress...
Completed
{{ syncError ? '⚠ Sync failed — see error in log' : (isSyncing ? 'Syncing...' : (syncProgress === 100 ? 'Complete' : 'Ready')) }} {{ syncError ? 'ERROR' : syncProgress + '%' }}
[{{ index + 1 }}] {{ log }}
_

{{ activeStudent.givenNames }} {{ activeStudent.surname }}

ID: {{ activeStudent.studentId }}

Level {{ activeStudent.level }}
Time {{ activeStudent.lessonTime }}
Area {{ activeStudent.area || 'N/A' }}
Teacher {{ activeStudent.teacher }} (⇄ {{ activeStudent.replacedTeacherName }})

Trial Outcome

Saved: {{ activeStudent.trialOutcome }}

Recorded by {{ activeStudent.trialOutcomeStaffName }}

Teacher Notes (Instructions for Print) Teacher Note

Last by {{ activeStudent.teacherNote.staffName }} on {{ formatDate(activeStudent.teacherNote.updatedAt) }}

Notes History

{{ activeStudent.teacherNote.staffName }} Teacher Note
{{ formatDate(activeStudent.teacherNote.updatedAt) }}

{{ activeStudent.teacherNote.content }}

No session notes found for this student.
{{ note.staffName }} Session Note
{{ formatDate(note.createdAt) }}

{{ note.content }}

Student Skills

No skills recorded for this level.
{{ skill.name }} {{ skill.dateAchieved ? formatDate(skill.dateAchieved).split(',')[0] : 'Achieved' }} Working On

{{ skill.description }}

Achieved · {{ skill.markedBy }}

⚠️ Please set a swimming manager first to save notes or mark skills.