Header = dates, first column = the 3 fixed time blocks (times don't change — only who's on duty does). TX runs 7 days/24hrs, so blocks are filled every day. Click a cell to assign a staff member, or mark it as a leave/status code (A/L, DIL, HALF DAY, SICK, PH, OFF) if the usual person is out.
Someone cancelling at the last moment? Pick the same person and date range above, then use "Cancel leave for this range" — the Status code field is ignored for cancelling, it clears whatever leave is there.
| Full Name | Emp Code | Dept | Location | Contact | Hrs/Day | A/L Balance | DIL Balance |
|---|
| Name | Location | Notes |
|---|
| Code | Name | Notes |
|---|
| Code | Meaning | Counts as worked hours? | Color |
|---|
| Date | Name | Location |
|---|
Defines how much Overtime converts into a Day-in-Lieu, used by the "Auto-calc from OT" button in each staff member's Leave & DIL balance.
Used by "Notify staff" — the rota PDF gets sent to the department's group inbox rather than listing every individual staff member.
Read-only diagnostic — confirms the app can actually reach the SharePoint site via Microsoft Graph, and shows the real list names + real column names/types, so the data connection can be built against what SharePoint actually has (not assumptions). Doesn't read or write any schedule data.
Pulls real data from all 12 lists using the confirmed field mapping, and shows what it found — row counts + a couple of sample rows per list, mapped back into our internal field names. This is a preview only: nothing local is changed, and nothing is written to SharePoint. Once this looks right, the next step is wiring up the actual live load/save.
| Timestamp | User | Department | Action | Detail |
|---|