Load a reporting dashboard by periods
Load the reporting dashboard for one selected location and one or more date periods. In the GB demo, Harbor Soho can compare two weekly periods and view Reservations or Billing while Antylogic loads the full dashboard dataset behind the scenes.
In this article
Reporting is scoped to the selected location. The operator starts from Harbor Soho, opens a report page, and the app uses the current organisation, location, permissions and period query before requesting dashboard data.
The dashboard request returns all implemented reporting pages in one read-only payload. The screen then selects the page that matches the active route, so the same period comparison can be used across Reservations, Billing, Catalogue, Performance and Employees reports.
Before you start
- The operator is signed in and has Harbor Demo Group selected.
- Harbor Soho is the selected location for the session.
- The operator has at least one accepted location permission: `reports:view`, `tpv:view`, `tpv:use`, `catalog:view`, `reservation:view` or `staff:view`.
- The operator opens a known location reporting page, such as `/reporting/performance/reservations` or `/reporting/sales/billing`.
- For GB captures, use `ORG_ID=ce03dc1a-263e-4485-a12a-6301f7989bde`, `LOCATION_ID=0f927b6b-30ac-4e18-9f16-b3c7c86b0703` and `APP_DEEPLINK_BASE=antylogic://`.
Instructions
- 1.
Open a location report
From the selected Harbor Soho location, open Reports and choose a page such as Performance > Reservations or Sales > Billing. The report must be opened inside a location route so the app can use the current organisation and location context.
- 2.
Choose the comparison periods
Use the period filter or open a direct link with `periods=2026-06-01_2026-06-07~2026-05-25_2026-05-31`. The page presents the ranges as Period 1 and Period 2 and keeps them attached to the report route.
- 3.
Wait for the dashboard load
After the organisation, location, permission and period values are valid, Antylogic loads the dashboard. During loading the operator sees a loading state; after success, the page title, description, period filter and report blocks appear.
- 4.
Read the active report page
The dashboard response contains all report pages, but the app displays the page that matches the active route. Reservations shows reservation summary, source breakdown and scheduling heatmap blocks; Billing shows financial and payment-oriented blocks for the same periods.
- 5.
Change periods or switch reports
When the operator edits a range, adds a comparison period or removes an extra period, the route parameters update and the dashboard reloads. When moving between report pages, the current `periods` query is preserved so the same dates can be compared across the reporting sections.
Validations and limits
- If `orgId` or `locationId` is missing, the page asks the operator to select a location and does not load the dashboard.
- Without one of the accepted location permissions, the page does not run the dashboard query and direct API access is denied.
- `periods` uses `YYYY-MM-DD_YYYY-MM-DD` ranges separated with `~`.
- If the route has no `periods` value, the UI creates a default weekly period; if the API receives no valid period chunks, the backend falls back to its default periods.
- Malformed period chunks are ignored by the backend; this action should not be documented as returning HTTP 400 for invalid `periods`.
- The dashboard is read-only and location-scoped. It does not export files, create downloads or aggregate multiple locations.
- There is no endpoint for one page only. Each page calls the aggregated `/reports` dashboard endpoint and then displays the page key for the active route.
- Implemented sections are Sales, Catalogue, Performance and Employees.
- Date ranges are interpreted in the location timezone, with UTC as fallback when the location timezone is empty or invalid.
- The frontend keeps dashboard data fresh for 60 seconds before refetching.
Expected result
The selected Harbor Soho report page displays the loaded title, description, period filter and report blocks. The operator can compare the same dates across reporting pages while Antylogic uses one aggregated, read-only dashboard load behind each page.