[+] Create method to calculate GPA

This commit is contained in:
Hykilpikonna
2019-09-07 16:03:57 -04:00
parent d3072ccaf6
commit 3cb74083a7
+47
View File
@@ -1,6 +1,8 @@
/**
* This is an utility class to calculate GPA.
*/
import {Course} from '@/components/app/app';
export class GPAUtils
{
// [[Min score, Letter grade, Base GPA], ...]
@@ -23,4 +25,49 @@ export class GPAUtils
public static MIN = 0;
public static LETTER = 1;
public static GPA = 2;
/**
* Calculate GPA for a list of couses
*
* @param coursesOriginal List of courses
*/
public static gpa(coursesOriginal: Course[]): number
{
// Clone array
let courses: Course[] = [];
// Remove all courses that does not have a grade
coursesOriginal.forEach(course =>
{
if (course.numericGrade != null)
{
courses.push(course);
}
});
// If no course have grade, return -1
if (courses.length == 0)
{
return -1;
}
// Count total GPA
let totalGPA = 0;
courses.forEach(course =>
{
// Find the GPA for this course. TODO: Remove course that does not have level
this.SCALE.forEach(scale =>
{
// Letter grades are the same
if (scale[this.LETTER] == course.letterGrade)
{
totalGPA += <number> scale[this.GPA] + course.scaleUp;
return;
}
})
});
// Get average GPA
return totalGPA / courses.length;
}
}