Commit Graph

29 Commits

Author SHA1 Message Date
mihretue
34208ed0d6 feat(exam): show candidate answers + prefill auto-scores in RecordResultModal
Wires useGetGradingSheetQuery into the grading modal: a new 'Candidate's
Answer' column shows the selected option or essay text per question, and
whichever CHOICE scores auto-grading could already compute get prefilled
into the score inputs (tagged 'Auto-graded', still editable — the examiner
can override). Grading a mixed or ESSAY paper no longer means guessing at
what was answered or re-deriving the CHOICE portion by eye.

Degrades to blank inputs exactly as before for an OFFLINE candidate or one
who hasn't sat an online attempt (gradingSheet returns empty answers for
those, not an error).
2026-08-24 13:02:08 +00:00
Nati
21ffca9094 Merge branch 'WorkflowChange' of github.com:Tria-plc/emaui into WorkflowChange 2026-08-21 18:20:02 +00:00
Fistum
62492e957b backoffice 2026-08-21 13:09:40 +00:00
Fistum
6b5b99f42d ui chnages 2026-08-21 11:16:22 +00:00
mihretue
c0b5871dc3 Merge remote-tracking branch 'origin/WorkflowChange' into feature/exam-attempt-domain
# Conflicts:
#	apps/portal/src/app/features/exams/pages/ExamsPage/columns.tsx
#	apps/portal/src/app/features/exams/pages/ExamsPage/index.tsx
#	libs/api/src/lib/features/licensing/licensing.helpers.ts
#	libs/auth/src/lib/components/AuthBootstrap.tsx
2026-08-20 11:41:06 +00:00
mihretue
ae3af7777e fix(exam,result,question): kebab-icon action menus, status change as a picker
Two follow-ups on the dropdown-actions pass:
- All four action menus (exams, results, questions, candidates panel) now
  trigger off a plain three-dot icon button instead of a text 'Actions'
  button with a chevron.
- Exam status change no longer lists all six statuses flat in the dropdown
  (bad UX, looked like six always-visible options). 'Status' is now one
  menu item that opens a small picker modal (current status + a Select +
  Update) rather than the full edit form.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 11:46:16 +00:00
mihretue
80db201676 fix(exam,result): collapse row actions into a dropdown menu everywhere
Same treatment as the questions table, applied consistently: exams list,
exam results list, and the exam-detail candidates panel all now show a
single Actions button opening a dropdown instead of a row of inline
buttons/icons. Also fixes the exams list's action column header, which was
rendering the literal untranslated key ('exam.columns.actions') — missing
a fallback string, same pattern already used elsewhere in this file.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 11:40:13 +00:00
mihretue
8239d7ebe2 feat(exam,result): quick status action, per-row publish
Two UX gaps found in testing:

- Exams list: changing status (e.g. PENDING -> ACTIVE) required opening the
  full Edit modal for a one-field change. Added a status menu (teal toggle
  icon) directly in the row actions, calling PUT /exams/:id with just
  {status} — the backend DTO was already PartialType, nothing to change
  there.
- Exam Results: publishing required first picking the exam in a page-level
  filter to un-grey the header Publish button — not discoverable, and an
  extra step disconnected from the row you actually care about. Added a
  Publish action directly on any APPROVED result's row, confirm-gated since
  it publishes every approved result for that exam (not just the one row)
  and notifies every candidate. The header filter+button still works too,
  for publishing a batch at once.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 12:20:21 +00:00
Estifo77
fc2730f60b loader roleout on backoffice 2026-08-15 11:33:28 +03: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
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
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
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
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
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
estifanos
7c3a25245f UI fixes 2026-08-11 11:48:09 +00:00
estifanos
c006644166 Add review status column and enhance action buttons in ResultPage 2026-08-08 06:29:28 +00:00
Estifo77
203d2e5026 Merge branch 'dev' of https://github.com/Tria-plc/emaui into estif-branch-1 2026-08-08 09:03:50 +03:00
Mulu Mehari
7c968c7093 Adding more functionalities for all the license types 2026-08-07 11:50:07 +03:00
estifanos
bbae230ad5 feat: implement ModalFooter component for consistent modal action layout 2026-08-05 08:50:38 +00:00
estifanos
5fb6927d1a fix: remove hardcoded page size from useServerTable in multiple pages for consistency 2026-08-05 07:30:10 +00:00
estifanos
599dc4aa83 feat(i18n): add new translations for refresh, view, toggle columns, and no results
refactor(payment): remove payment API client and related tests, consolidating payment logic

refactor(payment): delete payment modal and associated constants, hooks, and types

fix(ui): enhance AdvancedTable with refresh button and column toggle functionality

fix(ui): implement pagination in useServerTable for better data handling
2026-08-03 09:22:02 +00:00
estifanos
8f7c163b9e feat: integrate error handling across various components
- Added `useErrorHandler` hook to centralize error handling logic.
- Updated components in the backoffice and portal applications to utilize the new error handling mechanism, replacing direct notify calls with `handleError` for improved error messaging.
- Enhanced localization files to include generic error messages for better user feedback.
- Refactored error handling in forms and API interactions to ensure consistent user experience across the application.
2026-07-24 09:08:41 +00:00
mengstabketemaw
7f76c862fb feat: implement i18n localization for exam components and detail page commit 2026-06-30 16:46:19 +03:00
mengstabketemaw
9fd59f52ed feat: add i18n support and localized labels to certification and profession features commit 2026-06-30 15:57:25 +03:00
Mengisteab
ef69448bbd ui: update ui look on exam manag 2026-06-30 09:09:02 +00:00
Mengisteab
ae78c54c51 fix: update the exam module 2026-06-30 07:52:47 +00:00
mengstabketemaw
2b2ae71a8f feat: enhance exam result details and display comprehensive report information commit 2026-06-27 11:53:15 +03:00
mengstabketemaw
d7420d2de6 feat: added exam modules 2026-06-26 12:10:38 +03:00