diff --git a/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx b/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx index 7501723ef..e25910ab2 100644 --- a/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx +++ b/apps/backoffice/src/app/features/exam/components/ExamCandidatesPanel/columns.tsx @@ -1,5 +1,5 @@ -import { Badge, Button, Text } from '@mantine/core'; -import { IconRefresh, IconUserCheck } from '@tabler/icons-react'; +import { Badge, Button, Menu, Text } from '@mantine/core'; +import { IconChevronDown, IconRefresh, IconUserCheck } from '@tabler/icons-react'; import type { TFunction } from 'i18next'; import type { AdvancedColumn } from '@ema-platform/ui'; import { LICENSE_PERMISSIONS, RequirePermission } from '@ema-platform/auth'; @@ -86,39 +86,45 @@ export function examCandidateColumns( const attemptStatus = row.original.attempt?.status; const canRegrade = attemptStatus === 'SUBMITTED' || attemptStatus === 'EXPIRED'; return ( - <> - + + - - {canRegrade && ( + + - + {t('exam.candidates.record')} + - )} - + {canRegrade && ( + + } + onClick={() => handlers.onRegrade(row.original)} + > + {t('exam.candidates.regrade')} + + + )} + + ); }, }, diff --git a/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx b/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx index 1b62e4283..6c0728578 100644 --- a/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx +++ b/apps/backoffice/src/app/features/exam/pages/ExamPage/actions.tsx @@ -1,5 +1,10 @@ -import { ActionIcon, Group, Menu } from "@mantine/core"; -import { IconEdit, IconTrash, IconDetails, IconToggleRight } from "@tabler/icons-react"; +import { Button, Menu } from "@mantine/core"; +import { + IconChevronDown, + IconDetails, + IconEdit, + IconTrash, +} from "@tabler/icons-react"; import type { TFunction } from "i18next"; import type { AdvancedColumn } from "@ema-platform/ui"; import { LICENSE_PERMISSIONS, RequirePermission } from "@ema-platform/auth"; @@ -25,61 +30,55 @@ export function examActionsColumn( }, ): AdvancedColumn { return { - header: t("exam.columns.actions"), + header: t("exam.columns.actions", "Actions"), align: "right", cell: ({ row }) => ( - - - - - + + + + + } + onClick={() => handlers.onDetails(row.original)} + > + {t("exam.action.details", "Details")} + + + } + onClick={() => handlers.onEdit(row.original)} + > + {t("exam.action.edit", "Edit")} + + } + onClick={() => handlers.onDelete(row.original)} + > + {t("exam.action.delete", "Delete")} + + + {t("exam.form.status")} + {STATUSES.map((status) => ( + handlers.onChangeStatus(row.original, status)} > - - - - - {t("exam.form.status")} - {STATUSES.map((status) => ( - handlers.onChangeStatus(row.original, status)} - > - {t(`exam.form.${status.toLowerCase()}`)} - - ))} - - - handlers.onEdit(row.original)} - > - - - handlers.onDelete(row.original)} - > - - - - handlers.onDetails(row.original)} - > - - - + {t(`exam.form.${status.toLowerCase()}`)} + + ))} + + + ), }; } diff --git a/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx b/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx index 335c964cc..90ea74d9b 100644 --- a/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx +++ b/apps/backoffice/src/app/features/result/pages/ResultPage/actions.tsx @@ -1,5 +1,5 @@ -import { Button, Group } from '@mantine/core'; -import { IconEye, IconSend, IconTrash } from '@tabler/icons-react'; +import { Button, Menu } from '@mantine/core'; +import { IconChevronDown, IconEye, IconSend, IconTrash } from '@tabler/icons-react'; import type { TFunction } from 'i18next'; import type { AdvancedColumn } from '@ema-platform/ui'; import { LICENSE_PERMISSIONS, RequirePermission } from '@ema-platform/auth'; @@ -22,62 +22,66 @@ export function resultActionsColumn( cell: ({ row }) => { const r = row.original; return ( - - {(r.reviewStatus === 'MARKED' || r.reviewStatus === 'MODERATED') && ( - <> - - - - - - - - )} - {(r.reviewStatus === 'APPROVED' || r.reviewStatus === 'MODERATED') && ( - - - - )} - {r.reviewStatus === 'APPROVED' && ( - - - - )} - - - - - + + + } onClick={() => handlers.onViewDetail(r)}> + {t('result.action.viewEdit')} + + {(r.reviewStatus === 'MARKED' || r.reviewStatus === 'MODERATED') && ( + <> + + handlers.onQc(r, 'moderate')}> + {t('result.review.moderate')} + + + + handlers.onQc(r, 'approve')}> + {t('result.review.approve')} + + + + )} + {(r.reviewStatus === 'APPROVED' || r.reviewStatus === 'MODERATED') && ( + + handlers.onQc(r, 'return')}> + {t('result.review.return')} + + + )} + {r.reviewStatus === 'APPROVED' && ( + + } + onClick={() => handlers.onPublish(r)} + > + {t('result.review.publish')} + + + )} + + + } + onClick={() => handlers.onDelete(r)} + > + {t('result.action.delete')} + + + + ); }, };