diff --git a/package.json b/package.json
index b801d8a9..8d306635 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "betterseqtaplus",
- "version": "3.4.4",
+ "version": "3.4.5",
"type": "module",
"description": "Enhance SEQTA Learn's usability and aesthetics! A fork of BetterSEQTA to continue development add add heaps more features!",
"browserslist": "> 0.5%, last 2 versions, not dead",
diff --git a/src/SEQTA.ts b/src/SEQTA.ts
index 7c7c11b9..a1ccd98d 100644
--- a/src/SEQTA.ts
+++ b/src/SEQTA.ts
@@ -163,7 +163,9 @@ export function OpenWhatsNewPopup() {
let text = stringToHTML(
/* html */ `
-
+
3.4.5 - Everything Subject averages related
+
Fixed subject averages not showing up with non-percent grades
+
Added Toggle for Letter/Percent Grades
3.4.4 - Bug Fixes and Improvements
Added vertical zoom to the timetable
Fixed theme importing failing when images were included
@@ -2919,7 +2921,13 @@ async function handleAssessments(node: Element): Promise
{
function parseGrade(gradeText: string): number {
// Remove any whitespace
const trimmedGrade = gradeText.trim().toUpperCase();
-
+ // Check if it is a non-percent grade
+ if (trimmedGrade.includes('/')) {
+ const grade = trimmedGrade.split("/");
+ var a = grade[1] as unknown as number
+ var b = grade[0] as unknown as number
+ return ((b/a) * 100);
+ }
// Check if it's a percentage
if (trimmedGrade.includes('%')) {
return parseFloat(trimmedGrade.replace('%', '')) || 0;
@@ -2927,7 +2935,7 @@ async function handleAssessments(node: Element): Promise {
// Check if it's a letter grade
if (letterGradeMap.hasOwnProperty(trimmedGrade)) {
- return letterGradeMap[trimmedGrade];
+ return letterGradeMap[trimmedGrade];
}
return 0;
@@ -2953,15 +2961,50 @@ async function handleAssessments(node: Element): Promise {
// Function to add the average assessment item
function addAverageAssessment() {
- const average = calculateAverageGrade();
- if (average === 0) return;
+ const numaverage = calculateAverageGrade();
+ if (numaverage === 0) return;
// Remove existing average section if it exists
const existingAverage = document.querySelector('.AssessmentItem__AssessmentItem___2EZ95:first-child');
if (existingAverage?.querySelector('.AssessmentItem__title___2bELn')?.textContent === 'Subject Average') {
existingAverage.remove();
}
-
+ const preaverage = numaverage.toFixed(0) as unknown as number
+ const prepaverage = Math.ceil(preaverage / 5) * 5;
+ console.info(prepaverage)
+ const NumberGradeMap: Record = {
+ 100: "A+",
+ 95: "A",
+ 90: "A-",
+ 85: "B+",
+ 80: "B",
+ 75: "B-",
+ 70: "C+",
+ 65: "C",
+ 60: "C-",
+ 55: "D+",
+ 50: "D",
+ 45: "D-",
+ 40: "E+",
+ 35: "E",
+ 30: "E-",
+ 0: "F"
+ };
+ var letteraverage = "N/A"
+ const check = Object.prototype.hasOwnProperty.call(NumberGradeMap, prepaverage);
+ if (check) {
+ console.debug("[BetterSEQTA+ Debugger] Match found")
+ letteraverage = NumberGradeMap[prepaverage];
+ } else {
+ console.debug("[BetterSEQTA+ Debugger] No match found")
+ letteraverage = "N/A"
+ }
+ var average = "N/A"
+ if (settingsState.lettergrade) {
+ average = letteraverage
+ } else {
+ average = `${numaverage.toFixed(2)}%`
+ }
const averageElement = stringToHTML(/* html */`
@@ -2972,8 +3015,8 @@ async function handleAssessments(node: Element): Promise {
-
-
${average.toFixed(2)}%
+
@@ -2988,4 +3031,4 @@ async function handleAssessments(node: Element): Promise {
// Add the average assessment item
addAverageAssessment();
-}
\ No newline at end of file
+}
diff --git a/src/interface/pages/settings/general.svelte b/src/interface/pages/settings/general.svelte
index 0e046078..32c5ead7 100644
--- a/src/interface/pages/settings/general.svelte
+++ b/src/interface/pages/settings/general.svelte
@@ -28,6 +28,7 @@
{#each [
+
{
title: "Transparency Effects",
description: "Enables transparency effects on certain elements such as blur. (May impact battery life)",
@@ -107,6 +108,16 @@
onChange: (isOn: boolean) => settingsState.assessmentsAverage = isOn
}
},
+ {
+ title: "Letter Grade Averages",
+ description: "Shows the letter grade instead of the percentage in subject averages.",
+ id: 8,
+ Component: Switch,
+ props: {
+ state: $settingsState.lettergrade,
+ onChange: (isOn: boolean) => settingsState.lettergrade = isOn
+ }
+ },
{
title: "Lesson Alerts",
description: "Sends a native browser notification ~5 minutes prior to lessons.",
@@ -183,4 +194,4 @@
{/if}
-
\ No newline at end of file
+