View the general calendar
Use the general calendar to review Harbor Soho's operational schedule by day, week, month or year, with visible events filtered by the signed-in user's permissions.
In this article
The general calendar gives location operators one place to read the operating schedule for a selected restaurant. In the Harbor Soho demo, it can show services, private events, vacation blackouts, staff leave, shifts and schedules when those records exist and the user has permission to see them.
Use route parameters when you need a repeatable view for support, training or capture production. Harbor Soho uses the Europe/London timezone, and the deterministic GB capture route anchors the calendar around `${SERVICE_OCCURRENCE_START}`.
Before you start
- Sign in with an organisation and location selected, such as Harbor Demo Group and Harbor Soho.
- Have at least one location-level view or manage permission for a calendar event type, such as service, vacation, staff leave, vacation blackout, staff schedule or staff shifts.
- Open the contextual route `/:orgId/:locationId/calendars`. If the location has no timezone, ranges are calculated in `UTC`; Harbor Soho uses `Europe/London`.
- For repeatable GB demo captures, use `${APP_DEEPLINK_BASE}${ORG_ID}/${LOCATION_ID}/calendars?mode=week&startDate=${SERVICE_OCCURRENCE_START}`.
Instructions
- 1.
Open the general calendar
From the selected location context, open `/:orgId/:locationId/calendars`. The calendar starts in `month` unless a valid `mode` parameter is provided, so use `mode=week` or another supported mode when the view needs to be deterministic.
- 2.
Review the visible operating range
Read the events shown for the selected date range. The general preset does not request a fixed event type; it asks for all event types the signed-in user may see, and the backend filters the response again by permission.
- 3.
Change date or granularity
Use calendar navigation to move through the schedule, or set `mode` and `startDate` in the route for a precise day, week, month or year. On web, the route stays synchronised with `mode` and `startDate`; `firstVisibleDate` is synchronised for week view only.
- 4.
Read event meaning before opening details
Use each event's title, date, time and colour to identify whether it is a service, private event, blackout, staff leave, shift, schedule or warning state. Selecting an event opens the event detail surface handled by `calendars.open-event`, with editing controlled by management permissions for that event type.
- 5.
Refresh when returning to live operations
Refresh the visible range when the schedule may have changed. The reviewed implementation connects manual refresh to the calendar header gesture rather than a visible refresh button, and it also forces a refresh when the screen regains focus after the first focus.
Validations and limits
- The screen requires both organisation and location context; missing context shows the context-not-found state.
- `mode` is accepted only as `day`, `week`, `month` or `year`; any other value is ignored and the calendar opens in `month`.
- Invalid `startDate` or `firstVisibleDate` values are ignored, and date comparisons use the location timezone.
- The frontend only renders the page when at least one relevant calendar permission is present, and the backend filters event types again before returning events.
- If the user has no visible event types, the calendar shows a no-permission state or receives no events from the backend.
- The feed endpoint is preferred, but recoverable feed failures fall back to the classic calendar-events list endpoint for the same context.
- Cancelled recurrence overrides are not shown, and services that overlap a location vacation or private event are omitted from occurrence listings.
- The general calendar does not use the reservations-specific occurrence queries, and the reviewed screen does not expose a visible kind filter or visible refresh button.
Expected result
The operator sees the permission-filtered operating schedule for Harbor Soho in the selected calendar range, can move between supported views, and can open permitted event details without leaving the location context.