analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
105 lines • 3.44 kB
TypeScript
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