UNPKG

analytica-frontend-lib

Version:

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

241 lines 6.36 kB
/** * Activities History Type Definitions * Types and interfaces for activities history and models functionality * Based on /activities/history and /activity-drafts endpoints */ import { ActivityType } from '../ActivityCreate/ActivityCreate.types/index'; import { GenericApiStatus, GenericDisplayStatus, BadgeActionType } from './common'; /** * Activity status from backend API /activities/history * Re-exported from common for backward compatibility */ export { GenericApiStatus as ActivityApiStatus } from './common'; /** * Activity status for display in UI (Badge component) * Re-exported from common for backward compatibility */ export { GenericDisplayStatus as ActivityDisplayStatus } from './common'; /** * Badge action types for activity status visualization * Re-exported from common for backward compatibility */ export { BadgeActionType as ActivityBadgeActionType } from './common'; /** * Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE) */ export declare enum ActivityDraftType { MODELO = "MODELO", RASCUNHO = "RASCUNHO" } /** * Generic entity reference with id and name */ type EntityRef = { id: string; name: string; }; /** * Subject object from backend API response */ export interface ActivitySubject extends EntityRef { areaKnowledgeId: string; } /** * Breakdown item per school/class for an activity response */ export interface ActivityBreakdownItem { school?: EntityRef | null; schoolYear?: EntityRef | null; class?: EntityRef | null; totalStudents: number; answeredStudents: number; completionPercentage: number; } /** * Activity history response from backend API /activities/history */ export interface ActivityHistoryResponse { id: string; title: string; startDate: string | null; finalDate: string | null; status: GenericApiStatus; completionPercentage: number; subject: ActivitySubject | null; creator: EntityRef | null; totalStudents?: number; answeredStudents?: number; breakdown?: ActivityBreakdownItem[]; } /** * Activity table item interface for activities list table */ export interface ActivityTableItem extends Record<string, unknown> { id: string; startDate: string | null; deadline: string | null; creator: string; /** Creator user id, used to gate owner-only actions (e.g. delete) */ creatorId?: string | null; title: string; school: string; year: string; subject: string; class: string; status: GenericDisplayStatus; completionPercentage: number; } /** * Pagination info from API */ export interface ActivityPagination { total: number; page: number; limit: number; totalPages: number; } /** * Activities history API complete response */ export interface ActivitiesHistoryApiResponse { message: string; data: { activities: ActivityHistoryResponse[]; pagination: ActivityPagination; }; } /** * Activity history filters for API query parameters */ export interface ActivityHistoryFilters { page?: number; limit?: number; type?: 'ATIVIDADE' | 'PROVA' | 'SIMULADO' | 'QUESTIONARIO' | 'AULA_RECOMENDADA'; search?: string; sortBy?: 'finalDate' | 'title' | 'completionPercentage'; sortOrder?: 'asc' | 'desc'; status?: string[] | GenericApiStatus; subject?: string[]; school?: string[]; class?: string[]; schoolYear?: string[]; creatorType?: string[]; startDate?: string; finalDate?: string; subjectId?: string; schoolId?: string; classId?: string; } /** * Activity draft filters object from backend */ export interface ActivityDraftFilters { questionTypes?: string[]; questionBanks?: string[]; subjects?: string[]; topics?: string[]; subtopics?: string[]; contents?: string[]; } /** * Subject object with icon and color information */ export interface SubjectData { id: string; name: string; icon: string; color: string; } /** * Activity model response from backend API (/activity-drafts) */ export interface ActivityModelResponse { id: string; type: ActivityDraftType; title: string | null; creatorUserInstitutionId: string | null; subjectId: string | null; subject?: SubjectData | null; filters: ActivityDraftFilters | null; createdAt: string; updatedAt: string; } /** * Activity model table item for display */ export interface ActivityModelTableItem extends Record<string, unknown> { id: string; type: ActivityType; title: string; savedAt: string; subject: SubjectData | null; subjectId: string | null; } /** * Activity models API response */ export interface ActivityModelsApiResponse { message: string; data: { activityDrafts: ActivityModelResponse[]; total: number; }; } /** * Activity model filters for API query */ export interface ActivityModelFilters { page?: number; limit?: number; search?: string; subjectId?: string; type?: ActivityDraftType; } /** * Filter option for dropdowns * Extends with index signature to be compatible with CheckBoxGroup Item type */ export interface ActivityFilterOption { id: string; name: string; [key: string]: unknown; } /** * User data for filter options (schools, classes, subjects) */ export interface ActivityUserFilterData { schools?: Array<{ id: string; name: string; }>; classes?: Array<{ id: string; name: string; schoolId?: string; }>; subjects?: Array<{ id: string; name: string; }>; schoolYears?: Array<{ id: string; name: string; }>; } /** * Get status badge action based on activity display status * @param status - Activity display status * @returns Badge action type for styling */ export declare const getActivityStatusBadgeAction: (status: GenericDisplayStatus) => BadgeActionType; /** * Activity status options for filter */ export declare const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[]; /** * Map API status to display status * @param apiStatus - Status from backend API * @returns Formatted status for UI display */ export declare const mapActivityStatusToDisplay: (apiStatus: GenericApiStatus) => GenericDisplayStatus; //# sourceMappingURL=activitiesHistory.d.ts.map