diff --git a/apps/backoffice/src/app/features/question/pages/QuestionPage.tsx b/apps/backoffice/src/app/features/question/pages/QuestionPage.tsx
index 502b6c59b..a317523e9 100644
--- a/apps/backoffice/src/app/features/question/pages/QuestionPage.tsx
+++ b/apps/backoffice/src/app/features/question/pages/QuestionPage.tsx
@@ -15,7 +15,6 @@ import {
Select,
NumberInput,
Textarea,
- Table,
} from '@mantine/core';
import { useDisclosure } from '@mantine/hooks';
import { useTranslation } from 'react-i18next';
@@ -27,7 +26,7 @@ import {
IconSend,
IconGavel,
} from '@tabler/icons-react';
-import { AdvancedColumn, ModalFooter, notify } from '@ema-platform/ui';
+import { AdvancedColumn, AdvancedTable, ModalFooter, notify, useErrorHandler, useServerTable } from '@ema-platform/ui';
import { extractErrorMessage } from '@ema-platform/api';
import { useGetCertificationsQuery } from '../../certification/api/certification-api';
import {
@@ -242,26 +241,61 @@ export function QuestionPage() {
cell: ({ row }) => {row.original.points},
},
{
- header: t('question.columns.status'),
+ header: t('question.qc.column'),
cell: ({ row }) => (
-
- {row.original.isActive ? t('question.status.active') : t('question.status.inactive')}
+
+ {t(`question.qc.${row.original.status}`)}
),
},
{
header: '',
label: t('question.columns.actions', 'Actions'),
- cell: ({ row }) => (
-
- { setEditing(row.original); setShowForm(true); }}>
-
-
- { setDeleteTarget(row.original); openDelete(); }}>
-
-
-
- ),
+ cell: ({ row }) => {
+ const q = row.original;
+ return (
+
+ {(q.status === 'DRAFT' || q.status === 'REJECTED') && (
+ }
+ loading={isSubmittingReview}
+ onClick={() => handleSubmitForApproval(q)}
+ >
+ {t('question.qc.submit')}
+
+ )}
+ {q.status === 'PENDING_APPROVAL' && (
+ <>
+
+
+ >
+ )}
+ {q.status === 'APPROVED' && (
+ }
+ onClick={() => openReview(q, 'RETIRED')}
+ >
+ {t('question.qc.retire')}
+
+ )}
+ { setEditing(q); setShowForm(true); }}>
+
+
+ { setDeleteTarget(q); openDelete(); }}>
+
+
+
+ );
+ },
},
];
@@ -299,93 +333,19 @@ export function QuestionPage() {
clearable
/>
-
-
-
- {t('question.columns.title')}
- {t('question.columns.certification')}
- {t('question.columns.form')}
- {t('question.columns.points')}
- {t('question.qc.column')}
-
-
-
-
- {filtered.map((q) => (
-
- {q.title[locale]}
- {getCertName(q.certificationId)}
- {t(`question.form.${q.form === 'ESSAY' ? 'essay' : 'choice'}`)}
- {q.points}
-
-
- {t(`question.qc.${q.status}`)}
-
-
-
-
- {(q.status === 'DRAFT' || q.status === 'REJECTED') && (
- }
- loading={isSubmittingReview}
- onClick={() => handleSubmitForApproval(q)}
- >
- {t('question.qc.submit')}
-
- )}
- {q.status === 'PENDING_APPROVAL' && (
- <>
-
-
- >
- )}
- {q.status === 'APPROVED' && (
- }
- onClick={() => openReview(q, 'RETIRED')}
- >
- {t('question.qc.retire')}
-
- )}
- { setEditing(q); setShowForm(true); }}>
-
-
- { setDeleteTarget(q); openDelete(); }}>
-
-
-
-
-
- ))}
- {filtered.length === 0 && (
-
-
- {t('question.noQuestions')}
-
-
- )}
-
-
-
+
+