UNPKG

analytica-frontend-lib

Version:

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

1 lines 4.81 kB
{"version":3,"sources":["../src/types/examsHistory.ts"],"sourcesContent":["/**\n * Exam History Types\n *\n * This file contains types related to the exam history feature,\n * including API responses, table items, and filters.\n *\n * Uses /activities/history endpoint with type=PROVA to filter for exams.\n */\n\n/**\n * Filter option type for exam filters\n */\nexport interface ExamFilterOption {\n id: string;\n name: string;\n [key: string]: unknown;\n}\n\n/**\n * Exam status enum - specific for PROVA type activities\n * Manually set by professor (different from automatic activity status)\n */\nexport enum ExamStatus {\n AGENDADA = 'AGENDADA',\n EM_ANDAMENTO = 'EM_ANDAMENTO',\n FINALIZADA = 'FINALIZADA',\n CANCELADA = 'CANCELADA',\n}\n\n/**\n * Exam display status for UI\n */\nexport enum ExamDisplayStatus {\n AGENDADA = 'Agendada',\n EM_ANDAMENTO = 'Em andamento',\n FINALIZADA = 'Finalizada',\n CANCELADA = 'Cancelada',\n}\n\n/**\n * Map API exam status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapExamStatusToDisplay = (\n apiStatus: ExamStatus\n): ExamDisplayStatus => {\n const statusMap: Record<ExamStatus, ExamDisplayStatus> = {\n [ExamStatus.AGENDADA]: ExamDisplayStatus.AGENDADA,\n [ExamStatus.EM_ANDAMENTO]: ExamDisplayStatus.EM_ANDAMENTO,\n [ExamStatus.FINALIZADA]: ExamDisplayStatus.FINALIZADA,\n [ExamStatus.CANCELADA]: ExamDisplayStatus.CANCELADA,\n };\n return statusMap[apiStatus] || ExamDisplayStatus.AGENDADA;\n};\n\n/**\n * Filter options extracted from exams API responses\n */\nexport interface ExamApiFilterOptions {\n schools: ExamFilterOption[];\n classes: ExamFilterOption[];\n subjects: ExamFilterOption[];\n schoolYears: ExamFilterOption[];\n}\n\n/**\n * Generic entity reference with id and name\n */\ntype EntityRef = { id: string; name: string };\n\n/**\n * Subject object from backend API response\n */\nexport interface ExamSubject extends EntityRef {\n areaKnowledgeId: string;\n}\n\n/**\n * Breakdown item per school/class for an exam response\n */\nexport interface ExamBreakdownItem {\n school?: EntityRef | null;\n schoolYear?: EntityRef | null;\n class?: EntityRef | null;\n totalStudents: number;\n answeredStudents: number;\n completionPercentage: number;\n}\n\n/**\n * Exam history response from backend API /exams/history\n */\nexport interface ExamHistoryResponse {\n id: string;\n title: string;\n startDate: string | null;\n status: ExamStatus;\n completionPercentage: number;\n questionCount: number;\n createdAt: string;\n subject: ExamSubject | null;\n creator: EntityRef | null;\n totalStudents?: number;\n answeredStudents?: number;\n breakdown?: ExamBreakdownItem[];\n}\n\n/**\n * Exam table item interface for exams list 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 interface ExamTableItem extends Record<string, unknown> {\n id: string;\n startDate: string;\n title: string;\n school: string;\n class: string;\n status: ExamDisplayStatus;\n questionCount: number;\n createdAt: string;\n completionPercentage: number;\n}\n\n/**\n * Exams history API complete response from /activities/history endpoint with type=PROVA\n */\nexport interface ExamsHistoryApiResponse {\n message: string;\n data: {\n activities: ExamHistoryResponse[];\n pagination: {\n total: number;\n page: number;\n limit: number;\n totalPages: number;\n };\n };\n}\n\n/**\n * Exam history filters for API query parameters\n */\nexport interface ExamHistoryFilters {\n page?: number;\n limit?: number;\n status?: ExamStatus;\n search?: string;\n startDate?: string;\n subjectId?: string;\n schoolId?: string;\n classId?: string;\n sortBy?: 'startDate' | 'title' | 'completionPercentage' | 'createdAt';\n sortOrder?: 'asc' | 'desc';\n}\n\n/**\n * Exam pagination interface\n */\nexport interface ExamPagination {\n total: number;\n page: number;\n limit: number;\n totalPages: number;\n}\n"],"mappings":";AAsBO,IAAK,aAAL,kBAAKA,gBAAL;AACL,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,kBAAe;AACf,EAAAA,YAAA,gBAAa;AACb,EAAAA,YAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;AAUL,IAAK,oBAAL,kBAAKC,uBAAL;AACL,EAAAA,mBAAA,cAAW;AACX,EAAAA,mBAAA,kBAAe;AACf,EAAAA,mBAAA,gBAAa;AACb,EAAAA,mBAAA,eAAY;AAJF,SAAAA;AAAA,GAAA;AAYL,IAAM,yBAAyB,CACpC,cACsB;AACtB,QAAM,YAAmD;AAAA,IACvD,CAAC,yBAAmB,GAAG;AAAA,IACvB,CAAC,iCAAuB,GAAG;AAAA,IAC3B,CAAC,6BAAqB,GAAG;AAAA,IACzB,CAAC,2BAAoB,GAAG;AAAA,EAC1B;AACA,SAAO,UAAU,SAAS,KAAK;AACjC;","names":["ExamStatus","ExamDisplayStatus"]}