Commit Graph

568 Commits

Author SHA1 Message Date
Estifo77
31934f5933 loader rollout 2026-08-15 11:43:02 +03:00
Estifo77
fc2730f60b loader roleout on backoffice 2026-08-15 11:33:28 +03:00
Estifo77
6330c9ea55 applying loader on pages 2026-08-15 11:25:30 +03:00
estifanos
51cf0fbd17 UI landing page route fix 2026-08-15 07:02:37 +00:00
Estifo77
57682188de UI improvments on landing page 2026-08-14 15:33:14 +03:00
Estifo77
c00a19dd99 UI improvements 2026-08-14 15:10:41 +03:00
Estifo77
7733fe8efd UI improvements 2026-08-14 15:03:02 +03:00
Estifo77
9a7b93cfb6 loader UI improvements 2026-08-14 14:45:57 +03:00
estifanos
f31e75c3de feat: implement PageLoader component and register maritime loader as the default theme loader 2026-08-14 11:35:34 +00:00
Estifo77
652503d1de Merge branch 'dev' of https://github.com/Tria-plc/emaui into estif-branch-1 2026-08-14 13:45:31 +03:00
estifanos
7c79f4d644 feat: implement useAuthToken hook for consistent auth token retrieval across components.comment from nati 2026-08-14 09:27:37 +00:00
mihretue
4edce751ee feat(exam): candidate exam-taking experience (Phase 4)
New portal feature apps/portal/src/app/features/exam-attempt/, following
the repo's existing folder convention (pages/<Page>/index.tsx, components/,
types/, hooks/ — matches the payments feature's hooks/ precedent):

- types/exam-attempt.ts — response/local-state shapes
- hooks/useExamAttempt.ts — all API orchestration: load (registration +
  attempt), start/resume, per-question autosave (immediate on MCQ select,
  debounced+flushed-on-navigation for essay text), local countdown seeded
  from the server's serverTime/remainingSeconds, submit, and resync from
  the server whenever a write is refused as expired/already-submitted
- components/ExamInstructions, ExamTimer, ExamQuestionNav,
  ExamQuestionDisplay, ExamCompletion — one concern per file, not a single
  page dump
- pages/ExamAttemptPage — thin view layer over the hook

