analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
122 lines • 3.4 kB
TypeScript
import type { BaseApiClient } from '../types/api';
import type { CategoryConfig } from '../CheckBoxGroup/index';
/**
* School type for categories data
*/
export interface School {
id: string;
companyName: string;
}
/**
* SchoolYear type for categories data
*/
export interface SchoolYear {
id: string;
name: string;
schoolId: string;
}
/**
* Class type for categories data
*/
export interface Class {
id: string;
name: string;
schoolYearId: string;
}
/**
* Student type for categories data with nested school/schoolYear/class
*/
export interface Student {
id: string;
email: string;
name: string;
active: boolean;
createdAt: string;
updatedAt: string;
userInstitutionId: string;
institutionId: string;
profileId: string;
school: {
id: string;
name: string;
};
schoolYear: {
id: string;
name: string;
};
class: {
id: string;
name: string;
};
}
/**
* Fetch students using POST /students/filters based on selected schools, schoolYears, and classes
*
* @param apiClient - API client instance
* @param filters - Object with schoolIds, schoolYearIds, and classIds arrays
* @returns Promise resolving to array of students
*
* @example
* ```ts
* const students = await fetchStudentsByFilters(apiClient, {
* schoolIds: ['school-1'],
* schoolYearIds: ['year-1'],
* classIds: ['class-1']
* });
* ```
*/
export declare function fetchStudentsByFilters(apiClient: BaseApiClient, filters: {
schoolIds?: string[];
schoolYearIds?: string[];
classIds?: string[];
}): Promise<Student[]>;
/**
* Fetch classes filtered by selected schools/schoolYears via GET /classes.
* Wire format is comma-joined strings (NOT arrays): axios serializes an array
* param with brackets (`schoolId[]=a`) which the backend's default querystring
* parser does not fold into `schoolId`; a comma-joined string (`schoolId=a,b`)
* is serializer-agnostic and the backend splits it. A UUID never contains a comma.
*
* @param apiClient - API client instance
* @param filters - Object with schoolIds and/or schoolYearIds arrays
* @returns Promise resolving to array of classes
*
* @example
* ```ts
* const classes = await fetchClassesByFilters(apiClient, {
* schoolIds: ['school-1'],
* schoolYearIds: ['year-1'],
* });
* ```
*/
export declare function fetchClassesByFilters(apiClient: BaseApiClient, filters: {
schoolIds?: string[];
schoolYearIds?: string[];
}): Promise<Class[]>;
/**
* Load categories data from API and transform to CategoryConfig format
*
* @param apiClient - API client instance
* @param existingCategories - Current categories array to check if already loaded
* @returns Promise resolving to array of CategoryConfig
*
* @example
* ```ts
* const categories = await loadCategoriesData(apiClient, []);
* ```
*/
export declare function loadCategoriesData(apiClient: BaseApiClient, existingCategories: CategoryConfig[]): Promise<CategoryConfig[]>;
/**
* Format time for display (HH:mm format)
*
* @param date - Date object to format
* @returns Formatted time string in HH:mm format
*
* @example
* ```ts
* const time = formatTime(new Date('2025-01-01T14:30:00'));
* // Returns: '14:30'
* ```
*/
export declare function formatTime(date: Date): string;
//# sourceMappingURL=categoryDataUtils.d.ts.map