UNPKG

analytica-frontend-lib

Version:

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

105 lines 3.44 kB
import type { ActivityFilterOption } from '../types/activitiesHistory'; /** * Generic user institution data structure * Matches the structure from GET /user/me endpoint */ export interface UserInstitutionData { school?: { id: string; name: string; }; schoolYear?: { id: string; name: string; }; class?: { id: string; name: string; }; } /** * Generic subject teacher topic class structure */ export interface SubTeacherTopicClassData { subject?: { id: string; name: string; }; class?: { id: string; name: string; }; } /** * Generic user data structure for filter extraction * Can be extended by consuming projects */ export interface UserFilterSourceData { userInstitutions?: UserInstitutionData[]; subTeacherTopicClasses?: SubTeacherTopicClassData[]; } /** * Extract unique school options from user data * Uses Map for deduplication to handle multiple institutions with same school * * @param userData - User data from /user/me endpoint * @returns Array of unique schools sorted by name * * @example * ```typescript * const userData = useUserStore(state => state.data); * const schools = getSchoolOptionsFromUserData(userData); * // Returns: [{ id: '1', name: 'Escola A' }, { id: '2', name: 'Escola B' }] * ``` */ export declare const getSchoolOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[]; /** * Extract unique subject options from user data * Uses Map for deduplication * * @param userData - User data from /user/me endpoint * @returns Array of unique subjects sorted by name * * @example * ```typescript * const userData = useUserStore(state => state.data); * const subjects = getSubjectOptionsFromUserData(userData); * // Returns: [{ id: '1', name: 'Matemática' }, { id: '2', name: 'Português' }] * ``` */ export declare const getSubjectOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[]; /** * Extract unique school year (série) options from user data * * @param userData - User data from /user/me endpoint * @returns Array of unique school years sorted by name */ export declare const getSchoolYearOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[]; /** * Extract unique class (turma) options from user data * Combines classes from userInstitutions and subTeacherTopicClasses * * @param userData - User data from /user/me endpoint * @returns Array of unique classes sorted by name */ export declare const getClassOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[]; /** * Build user filter data object from user data * Convenience function to create ActivityUserFilterData * * @param userData - User data from /user/me endpoint * @returns Object with schools and subjects arrays * * @example * ```typescript * const userData = useUserStore(state => state.data); * const userFilterData = buildUserFilterData(userData); * // Use with ActivitiesHistory component: * <ActivitiesHistory userFilterData={userFilterData} ... /> * ``` */ export declare const buildUserFilterData: (userData: UserFilterSourceData | null | undefined) => { schools: ActivityFilterOption[]; subjects: ActivityFilterOption[]; }; //# sourceMappingURL=filterHelpers.d.ts.map