mirror of
https://github.com/BetterSEQTA/BetterSEQTA-Plus.git
synced 2026-06-06 03:34:40 +00:00
feat: add parsing for letter grades #191
This commit is contained in:
+41
-2
@@ -2737,6 +2737,44 @@ async function handleAssessments(node: Element): Promise<void> {
|
|||||||
const assessmentsWrapper = await waitForElm('#main > .assessmentsWrapper .assessments .AssessmentItem__AssessmentItem___2EZ95', true, 50);
|
const assessmentsWrapper = await waitForElm('#main > .assessmentsWrapper .assessments .AssessmentItem__AssessmentItem___2EZ95', true, 50);
|
||||||
if (!assessmentsWrapper) return;
|
if (!assessmentsWrapper) return;
|
||||||
|
|
||||||
|
// Grade conversion map for letter grades
|
||||||
|
const letterGradeMap: Record<string, number> = {
|
||||||
|
'A+': 100,
|
||||||
|
'A': 95,
|
||||||
|
'A-': 90,
|
||||||
|
'B+': 85,
|
||||||
|
'B': 80,
|
||||||
|
'B-': 75,
|
||||||
|
'C+': 70,
|
||||||
|
'C': 65,
|
||||||
|
'C-': 60,
|
||||||
|
'D+': 55,
|
||||||
|
'D': 50,
|
||||||
|
'D-': 45,
|
||||||
|
'E+': 40,
|
||||||
|
'E': 35,
|
||||||
|
'E-': 30,
|
||||||
|
'F': 0
|
||||||
|
};
|
||||||
|
|
||||||
|
// Function to parse grade text into a number
|
||||||
|
function parseGrade(gradeText: string): number {
|
||||||
|
// Remove any whitespace
|
||||||
|
const trimmedGrade = gradeText.trim().toUpperCase();
|
||||||
|
|
||||||
|
// Check if it's a percentage
|
||||||
|
if (trimmedGrade.includes('%')) {
|
||||||
|
return parseFloat(trimmedGrade.replace('%', '')) || 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if it's a letter grade
|
||||||
|
if (letterGradeMap.hasOwnProperty(trimmedGrade)) {
|
||||||
|
return letterGradeMap[trimmedGrade];
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Function to calculate average of grades
|
// Function to calculate average of grades
|
||||||
function calculateAverageGrade(): number {
|
function calculateAverageGrade(): number {
|
||||||
const gradeElements = document.querySelectorAll('.Thermoscore__text___1NdvB');
|
const gradeElements = document.querySelectorAll('.Thermoscore__text___1NdvB');
|
||||||
@@ -2744,8 +2782,9 @@ async function handleAssessments(node: Element): Promise<void> {
|
|||||||
let count = 0;
|
let count = 0;
|
||||||
|
|
||||||
gradeElements.forEach(element => {
|
gradeElements.forEach(element => {
|
||||||
const grade = parseFloat(element.textContent?.replace('%', '') || '0');
|
const gradeText = element.textContent || '';
|
||||||
if (!isNaN(grade)) {
|
const grade = parseGrade(gradeText);
|
||||||
|
if (grade > 0) {
|
||||||
total += grade;
|
total += grade;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user