UNPKG

@eclass/grade-scales

Version:

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

54 lines 6.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getGrade = exports.calcGrade = void 0; const grades_1 = require("./grades"); /** * Hace el cálculo de la nota en base al puntaje obtenido y el total con la Escala de notas * * @example const grade = calcGrade(scale, total, obtained) */ const calcGrade = (scale, total, obtained) => { let grade = 0; if (scale.passingPercentage > 0) { const passingPercentage = scale.passingPercentage / 100; const approveMinPoints = total * passingPercentage; let weight; let calcWeight; if (obtained > approveMinPoints) { weight = (scale.max - scale.passingGrade) / (total - approveMinPoints); calcWeight = scale.max - weight * total; } else { weight = (scale.passingGrade - scale.min) / approveMinPoints; calcWeight = scale.passingGrade - weight * total * passingPercentage; } const prevGrade = weight * obtained + calcWeight; grade = (100 * prevGrade) / 100; } else { grade = (scale.max * obtained) / total; } return grade; }; exports.calcGrade = calcGrade; /** * Recibe los puntajes y calcula la nota. * - Si el puntaje obtenido es >= al total entonces asigna la nota máxima de la escala. * - Si el puntaje obtenido es <= 0 entonces asigna la nota minima de la escala. * - Si está en el rango > 0 y < total entonces calcula la nota considerando la ponderación. * * @example const grade = getGrade(scale, 10, 5) */ const getGrade = (scale, total, obtained) => { if (obtained >= total) { return scale.max; } else if (obtained <= 0) { return scale.min; } else { return (0, grades_1.gradeRound)(scale, (0, exports.calcGrade)(scale, total, obtained)); } }; exports.getGrade = getGrade; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0R3JhZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvZ2V0R3JhZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXFDO0FBR3JDOzs7O0dBSUc7QUFDSSxNQUFNLFNBQVMsR0FBRyxDQUN2QixLQUFzQixFQUN0QixLQUFhLEVBQ2IsUUFBZ0IsRUFDUixFQUFFO0lBQ1YsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFBO0lBQ2IsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxFQUFFO1FBQy9CLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQTtRQUN2RCxNQUFNLGdCQUFnQixHQUFHLEtBQUssR0FBRyxpQkFBaUIsQ0FBQTtRQUVsRCxJQUFJLE1BQWMsQ0FBQTtRQUNsQixJQUFJLFVBQWtCLENBQUE7UUFFdEIsSUFBSSxRQUFRLEdBQUcsZ0JBQWdCLEVBQUU7WUFDL0IsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQTtZQUN0RSxVQUFVLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFBO1NBQ3hDO2FBQU07WUFDTCxNQUFNLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQTtZQUM1RCxVQUFVLEdBQUcsS0FBSyxDQUFDLFlBQVksR0FBRyxNQUFNLEdBQUcsS0FBSyxHQUFHLGlCQUFpQixDQUFBO1NBQ3JFO1FBQ0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxHQUFHLFFBQVEsR0FBRyxVQUFVLENBQUE7UUFDaEQsS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQTtLQUNoQztTQUFNO1FBQ0wsS0FBSyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUE7S0FDdkM7SUFDRCxPQUFPLEtBQUssQ0FBQTtBQUNkLENBQUMsQ0FBQTtBQTFCWSxRQUFBLFNBQVMsYUEwQnJCO0FBRUQ7Ozs7Ozs7R0FPRztBQUNJLE1BQU0sUUFBUSxHQUFHLENBQ3RCLEtBQXNCLEVBQ3RCLEtBQWEsRUFDYixRQUFnQixFQUNSLEVBQUU7SUFDVixJQUFJLFFBQVEsSUFBSSxLQUFLLEVBQUU7UUFDckIsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFBO0tBQ2pCO1NBQU0sSUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQTtLQUNqQjtTQUFNO1FBQ0wsT0FBTyxJQUFBLG1CQUFVLEVBQUMsS0FBSyxFQUFFLElBQUEsaUJBQVMsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUE7S0FDNUQ7QUFDSCxDQUFDLENBQUE7QUFaWSxRQUFBLFFBQVEsWUFZcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBncmFkZVJvdW5kIH0gZnJvbSAnLi9ncmFkZXMnXG5pbXBvcnQgeyBTY2FsZUF0dHJpYnV0ZXMgfSBmcm9tICcuL3R5cGVzJ1xuXG4vKipcbiAqIEhhY2UgZWwgY8OhbGN1bG8gZGUgbGEgbm90YSBlbiBiYXNlIGFsIHB1bnRhamUgb2J0ZW5pZG8geSBlbCB0b3RhbCBjb24gbGEgRXNjYWxhIGRlIG5vdGFzXG4gKlxuICogQGV4YW1wbGUgY29uc3QgZ3JhZGUgPSBjYWxjR3JhZGUoc2NhbGUsIHRvdGFsLCBvYnRhaW5lZClcbiAqL1xuZXhwb3J0IGNvbnN0IGNhbGNHcmFkZSA9IChcbiAgc2NhbGU6IFNjYWxlQXR0cmlidXRlcyxcbiAgdG90YWw6IG51bWJlcixcbiAgb2J0YWluZWQ6IG51bWJlcixcbik6IG51bWJlciA9PiB7XG4gIGxldCBncmFkZSA9IDBcbiAgaWYgKHNjYWxlLnBhc3NpbmdQZXJjZW50YWdlID4gMCkge1xuICAgIGNvbnN0IHBhc3NpbmdQZXJjZW50YWdlID0gc2NhbGUucGFzc2luZ1BlcmNlbnRhZ2UgLyAxMDBcbiAgICBjb25zdCBhcHByb3ZlTWluUG9pbnRzID0gdG90YWwgKiBwYXNzaW5nUGVyY2VudGFnZVxuXG4gICAgbGV0IHdlaWdodDogbnVtYmVyXG4gICAgbGV0IGNhbGNXZWlnaHQ6IG51bWJlclxuXG4gICAgaWYgKG9idGFpbmVkID4gYXBwcm92ZU1pblBvaW50cykge1xuICAgICAgd2VpZ2h0ID0gKHNjYWxlLm1heCAtIHNjYWxlLnBhc3NpbmdHcmFkZSkgLyAodG90YWwgLSBhcHByb3ZlTWluUG9pbnRzKVxuICAgICAgY2FsY1dlaWdodCA9IHNjYWxlLm1heCAtIHdlaWdodCAqIHRvdGFsXG4gICAgfSBlbHNlIHtcbiAgICAgIHdlaWdodCA9IChzY2FsZS5wYXNzaW5nR3JhZGUgLSBzY2FsZS5taW4pIC8gYXBwcm92ZU1pblBvaW50c1xuICAgICAgY2FsY1dlaWdodCA9IHNjYWxlLnBhc3NpbmdHcmFkZSAtIHdlaWdodCAqIHRvdGFsICogcGFzc2luZ1BlcmNlbnRhZ2VcbiAgICB9XG4gICAgY29uc3QgcHJldkdyYWRlID0gd2VpZ2h0ICogb2J0YWluZWQgKyBjYWxjV2VpZ2h0XG4gICAgZ3JhZGUgPSAoMTAwICogcHJldkdyYWRlKSAvIDEwMFxuICB9IGVsc2Uge1xuICAgIGdyYWRlID0gKHNjYWxlLm1heCAqIG9idGFpbmVkKSAvIHRvdGFsXG4gIH1cbiAgcmV0dXJuIGdyYWRlXG59XG5cbi8qKlxuICogUmVjaWJlIGxvcyBwdW50YWplcyB5IGNhbGN1bGEgbGEgbm90YS5cbiAqIC0gU2kgZWwgcHVudGFqZSBvYnRlbmlkbyBlcyA+PSBhbCB0b3RhbCBlbnRvbmNlcyBhc2lnbmEgbGEgbm90YSBtw6F4aW1hIGRlIGxhIGVzY2FsYS5cbiAqIC0gU2kgZWwgcHVudGFqZSBvYnRlbmlkbyBlcyA8PSAwIGVudG9uY2VzIGFzaWduYSBsYSBub3RhIG1pbmltYSBkZSBsYSBlc2NhbGEuXG4gKiAtIFNpIGVzdMOhIGVuIGVsIHJhbmdvID4gMCB5IDwgdG90YWwgZW50b25jZXMgY2FsY3VsYSBsYSBub3RhIGNvbnNpZGVyYW5kbyBsYSBwb25kZXJhY2nDs24uXG4gKlxuICogQGV4YW1wbGUgY29uc3QgZ3JhZGUgPSBnZXRHcmFkZShzY2FsZSwgMTAsIDUpXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRHcmFkZSA9IChcbiAgc2NhbGU6IFNjYWxlQXR0cmlidXRlcyxcbiAgdG90YWw6IG51bWJlcixcbiAgb2J0YWluZWQ6IG51bWJlcixcbik6IG51bWJlciA9PiB7XG4gIGlmIChvYnRhaW5lZCA+PSB0b3RhbCkge1xuICAgIHJldHVybiBzY2FsZS5tYXhcbiAgfSBlbHNlIGlmIChvYnRhaW5lZCA8PSAwKSB7XG4gICAgcmV0dXJuIHNjYWxlLm1pblxuICB9IGVsc2Uge1xuICAgIHJldHVybiBncmFkZVJvdW5kKHNjYWxlLCBjYWxjR3JhZGUoc2NhbGUsIHRvdGFsLCBvYnRhaW5lZCkpXG4gIH1cbn1cbiJdfQ==