Appearance
Timeline History
Chronological timeline of events for a worker, including contract milestones, timesheet activity, absence submissions, and expense events.
Route
/organisations/:orgId/workers/:id/history
Layout
Worker Profile Card
Displays the worker's profile at the top: name, country, contract type, job title, team name, manager names, and HR-only status.
Search and Date Filter Bar
A horizontal bar with:
- Search input (text search)
- From date picker (
vaadin-date-picker) - To date picker (
vaadin-date-picker) - Filter button
Timeline
Rendered via the EmployeeHistory component, which uses TimelineGeneric internally. Events are grouped by date and sorted newest first. The current year is hidden from date labels.
Event Types
Events are fetched via getWorkerHistory and include:
WorkCommenced-- Synthesised from the worker's start date if it is in the pastAbsenceSubmitted-- Worker submitted an absence requestAbsenceApproved-- Absence request was approvedTimesheetSubmitted/TimesheetResubmitted-- Timesheet submitted or resubmittedTimesheetApproved-- Timesheet was approvedTimesheetApprovalOverdue-- Timesheet approval is lateTimesheetOverdue-- Timesheet submission is overdueHrOnlyOnboarded-- HR-only worker was onboardedContractSignedByCandidate-- Contract was signed (appends worker type)TimesheetNotRequired-- Timesheets marked as not requiredExpensesNotRequired-- Expenses marked as not requiredAbsencesNotRequired-- Absences marked as not required
Each event displays a type-specific icon and a translated description. Events with associated documents include a hyperlink to the pending approval detail view at /organisations/:orgId/pending-approvals/:id:
- Timesheet events link using
{correlationId}:{weekAndYear}as the ID - Absence events link using
{absenceId} - Expense events link using
{expenseId}
Behavior notes
- When the contract has ended, the entire view is displayed with reduced opacity and greyscale.
- If no history events exist, a "no history" message is shown.
- On initialisation error, the error is displayed inline.