Flow: /exams (existing) gets a 'Take exam' action on eligible registration
rows → /exams/:examId/take, which shows instructions before an attempt
exists, the live exam screen while IN_PROGRESS, and a no-score completion
screen once SUBMITTED/EXPIRED (never fabricates a result — grading
doesn't exist yet).

Security note: RequirePermission on the route and disabled inputs after
local timeout are UI conveniences only. Every save/submit is independently
re-checked by the backend's ownership + applyExpiry() on each call: a
client that skipped the UI entirely and hit the API directly would be
bound by exactly the same rules.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-14 09:17:09 +00:00
Nati Nigussie
98bf79832f Merge pull request #13 from Tria-plc/estif-branch-1 2026-08-14 12:02:15 +03:00
estifanos
accfb8c95d fixes 2026-08-14 08:16:09 +00:00
estifanos
6795607b13 fix 2026-08-14 08:05:32 +00:00
estifanos
e0b3a4887a feat: add internationalization support for auth components and pages, including translations for Amharic and English 2026-08-14 07:54:30 +00:00
estifanos
d71483be4a feat: simplify hero section buttons and update call-to-action text 2026-08-14 07:46:39 +00:00
estifanos
cfbec948fb feat: enhance landing page with new hero section, badges, and improved styles 2026-08-14 07:43:14 +00:00
estifanos
de04ed64b3 feat: remove certificate verification page and related API, update landing page links 2026-08-14 07:34:35 +00:00
estifanos
d6b813b697 feat: add landing page copy and styles for English and Amharic versions
- Introduced `landing-copy.ts` containing text for the public landing page, supporting both English and Amharic languages.
- Added `landing.css` for styling the landing page, ensuring scoped styles to prevent conflicts with other app styles.
- Implemented smooth scrolling and animations for a better user experience.
2026-08-14 07:20:42 +00:00
mihretue
14b5bb83f9 feat(question): MCQ options authoring editor (Phase 2 domain foundation)
Backend now supports MCQ options + a separate answer-key table
(PUT /questions/:id/options). Frontend side of that, authoring only —
no candidate exam-taking UI.

- Question type gains options?: QuestionOption[] (no correctness field —
  the API never returns one, matching the backend's split-table design)
- New question-api hooks: getQuestionWithOptions, setQuestionOptions
- New QuestionOptionsEditor component (separate file, not inlined into
  QuestionPage) — add/remove/reorder options, mark correct, bilingual text
- Wired into the question edit form, shown only for an existing CHOICE
  question (options attach to an id, matching the backend's replace
  endpoint)
- en/am i18n strings for the new editor

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 19:28:03 +00:00
mihretue
d98d6a71fe fix(result): gate record/save buttons behind RECORD_EXAM_RESULT
Record Result (POST /results) and the detail-modal Save (PUT /results/:id)
had no RequirePermission gate, unlike every other action on this page —
both routes are backend-guarded (RECORD_EXAM_RESULT, or
RECORD_EXAM_RESULT|MODERATE_EXAM_RESULT for the update), the buttons just
never mirrored it client-side.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 17:17:14 +00:00
Nati Nigussie
d8b01a2003 Merge pull request #12 from Tria-plc/Refactor
feat: implement permission-based access control across various pages …
2026-08-13 16:12:03 +03:00
Nati
6852fc86c6 feat: implement permission-based access control across various pages and components
- Added RequirePermission component to manage access based on user permissions.
- Integrated permission checks in MySeaRecordsPage, SeafarerRegistrationPage, VesselRegistrationPage, WaiverPage, and PortalLayout.
- Updated router to enforce permissions for specific routes.
- Introduced PORTAL_PERMISSIONS and LICENSE_PERMISSIONS constants for consistent permission management.
- Enhanced usePermissions hook to fetch permissions from the server and determine access rights.
- Refactored UI components to conditionally render based on user permissions, improving security and user experience.
2026-08-13 12:58:11 +00:00
Nati Nigussie
49fbd8fc53 Merge pull request #11 from Tria-plc/Refactor
Refactor
2026-08-13 14:38:21 +03:00
Nati
220ed2d018 Merge branch 'dev' of github.com:Tria-plc/emaui into Refactor
Resolved by unifying on the lib/data AdvancedTable (PR #10) as the canonical
table component: kept its API plus teammate i18n/feature work, kept the
folder-per-table structure (index.tsx + columns.tsx + actions.tsx) across all
27 tables, removed the parallel lib/table implementation, and fixed
pre-existing compile breaks in ExamDetailPage/QuestionAssigner/RecordResultModal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-13 11:31:27 +00:00
Nati Nigussie
bacaf47cf6 Merge pull request #10 from Tria-plc/estif-branch-1
Estif branch 1
2026-08-13 14:07:08 +03:00
Nati
2af9e60800 feat(vessel-registration): add vessel registration page with incident reporting and certificate download functionality
feat(waiver): implement waiver page with application tracking and letter download feature

feat(ui): introduce AdvancedTable component for enhanced table functionality across the application

chore: update package-lock.json to remove unnecessary dependencies
2026-08-13 09:11:50 +00:00
Yonas Tewabe
a7e74cb7bd Add restart policy to ema-portal and ema-backoffice 2026-08-13 09:22:31 +03:00
estifanos
2fa55965e1 feat: enhance internationalization support across various components and pages 2026-08-12 12:30:22 +00:00
estifanos
31c52c02e0 feat: introduce useLocalized hook for bilingual value retrieval.(localization round 2)
- Added useLocalized hook to provide a stable function for retrieving bilingual values based on the current language.
- Updated various components across the portal and backoffice to utilize the new useLocalized hook for consistent bilingual label rendering.
- Refactored localized function in licensing.helpers to handle empty Amharic strings correctly.
- Enhanced localization handling in LicenseApplicationPage, ProfilePage, and other components to ensure proper language switching.
2026-08-12 11:31:20 +00:00
Estifo77
faf58850f0 UI fixes 2026-08-12 14:17:29 +03:00
estifanos
7242f8425a feat: add internationalization support for WaiverPage with translations for English and Amharic 2026-08-12 11:04:47 +00:00
estifanos
8f2dcb30f0 feat: add internationalization support for seafarer registry
- Integrated i18n for seafarer registry page, including translations for various UI elements and statuses.
- Updated SeafarerDetailDrawer and StatusModal components to utilize translation hooks.
- Enhanced user feedback messages for status updates and errors.
- Added new translations for Amharic and English locales, covering seafarer statuses, drawer labels, modal content, and table headers.
localization for backoffice
2026-08-12 10:55:14 +00:00
estifanos
9897a9bf78 feat: implement date display utility across various pages
- Added `useDateDisplayer` hook and `dateDisplayer` function to format dates consistently based on the user's language.
- Updated multiple components and pages in both backoffice and portal applications to utilize the new date display functionality, ensuring proper formatting for dates in lists, tables, and detail views.
- Introduced Ethiopian date formatting for Amharic language support.
- Refactored date handling in components such as ExamAppealsPage, ResultPage, SeafarerRegistryPage, and others to improve localization and user experience.
2026-08-12 10:22:39 +00:00
Estifo77
33935419fb cookie clearting fix 2026-08-12 12:34:09 +03:00
estifanos
7c9f78c680 feat: replace Paper with Modal in CertificationPage, ConfigurationPage, ExamPage, and QuestionPage for consistent UI 2026-08-12 07:55:43 +00:00
estifanos
d0bbfe30d1 feat: update MyApplicationsPage with AdvancedTable and add translations for table headers 2026-08-12 07:45:00 +00:00
estifanos
5aea4b1c9f feat: enhance MyApplicationsPage with segmented tabs and improved styling
- Added a new CSS module for MyApplicationsPage to style the segmented tab bar and clickable tiles.
- Implemented tab navigation for applications, licences, and apply sections, improving user experience.
- Introduced filtering options for applications, including search, status, and date range.
- Enhanced the display of application and licence information with new components and improved layout.
- Updated translations for the new features in both Amharic and English.
2026-08-12 07:37:53 +00:00
estifanos
362e6d88b4 feat: enhance PaymentConfigPage with refetch and loading state for license types 2026-08-12 07:37:19 +00:00
estifanos
bbb23f3bbf feat: replace Table with AdvancedTable for improved license type management in PaymentConfigPage 2026-08-12 07:35:43 +00:00
estifanos
0633ecc165 feat: implement applicant name fallback logic in licensing helpers and update MyApplicationsPage 2026-08-12 07:18:43 +00:00
estifanos
829dfed999 feat: add search and filter functionality to MyApplicationsPage 2026-08-12 07:15:21 +00:00
estifanos
444c3111ab UI 2026-08-12 06:40:43 +00:00
estifanos
4a68bdf169 UI fixes 2026-08-11 12:24:03 +00:00
estifanos
b2f99200e7 feat: enhance AmharicDatePicker with Ethiopian time selection and formatting 2026-08-11 12:20:22 +00:00
estifanos
7c3a25245f UI fixes 2026-08-11 11:48:09 +00:00
estifanos
18de7b1c1d UI fixes 2026-08-11 11:39:46 +00:00
estifanos
1b0a21c683 feat: add page size selection to AdvancedTable and update useServerTable hook 2026-08-11 11:37:52 +00:00
Estifo77
0573e01769 UI fixes 2026-08-11 14:32:26 +03:00