analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
140 lines (136 loc) • 6.39 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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/hooks/useComparator.ts
var _react = require('react');
function transformKnowledgeAreas(apiData) {
if (apiData.length === 0) return [];
const areaNames = _nullishCoalesce(_optionalChain([apiData, 'access', _ => _[0], 'optionalAccess', _2 => _2.areas, 'access', _3 => _3.map, 'call', _4 => _4((a) => a.name)]), () => ( []));
return areaNames.map((areaName) => ({
area: areaName,
values: apiData.map((item) => {
const area = item.areas.find((a) => a.name === areaName);
return {
itemId: item.itemId,
percentage: _nullishCoalesce(_optionalChain([area, 'optionalAccess', _5 => _5.percentage]), () => ( 0))
};
})
}));
}
function transformCurricularComponents(apiData) {
if (apiData.length === 0) return [];
const subjectNames = _nullishCoalesce(_optionalChain([apiData, 'access', _6 => _6[0], 'optionalAccess', _7 => _7.subjects, 'access', _8 => _8.map, 'call', _9 => _9((s) => s.name)]), () => ( []));
return subjectNames.map((subjectName) => ({
component: subjectName,
values: apiData.map((item) => {
const subject = item.subjects.find((s) => s.name === subjectName);
return {
itemId: item.itemId,
percentage: _nullishCoalesce(_optionalChain([subject, 'optionalAccess', _10 => _10.percentage]), () => ( 0))
};
})
}));
}
function transformCompetencies(apiData) {
if (apiData.length === 0) return [];
const competencyNumbers = apiData[0].competencies.map((c) => c.competencyNumber).sort((a, b) => a - b);
return competencyNumbers.map((num) => ({
competency: `Compet\xEAncia ${num}`,
values: apiData.map((item) => {
const comp = item.competencies.find((c) => c.competencyNumber === num);
return {
itemId: item.itemId,
percentage: _nullishCoalesce(_optionalChain([comp, 'optionalAccess', _11 => _11.averagePercentage]), () => ( 0))
};
})
}));
}
function transformNationalAverages(apiData) {
return apiData.map((item) => {
const findArea = (name) => item.areas.find((a) => a.name.toLowerCase().includes(name.toLowerCase()));
const languages = findArea("linguagens");
const humanities = findArea("humanas");
const essay = _nullishCoalesce(findArea("reda\xE7\xE3o"), () => ( findArea("essay")));
const naturalSciences = findArea("natureza");
const mathematics = findArea("matem\xE1tica");
return {
itemId: item.itemId,
itemName: item.itemName,
simulatedProficiency: item.overallTriScore,
publicAverage: item.publicSchoolAverage,
privateAverage: item.privateSchoolAverage,
details: {
languages: _nullishCoalesce(_optionalChain([languages, 'optionalAccess', _12 => _12.triScore]), () => ( 0)),
humanities: _nullishCoalesce(_optionalChain([humanities, 'optionalAccess', _13 => _13.triScore]), () => ( 0)),
essay: _nullishCoalesce(_optionalChain([essay, 'optionalAccess', _14 => _14.triScore]), () => ( 0)),
naturalSciences: _nullishCoalesce(_optionalChain([naturalSciences, 'optionalAccess', _15 => _15.triScore]), () => ( 0)),
mathematics: _nullishCoalesce(_optionalChain([mathematics, 'optionalAccess', _16 => _16.triScore]), () => ( 0))
},
status: item.status
};
});
}
var COMPARATOR_ENDPOINT = "/comparator";
function createUseComparator(config) {
const {
apiClient,
endpoint = COMPARATOR_ENDPOINT,
defaultPeriod = "1_MONTH" /* ONE_MONTH */
} = config;
return function useComparator() {
const [data, setData] = _react.useState.call(void 0, {
knowledgeAreas: [],
curricularComponents: [],
competencies: [],
nationalAverages: []
});
const [loading, setLoading] = _react.useState.call(void 0, false);
const [error, setError] = _react.useState.call(void 0, null);
const fetchData = _react.useCallback.call(void 0,
async (ids, type, tab) => {
setLoading(true);
setError(null);
try {
const body = type === "school" ? { type: tab, schoolIds: ids, period: defaultPeriod } : { type: tab, schoolYearIds: ids, period: defaultPeriod };
const response = await apiClient.post(endpoint, body);
const apiData = response.data.data;
setData((prev) => {
const newData = { ...prev };
switch (tab) {
case "knowledge-areas" /* KNOWLEDGE_AREAS */:
newData.knowledgeAreas = transformKnowledgeAreas(
apiData
);
break;
case "curricular-components" /* CURRICULAR_COMPONENTS */:
newData.curricularComponents = transformCurricularComponents(
apiData
);
break;
case "competencies" /* COMPETENCIES */:
newData.competencies = transformCompetencies(
apiData
);
break;
case "national-averages" /* NATIONAL_AVERAGES */:
newData.nationalAverages = transformNationalAverages(
apiData
);
break;
}
return newData;
});
} catch (err) {
console.error("Erro ao buscar dados do comparador:", err);
setError("Erro ao carregar dados de compara\xE7\xE3o");
} finally {
setLoading(false);
}
},
[]
);
return { data, loading, error, fetchData };
};
}
function createComparatorHook(config) {
return createUseComparator(config);
}
exports.createUseComparator = createUseComparator; exports.createComparatorHook = createComparatorHook;
//# sourceMappingURL=chunk-LDLEZQ3O.js.map