UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

1 lines 4.92 kB
{"version":3,"sources":["../src/components/ExamPageLayout/examsTableConfig.tsx"],"sourcesContent":["import Badge from '../Badge/Badge';\nimport ProgressBar from '../ProgressBar/ProgressBar';\nimport { renderTextCell } from '../../utils/renderTextCell';\nimport type { ColumnConfig } from '../TableProvider/TableProvider';\nimport { CaretRightIcon } from '@phosphor-icons/react/dist/csr/CaretRight';\nimport type { ExamTableItem } from '../../types/examsHistory';\nimport { ExamDisplayStatus } from '../../types/examsHistory';\n\n/**\n * Badge action type for exam status\n */\ntype ExamBadgeAction = 'info' | 'success' | 'warning' | 'error';\n\n/**\n * Get badge action based on exam status\n *\n * @param status - Exam display status\n * @returns Badge action type\n */\nexport const getExamStatusBadgeAction = (\n status: ExamDisplayStatus\n): ExamBadgeAction => {\n const actionMap: Record<ExamDisplayStatus, ExamBadgeAction> = {\n [ExamDisplayStatus.AGENDADA]: 'info',\n [ExamDisplayStatus.EM_ANDAMENTO]: 'warning',\n [ExamDisplayStatus.FINALIZADA]: 'success',\n [ExamDisplayStatus.CANCELADA]: 'error',\n };\n return actionMap[status] || 'info';\n};\n\n/**\n * Column configuration for exams table\n *\n * Columns:\n * - startDate: Data da prova (inicio)\n * - title: Titulo\n * - school: Escola\n * - class: Turma\n * - status: Status (Agendada, Em andamento, Finalizada, Cancelada)\n * - questionCount: Questoes\n * - createdAt: Criada em\n * - completionPercentage: Conclusao\n */\nexport const examsTableColumns: ColumnConfig<ExamTableItem>[] = [\n {\n key: 'startDate',\n label: 'Data da Prova',\n sortable: true,\n },\n {\n key: 'title',\n label: 'Título',\n sortable: true,\n className: 'max-w-[200px] truncate',\n render: renderTextCell,\n },\n {\n key: 'school',\n label: 'Escola',\n sortable: true,\n className: 'max-w-[150px] truncate',\n render: renderTextCell,\n },\n {\n key: 'class',\n label: 'Turma',\n sortable: true,\n className: 'max-w-[120px]',\n render: renderTextCell,\n },\n {\n key: 'status',\n label: 'Status',\n sortable: true,\n render: (value: unknown) => {\n const status = value as ExamDisplayStatus;\n return (\n <Badge\n variant=\"solid\"\n action={getExamStatusBadgeAction(status)}\n size=\"small\"\n >\n {status}\n </Badge>\n );\n },\n },\n {\n key: 'questionCount',\n label: 'Questões',\n sortable: true,\n className: 'text-center',\n },\n {\n key: 'createdAt',\n label: 'Criada em',\n sortable: true,\n },\n {\n key: 'completionPercentage',\n label: 'Conclusão',\n sortable: true,\n render: (value: unknown) => {\n const numValue = Number(value);\n const safeValue = Number.isFinite(numValue)\n ? Math.max(0, Math.min(100, numValue))\n : 0;\n return (\n <ProgressBar\n value={safeValue}\n variant=\"blue\"\n size=\"medium\"\n layout=\"compact\"\n showPercentage={true}\n compactWidth=\"w-[100px]\"\n />\n );\n },\n },\n {\n key: 'navigation',\n label: '',\n sortable: false,\n className: 'w-12',\n render: () => (\n <div className=\"flex justify-center\">\n <CaretRightIcon size={20} className=\"text-text-600\" />\n </div>\n ),\n },\n];\n"],"mappings":";;;;;;;;;;;AAIA,SAAS,sBAAsB;AA0EvB;AA3DD,IAAM,2BAA2B,CACtC,WACoB;AACpB,QAAM,YAAwD;AAAA,IAC5D,0BAA2B,GAAG;AAAA,IAC9B,kCAA+B,GAAG;AAAA,IAClC,8BAA6B,GAAG;AAAA,IAChC,4BAA4B,GAAG;AAAA,EACjC;AACA,SAAO,UAAU,MAAM,KAAK;AAC9B;AAeO,IAAM,oBAAmD;AAAA,EAC9D;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ,CAAC,UAAmB;AAC1B,YAAM,SAAS;AACf,aACE;AAAA,QAAC;AAAA;AAAA,UACC,SAAQ;AAAA,UACR,QAAQ,yBAAyB,MAAM;AAAA,UACvC,MAAK;AAAA,UAEJ;AAAA;AAAA,MACH;AAAA,IAEJ;AAAA,EACF;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,EACb;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,EACZ;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,QAAQ,CAAC,UAAmB;AAC1B,YAAM,WAAW,OAAO,KAAK;AAC7B,YAAM,YAAY,OAAO,SAAS,QAAQ,IACtC,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,QAAQ,CAAC,IACnC;AACJ,aACE;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP,SAAQ;AAAA,UACR,MAAK;AAAA,UACL,QAAO;AAAA,UACP,gBAAgB;AAAA,UAChB,cAAa;AAAA;AAAA,MACf;AAAA,IAEJ;AAAA,EACF;AAAA,EACA;AAAA,IACE,KAAK;AAAA,IACL,OAAO;AAAA,IACP,UAAU;AAAA,IACV,WAAW;AAAA,IACX,QAAQ,MACN,oBAAC,SAAI,WAAU,uBACb,8BAAC,kBAAe,MAAM,IAAI,WAAU,iBAAgB,GACtD;AAAA,EAEJ;AACF;","names":[]}