mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-08-29 19:58:13 +00:00
feat(signature): add signature functionality for officers and seafarers
- Implemented MySignaturePad component for officers to draw and upload their signatures. - Added signature API endpoints for managing officer signatures in the backoffice. - Created SignaturePad component for seafarers to manage their specimen signatures. - Updated ProfilePage to include signature tabs for both officers and seafarers. - Added translations for signature-related terms in English and Amharic. - Introduced RankTier options for seafarer registration. - Added tests for canvas-point utility to ensure accurate pointer mapping on signature pad.
This commit is contained in:
@@ -25,6 +25,19 @@ export const DEPARTMENT_OPTIONS = [
|
||||
{ value: 'CATERING', label: 'Catering' },
|
||||
];
|
||||
|
||||
/**
|
||||
* The STCW limitation a Certificate of Competency is issued under.
|
||||
*
|
||||
* One choice, worded generically, because the threshold it means differs by
|
||||
* department — gross tonnage on deck, propulsion power in the engine room. The
|
||||
* certificate states the department-specific wording; the applicant only picks
|
||||
* which side of the line they serve.
|
||||
*/
|
||||
export const RANK_TIER_OPTIONS = [
|
||||
{ value: 'ABOVE', label: 'Above' },
|
||||
{ value: 'BELOW', label: 'Below' },
|
||||
];
|
||||
|
||||
export const HAIR_COLOR_OPTIONS = [
|
||||
{ value: 'BLACK', label: 'Black' },
|
||||
{ value: 'BROWN', label: 'Brown' },
|
||||
@@ -158,6 +171,7 @@ export const SEAFARER_REGISTRATION_FIELD_LABELS: Record<keyof SeafarerRegistrati
|
||||
passportNumber: 'Passport Number',
|
||||
passportExpiry: 'Passport Expiry Date',
|
||||
department: 'Department',
|
||||
tier: 'Certificate Limitation',
|
||||
locationId: 'Location',
|
||||
permanentAddress: 'Permanent Address',
|
||||
currentAddress: 'Current Address',
|
||||
@@ -192,7 +206,7 @@ export const SEAFARER_REGISTRATION_SECTIONS: {
|
||||
{
|
||||
key: 'identity',
|
||||
title: 'Identity',
|
||||
fields: ['placeOfBirth', 'passportNumber', 'passportExpiry', 'department'],
|
||||
fields: ['placeOfBirth', 'passportNumber', 'passportExpiry', 'department', 'tier'],
|
||||
},
|
||||
{
|
||||
key: 'address',
|
||||
@@ -220,6 +234,7 @@ const OPTION_LABELS: Partial<Record<keyof SeafarerRegistrationAnswers, { value:
|
||||
gender: GENDER_OPTIONS,
|
||||
maritalStatus: MARITAL_STATUS_OPTIONS,
|
||||
department: DEPARTMENT_OPTIONS,
|
||||
tier: RANK_TIER_OPTIONS,
|
||||
hairColor: HAIR_COLOR_OPTIONS,
|
||||
eyeColor: EYE_COLOR_OPTIONS,
|
||||
bloodType: BLOOD_TYPE_OPTIONS,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import type { SeafarerDepartment } from '../seafarer/seafarer.types';
|
||||
|
||||
/** Above/Below — the STCW limitation a Certificate of Competency is issued under. */
|
||||
export type RankTier = 'ABOVE' | 'BELOW';
|
||||
|
||||
export type SeafarerRegistrationStatus =
|
||||
| 'DRAFT'
|
||||
| 'SUBMITTED'
|
||||
@@ -30,6 +33,11 @@ export interface SeafarerRegistrationAnswers {
|
||||
passportNumber: string | null;
|
||||
passportExpiry: string | null;
|
||||
department: SeafarerDepartment | null;
|
||||
/**
|
||||
* The STCW ship-size limitation this seafarer's CoCs are issued under.
|
||||
* Read with `department` to pick the CoC ladder; CoP carries no tier.
|
||||
*/
|
||||
tier: RankTier | null;
|
||||
locationId: string | null;
|
||||
permanentAddress: string | null;
|
||||
currentAddress: string | null;
|
||||
|
||||
Reference in New Issue
Block a user