UNPKG

@eclass/grade-scales

Version:

Módulo para calcular notas en base a una escala.

51 lines 4.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.convertToScale = void 0; const grades_1 = require("./grades/"); /** * Transforma una nota a otra según la escala de destino. * * @example * * const scale = { * name: "Chile 50% (1-7, aprobación 50%, nota 4)", * keyname: "Chile50", * min: 1, * max: 7, * passingGrade: 4, * passingPercentage: 50, * roundType: "round", * prepend: "", * append: "", * decimals: 1, * decimalSeparator: "," * } * * const newScale = { * name: "Porcentaje (1-100%, aprobación 60%, nota 70)", * keyname: "Porcentaje_1-100_60", * min: 1, * max: 100, * passingGrade: 70, * passingPercentage: 60, * roundType: "round", * prepend: "", * append: "%", * decimals: 0, * decimalSeparator: "," * } * const converted = convertToScale({ scale, grade: 4.6 }, newScale) */ const convertToScale = (convert, scale) => { // Redondeamos nota actual. const grade = (0, grades_1.gradeRound)(convert.scale, convert.grade); // calculamos ambos rangos (antiguo y nuevo) const oldRange = convert.scale.max - convert.scale.min; const newRange = scale.max - scale.min; // transformamos la nota const newGrade = ((grade - convert.scale.min) * newRange) / oldRange + scale.min; // redondeamos return (0, grades_1.gradeRound)(scale, newGrade); }; exports.convertToScale = convertToScale; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydFRvU2NhbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29udmVydFRvU2NhbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0NBQXNDO0FBT3RDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQ0c7QUFDSSxNQUFNLGNBQWMsR0FBRyxDQUM1QixPQUEwQixFQUMxQixLQUFzQixFQUNkLEVBQUU7SUFDViwyQkFBMkI7SUFDM0IsTUFBTSxLQUFLLEdBQUcsSUFBQSxtQkFBVSxFQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXRELDRDQUE0QztJQUM1QyxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQTtJQUN0RCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUE7SUFFdEMsd0JBQXdCO0lBQ3hCLE1BQU0sUUFBUSxHQUNaLENBQUMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQTtJQUVqRSxjQUFjO0lBQ2QsT0FBTyxJQUFBLG1CQUFVLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3BDLENBQUMsQ0FBQTtBQWpCWSxRQUFBLGNBQWMsa0JBaUIxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjYWxlQXR0cmlidXRlcyB9IGZyb20gJy4vdHlwZXMnXG5pbXBvcnQgeyBncmFkZVJvdW5kIH0gZnJvbSAnLi9ncmFkZXMvJ1xuXG50eXBlIENvbnZlcnRBdHRyaWJ1dGVzID0ge1xuICBzY2FsZTogU2NhbGVBdHRyaWJ1dGVzXG4gIGdyYWRlOiBudW1iZXJcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm1hIHVuYSBub3RhIGEgb3RyYSBzZWfDum4gbGEgZXNjYWxhIGRlIGRlc3Rpbm8uXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBjb25zdCBzY2FsZSA9IHtcbiAqICBuYW1lOiBcIkNoaWxlIDUwJSAoMS03LCBhcHJvYmFjacOzbiA1MCUsIG5vdGEgNClcIixcbiAqICBrZXluYW1lOiBcIkNoaWxlNTBcIixcbiAqICBtaW46IDEsXG4gKiAgbWF4OiA3LFxuICogIHBhc3NpbmdHcmFkZTogNCxcbiAqICBwYXNzaW5nUGVyY2VudGFnZTogNTAsXG4gKiAgcm91bmRUeXBlOiBcInJvdW5kXCIsXG4gKiAgcHJlcGVuZDogXCJcIixcbiAqICBhcHBlbmQ6IFwiXCIsXG4gKiAgZGVjaW1hbHM6IDEsXG4gKiAgZGVjaW1hbFNlcGFyYXRvcjogXCIsXCJcbiAqIH1cbiAqXG4gKiBjb25zdCBuZXdTY2FsZSA9IHtcbiAqICBuYW1lOiBcIlBvcmNlbnRhamUgKDEtMTAwJSwgYXByb2JhY2nDs24gNjAlLCBub3RhIDcwKVwiLFxuICogIGtleW5hbWU6IFwiUG9yY2VudGFqZV8xLTEwMF82MFwiLFxuICogIG1pbjogMSxcbiAqICBtYXg6IDEwMCxcbiAqICBwYXNzaW5nR3JhZGU6IDcwLFxuICogIHBhc3NpbmdQZXJjZW50YWdlOiA2MCxcbiAqICByb3VuZFR5cGU6IFwicm91bmRcIixcbiAqICBwcmVwZW5kOiBcIlwiLFxuICogIGFwcGVuZDogXCIlXCIsXG4gKiAgZGVjaW1hbHM6IDAsXG4gKiAgZGVjaW1hbFNlcGFyYXRvcjogXCIsXCJcbiAqIH1cbiAqIGNvbnN0IGNvbnZlcnRlZCA9IGNvbnZlcnRUb1NjYWxlKHsgc2NhbGUsIGdyYWRlOiA0LjYgfSwgbmV3U2NhbGUpXG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0VG9TY2FsZSA9IChcbiAgY29udmVydDogQ29udmVydEF0dHJpYnV0ZXMsXG4gIHNjYWxlOiBTY2FsZUF0dHJpYnV0ZXMsXG4pOiBudW1iZXIgPT4ge1xuICAvLyBSZWRvbmRlYW1vcyBub3RhIGFjdHVhbC5cbiAgY29uc3QgZ3JhZGUgPSBncmFkZVJvdW5kKGNvbnZlcnQuc2NhbGUsIGNvbnZlcnQuZ3JhZGUpXG5cbiAgLy8gY2FsY3VsYW1vcyBhbWJvcyByYW5nb3MgKGFudGlndW8geSBudWV2bylcbiAgY29uc3Qgb2xkUmFuZ2UgPSBjb252ZXJ0LnNjYWxlLm1heCAtIGNvbnZlcnQuc2NhbGUubWluXG4gIGNvbnN0IG5ld1JhbmdlID0gc2NhbGUubWF4IC0gc2NhbGUubWluXG5cbiAgLy8gdHJhbnNmb3JtYW1vcyBsYSBub3RhXG4gIGNvbnN0IG5ld0dyYWRlID1cbiAgICAoKGdyYWRlIC0gY29udmVydC5zY2FsZS5taW4pICogbmV3UmFuZ2UpIC8gb2xkUmFuZ2UgKyBzY2FsZS5taW5cblxuICAvLyByZWRvbmRlYW1vc1xuICByZXR1cm4gZ3JhZGVSb3VuZChzY2FsZSwgbmV3R3JhZGUpXG59XG4iXX0=