analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
166 lines • 4.23 kB
TypeScript
import type { BaseApiClient } from '../../types/api';
import { SimulatedPerformanceTag } from '../SimulatedStudentDetailsModal/types';
/**
* Single competency item in overview
*/
export interface EssayCompetencyOverviewItem {
competencyNumber: number;
name: string;
essaysCount: number;
studentsCount: number;
averageScore: number;
averagePercentage: number;
}
/**
* Essay competencies overview data
*/
export interface EssayCompetenciesOverviewData {
competencies: EssayCompetencyOverviewItem[];
totalEssays: number;
totalStudents: number;
}
/**
* Parameters for fetching essay competencies overview
*/
export interface EssayCompetenciesOverviewParams {
period: string;
schoolIds?: string[];
schoolYearIds?: string[];
classIds?: string[];
studentsIds?: string[];
}
/**
* API response for competencies overview
*/
export interface EssayCompetenciesOverviewApiResponse {
message: string;
data: EssayCompetenciesOverviewData;
}
/**
* Competence info
*/
export interface EssayCompetenceInfo {
number: number;
name: string;
}
/**
* Performance counters for essay competence
*/
export interface EssayCompetenceCounters {
highlight: number;
aboveAverage: number;
belowAverage: number;
attentionPoint: number;
}
/**
* Student item in essay competence details
*/
export interface EssayCompetenceStudentItem {
studentId: string;
userInstitutionId: string;
name: string;
school: string;
schoolYear: string;
class: string;
averageScore: number;
averagePercentage: number;
performance: SimulatedPerformanceTag;
essaysCount: number;
}
/**
* Paginated students for essay competence details
*/
export interface EssayCompetenceStudentsPaginated {
data: EssayCompetenceStudentItem[];
page: number;
limit: number;
total: number;
}
/**
* Essay competence details data
*/
export interface EssayCompetenceDetailsData {
competence: EssayCompetenceInfo;
classAverage: number;
classAveragePercentage: number;
totalEssays: number;
totalStudents: number;
counters: EssayCompetenceCounters;
students: EssayCompetenceStudentsPaginated;
}
/**
* Parameters for fetching essay competence details
*/
export interface EssayCompetenceDetailsParams {
competenceNumber: number;
period: string;
schoolIds?: string[];
schoolYearIds?: string[];
classIds?: string[];
page?: number;
limit?: number;
orderBy?: string;
order?: 'asc' | 'desc';
}
/**
* API response for competence details
*/
export interface EssayCompetenceDetailsApiResponse {
message: string;
data: EssayCompetenceDetailsData;
}
/**
* Hook state for overview
*/
export interface UseEssayCompetenciesOverviewState {
data: EssayCompetenciesOverviewData | null;
loading: boolean;
error: string | null;
}
/**
* Hook return for overview
*/
export interface UseEssayCompetenciesOverviewReturn extends UseEssayCompetenciesOverviewState {
fetchOverview: (params: EssayCompetenciesOverviewParams) => Promise<void>;
reset: () => void;
}
/**
* Hook state for details
*/
export interface UseEssayCompetenceDetailsState {
data: EssayCompetenceDetailsData | null;
loading: boolean;
error: string | null;
}
/**
* Hook return for details
*/
export interface UseEssayCompetenceDetailsReturn extends UseEssayCompetenceDetailsState {
fetchDetails: (params: EssayCompetenceDetailsParams) => Promise<void>;
reset: () => void;
}
/**
* EssayCompetenciesTable props
*/
export interface EssayCompetenciesTableProps {
readonly api: BaseApiClient;
readonly period: string;
readonly schoolIds?: string[];
readonly schoolYearIds?: string[];
readonly classIds?: string[];
}
/**
* EssayCompetenceDetailsModal props
*/
export interface EssayCompetenceDetailsModalProps {
readonly api: BaseApiClient;
readonly isOpen: boolean;
readonly onClose: () => void;
readonly competenceNumber: number | null;
readonly competenceName?: string;
readonly period: string;
readonly schoolIds?: string[];
readonly schoolYearIds?: string[];
readonly classIds?: string[];
}
//# sourceMappingURL=types.d.ts.map