my-uol / my-cs-degree

A collection of tools to help students of Computer Science at University Of London (UoL).
https://my-cs-degree.azurewebsites.net/
GNU General Public License v3.0
2 stars 0 forks source link

Grade Calculator - Level 4 #1

Open mclmb opened 8 months ago

mclmb commented 8 months ago

Grade Calculator - Implement Level 4 modules:

Function to work on:

function calculateGrades(grades, weights) {
    grades = grades.map(grade => grade ?? 0);
    weights = weights.map(weight => weight ?? 1);

    const [gradeOne, gradeTwo, gradeThree, gradeFour, gradeFive, gradeSix, gradeSeven, gradeEight] = grades;
    const [weightOne, weightTwo, weightThree, weightFour, weightFive, weightSix, weightSeven, weightEight] = weights;

    let averageMidterm = ((gradeOne * weightOne) + (gradeTwo * weightTwo) + (gradeThree * weightThree) + (gradeFour * weightFour) + (gradeFive * weightFive) + (gradeSix * weightSix) + (gradeSeven * weightSeven) + (gradeEight * weightEight));
    let averageFinal = gradeSeven; // TODO: Refactor this ongod
    let overallGrade = ((averageMidterm + averageFinal) / 2);

    document.getElementById("averageMidterm").innerHTML = averageMidterm.toFixed(2);
    document.getElementById("averageFinal").innerHTML = averageFinal.toFixed(2);
    document.getElementById("overallGrade").innerHTML = overallGrade.toFixed(2);

    function setGradeClass(elementId, grade) {
        let className = 'm-auto ';
        if (grade >= 40) {
            className += 'table-success';
        } else if (grade >= 35) {
            className += 'table-warning';
        } else {
            className += 'table-danger';
        }
        document.getElementById(elementId).className = className;
    }

    setGradeClass("overallGrade", overallGrade);
    setGradeClass("averageFinal", averageFinal);
    setGradeClass("averageMidterm", averageMidterm);
}

function triggerGradeCalculation() {
    let gradeIds = ["gradeOne", "gradeTwo", "gradeThree", "gradeFour", "gradeFive", "gradeSix", "gradeSeven", "gradeEight"];
    let weightIds = ["weightOne", "weightTwo", "weightThree", "weightFour", "weightFive", "weightSix", "weightSeven", "weightEight"];

    let grades = gradeIds.map(id => {
        let element = document.getElementById(id);
        return element ? parseInt(element.value) : 0;
    });

    let weights = weightIds.map(id => {
        let element = document.getElementById(id);
        return element ? parseFloat(element.innerHTML) : 0;
    });

    calculateGrades(grades, weights);
}
mclmb commented 8 months ago

Last commit: https://github.com/my-uol/my-cs-degree/commit/40b4fd3bdea061e67f3b4d1b0961ce2a620b6faf

mclmb commented 8 months ago