Staff — End-user view
Two roles: staff view their own schedule; admin schedules shifts and approves leave.
A. Staff
1. Staff Home — "My Calendar"
Page
/staff/home. Title "My Calendar" at top-left.
Top-right action area, left→right: Timezone Selector (optional) → Calendar (optional) → Timetable (optional) → My Profile (always present).
2. Timetable
Page
/staff/timetable. Uses one date/view control set, owned by the SyncfusionScheduleComponentheader.
- Prev / Next / Today changes the date range; change view (day/week, etc.).
- Date-range label always matches the rendered event grid.
UX note: the page does not render two duplicate date-control sets — only one, to avoid confusion.
3. Availability — declare a free schedule
Availability states when staff can be scheduled to work, not Shift or Leave.
- Each range applies over a date interval and contains time slots per weekday.
- Slots in each weekday sort by ascending start time.
- Availability is read when the policy checks Open Leave; creating Leave does not modify Availability.
Real-world example: Hoa declares Tuesday
09:00–17:00. → Admin knows the schedulable window. → No Shift is created until admin schedules.
4. Request leave
Staff opens the Leave Request or selects Create Leave on a published shift in My Calendar.
Shifts: select a published shift; Leave Time defaults to the shift and is editable within the shift range.- The Shifts filter defaults from the BU's current date to the next Friday.
Open: create leave without attaching a shift; no published shift may be assigned the same day.- Staff only selects a current/future date and only sees the Reason field.
- From My Calendar, shift and employee are preselected and locked; the Open tab is not shown.
- Review shows the record count, total duration, and candidates before Save.
Real-world example: Minh has a
09:00–17:00shift and needs leave13:00–15:00. → Selects Create Leave on the shift. → The composer locks the shift, allows Leave Time within the shift range, then Review & Save.
5. Open Shifts — claim open shifts
Staff see the Open Shifts belonging to their site/org within the viewed date range.
- Only shows shifts that are published and have no
EmployeeId. - Staff claim a shift so the system assigns it to their schedule.
- If the shift was just claimed by someone else, the claim is rejected and the list needs a refresh.
6. Staff Medical
Staff declare medical field groups on their profile; the BU decides which groups show and whether they are required.
- Only shows groups the BU enables (
Enabled = true): Dietary / Neurotypes/Other Conditions / Additional Information. - Required groups (
Required = true) must have an answer before submit. - Hidden groups keep their saved data; when the BU re-enables them, they show again.
Real-world example: Hoa belongs to a BU that enables required Dietary. → The form only asks what the BU cares about. → Hoa sees Dietary and must fill it; she does not see Neurotypes or Additional Information.
B. Admin
1. Roster Weekly Planner — weekly scheduling
Admin Portal → Staff → Roster → Weekly Planner. This screen runs either as a standalone Tuke route or embedded in the admin host via
app_type=aoadmin.
- Each staff member is one row, sorted by ascending name.
- One person has one row even with multi-BU records (dedupe by
enterpriseUserId, oremployeeIdif missing). - Only shows approved absence (approved-only).
- Shifts outside the selected org still show as context, but are dimmed and do not open the edit form.
- Admin can save/publish an unassigned shift; a published shift shows in the Open Shifts area.
2. Create Leave for staff
Admin can open the same leave composer from:
Staff Profile → Availability → Leave →
+New Leave: locks the staff being viewed.Weekly Planner → published shift →
Create Leave: locks staff and shift.Leave page →
+New Leave: select Staff before submit.The composer uses one
Datewith required Start/End Time; no date range orAll Day.Admin sees Reason, Leave Tracking Code and Notes; can filter shifts at past/current/future date.
The Open tab depends on BU restriction.
Real-world example: Admin opens
+New Leavein Binh's profile. → Avoids recording the wrong person. → Binh is locked; admin picks Shifts/Open per policy then Review & Save.
3. See leave overlapping a shift while scheduling
Create/Edit Shift popup: below Time Range is read-only field
Leave.
- Shows when the employee has leave that intersects the shift interval (evaluated by time interval, not just same date).
- Includes leave date/time, tracking code, and non-empty Notes for admin; hidden when no overlap.
→ Admin avoids scheduling staff while they are on leave.
4. Approve Leave
Approve drawer in Staff Roster Leave.
- Only shows Leave tracking codes.
- Keeps the existing approval status lifecycle; attaches the selected tracking code per current approve behavior.
5. Leave Manager — leave management page
Admin Portal → Staff → Leave. Page title "Leave Manager"; sidebar label stays Leave.
- Filters: Staff (multi-select, default all staff with permission), Status (multi-select
Submitted/Approved/Declined, default all three), Date (default from the BU's current date, no upper bound). - Filter changes reload the list per BU with
employeeIds,statusIds,startDate,endDate. - Fixed columns in order: Staff, Date, Reason, Notes (Admin), Tracking Code, Status, Action; no
All Day,Start Date,End Date. Notes (Admin)only shows for admins with permission.- Toolbar
+New Leaveopens the shared one-day composer. - Action per status:
Submitted→ Approve / Decline / Delete;Approved/Declined→ Edit / Delete. - Approve can edit content before moving to
Approved; Decline needs confirmation; Delete needs confirmation and refreshes the list. - Fixed ordering: ascending Date → Start Time → Staff Name; no column sort.
Real-world example: Admin selects 2 staff and status
Submitted. → The list shows onlySubmittedrequests of the 2 staff. → Sorted by Date → Start Time → name, regardless of which column header is clicked.
Summary
| Role | Does |
|---|---|
| Staff | View My Calendar / Timetable, declare availability, request leave, claim Open Shifts. |
| Admin | Schedule roster, create/approve leave, publish Open Shifts and see leave overlapping shifts. |
Next: Concepts & architecture.