analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
131 lines (122 loc) • 6.13 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/utils/filterHelpers.ts
var getSchoolOptionsFromUserData = (userData) => {
if (!_optionalChain([userData, 'optionalAccess', _ => _.userInstitutions])) {
return [];
}
const schoolsMap = /* @__PURE__ */ new Map();
for (const userInst of userData.userInstitutions) {
if (_optionalChain([userInst, 'access', _2 => _2.school, 'optionalAccess', _3 => _3.id]) && _optionalChain([userInst, 'access', _4 => _4.school, 'optionalAccess', _5 => _5.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 (!_optionalChain([userData, 'optionalAccess', _6 => _6.subTeacherTopicClasses])) {
return [];
}
const subjectsMap = /* @__PURE__ */ new Map();
for (const subTeacher of userData.subTeacherTopicClasses) {
if (_optionalChain([subTeacher, 'access', _7 => _7.subject, 'optionalAccess', _8 => _8.id]) && _optionalChain([subTeacher, 'access', _9 => _9.subject, 'optionalAccess', _10 => _10.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 (!_optionalChain([userData, 'optionalAccess', _11 => _11.userInstitutions])) {
return [];
}
const schoolYearsMap = /* @__PURE__ */ new Map();
for (const userInst of userData.userInstitutions) {
if (_optionalChain([userInst, 'access', _12 => _12.schoolYear, 'optionalAccess', _13 => _13.id]) && _optionalChain([userInst, 'access', _14 => _14.schoolYear, 'optionalAccess', _15 => _15.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 (_optionalChain([userInst, 'access', _16 => _16.class, 'optionalAccess', _17 => _17.id]) && _optionalChain([userInst, 'access', _18 => _18.class, 'optionalAccess', _19 => _19.name])) {
classesMap.set(userInst.class.id, {
id: userInst.class.id,
name: userInst.class.name
});
}
}
}
if (userData.subTeacherTopicClasses) {
for (const subTeacher of userData.subTeacherTopicClasses) {
if (_optionalChain([subTeacher, 'access', _20 => _20.class, 'optionalAccess', _21 => _21.id]) && _optionalChain([subTeacher, 'access', _22 => _22.class, 'optionalAccess', _23 => _23.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 (_optionalChain([ref, 'optionalAccess', _24 => _24.id]) && _optionalChain([ref, 'optionalAccess', _25 => _25.name])) map.set(ref.id, ref.name);
};
for (const item of items) {
setIfPresent(subjectsMap, item.subject);
_optionalChain([item, 'access', _26 => _26.breakdown, 'optionalAccess', _27 => _27.forEach, 'call', _28 => _28((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)
};
};
exports.getSchoolOptionsFromUserData = getSchoolOptionsFromUserData; exports.getSubjectOptionsFromUserData = getSubjectOptionsFromUserData; exports.getSchoolYearOptionsFromUserData = getSchoolYearOptionsFromUserData; exports.getClassOptionsFromUserData = getClassOptionsFromUserData; exports.buildUserFilterData = buildUserFilterData; exports.mergeFilterOptions = mergeFilterOptions; exports.extractBreakdownFilterOptions = extractBreakdownFilterOptions;
//# sourceMappingURL=chunk-JLOAEKEJ.js.map