react-roster-shift-board/ is a React 19 / TypeScript 5 / Vite 7 single-page application that ships inside the AL extension. At build time it produces a single bundle and CSS file directly into BC-Human-Resource-AL/scripts/assets/. At runtime it loads inside a BC iframe via the standard Control Add-in mechanism.
Two screens, one app
The Gantt screen is not rendered in the current build. The code is retained for partner-specific deployments that re-enable it.
What it does for the user
Open the Visual Roster Board page in BC (page=70003175). The page loads an iframe; the React app inside it:
- Fetches the list of employees and the list of shift configurations marked
Add to Roster = true. - Fetches roster entries for the visible date window (default: 3 months centred on today).
- Renders a two-pane layout — a searchable employee sidebar on the left, a Syncfusion
ScheduleComponentgrouped by shift on the right. - Lets the user drag an employee onto a shift slot. The app calls back into BC to insert an
Employee Roster HACrow. - Re-renders the updated assignment in place.
How it talks to BC
Strictly through the Control Add-in extensibility bridge:
No HTTP, no fetch, no OData from the React side. This keeps audit, permissions and tenant-isolation uniform with BC’s normal access control.
Stack
License note for AppSource
Syncfusion EJ2 is commercial. The license key lives inreact-roster-shift-board/syncfusion-license.txt. registerLicense(key) from @syncfusion/ej2-base must be called at startup before any Syncfusion component renders.
Project layout
Build and deploy
.app artifact — no separate frontend hosting needed.
