UNPKG

analytica-frontend-lib

Version:

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

131 lines (130 loc) 4.3 kB
// src/utils/filterHelpers.ts var getSchoolOptionsFromUserData = (userData) => { if (!userData?.userInstitutions) { return []; } const schoolsMap = /* @__PURE__ */ new Map(); for (const userInst of userData.userInstitutions) { if (userInst.school?.id && userInst.school?.name) { schoolsMap.set(userInst.school.id, { id: userInst.school.id, name: userInst.school.name }); } } return Array.from(schoolsMap.values()).sort( (a, b) => a.name.localeCompare(b.name, "pt-BR") ); }; var getSubjectOptionsFromUserData = (userData) => { if (!userData?.subTeacherTopicClasses) { return []; } const subjectsMap = /* @__PURE__ */ new Map(); for (const subTeacher of userData.subTeacherTopicClasses) { if (subTeacher.subject?.id && subTeacher.subject?.name) { subjectsMap.set(subTeacher.subject.id, { id: subTeacher.subject.id, name: subTeacher.subject.name }); } } return Array.from(subjectsMap.values()).sort( (a, b) => a.name.localeCompare(b.name, "pt-BR") ); }; var getSchoolYearOptionsFromUserData = (userData) => { if (!userData?.userInstitutions) { return []; } const schoolYearsMap = /* @__PURE__ */ new Map(); for (const userInst of userData.userInstitutions) { if (userInst.schoolYear?.id && userInst.schoolYear?.name) { schoolYearsMap.set(userInst.schoolYear.id, { id: userInst.schoolYear.id, name: userInst.schoolYear.name }); } } return Array.from(schoolYearsMap.values()).sort( (a, b) => a.name.localeCompare(b.name, "pt-BR") ); }; var getClassOptionsFromUserData = (userData) => { if (!userData) { return []; } const classesMap = /* @__PURE__ */ new Map(); if (userData.userInstitutions) { for (const userInst of userData.userInstitutions) { if (userInst.class?.id && userInst.class?.name) { classesMap.set(userInst.class.id, { id: userInst.class.id, name: userInst.class.name }); } } } if (userData.subTeacherTopicClasses) { for (const subTeacher of userData.subTeacherTopicClasses) { if (subTeacher.class?.id && subTeacher.class?.name) { classesMap.set(subTeacher.class.id, { id: subTeacher.class.id, name: subTeacher.class.name }); } } } return Array.from(classesMap.values()).sort( (a, b) => a.name.localeCompare(b.name, "pt-BR") ); }; var buildUserFilterData = (userData) => ({ schools: getSchoolOptionsFromUserData(userData), subjects: getSubjectOptionsFromUserData(userData) }); var mergeFilterOptions = (base, extra) => { if (extra.length === 0) return base; const baseIds = new Set(base.map((item) => item.id)); const hasNew = extra.some((item) => !baseIds.has(item.id)); if (!hasNew) return base; const map = new Map(base.map((item) => [item.id, item.name])); extra.forEach((item) => { if (!map.has(item.id)) map.set(item.id, item.name); }); return Array.from(map.entries()).map(([id, name]) => ({ id, name })).sort((a, b) => a.name.localeCompare(b.name, "pt-BR")); }; var extractBreakdownFilterOptions = (items) => { const schoolsMap = /* @__PURE__ */ new Map(); const classesMap = /* @__PURE__ */ new Map(); const subjectsMap = /* @__PURE__ */ new Map(); const schoolYearsMap = /* @__PURE__ */ new Map(); const setIfPresent = (map, ref) => { if (ref?.id && ref?.name) map.set(ref.id, ref.name); }; for (const item of items) { setIfPresent(subjectsMap, item.subject); item.breakdown?.forEach((b) => { setIfPresent(schoolsMap, b.school); setIfPresent(classesMap, b.class); setIfPresent(schoolYearsMap, b.schoolYear); }); } const toOptions = (map) => Array.from(map.entries()).map(([id, name]) => ({ id, name })).sort((a, b) => a.name.localeCompare(b.name, "pt-BR")); return { schools: toOptions(schoolsMap), classes: toOptions(classesMap), subjects: toOptions(subjectsMap), schoolYears: toOptions(schoolYearsMap) }; }; export { getSchoolOptionsFromUserData, getSubjectOptionsFromUserData, getSchoolYearOptionsFromUserData, getClassOptionsFromUserData, buildUserFilterData, mergeFilterOptions, extractBreakdownFilterOptions }; //# sourceMappingURL=chunk-XRPLT7ML.mjs.map