I added + and - to grades. You can place custom values in the script in the "else if." After you install, you also have to add your custom canvas grades link in the @match rules. Thank you to SaturnKai for the original code. // ==UserScript== // @name Canvas Grade Calculator // @namespace 0612 // @version 1.6 // @description Calculates the Letter Grade for Canvas // @author SaturnKai // @match http*://*.instructure.com/* // @match http*://*.canvas.*.edu/* // @run-at document-end // @grant none // ==/UserScript==
I added + and - to grades. You can place custom values in the script in the "else if." After you install, you also have to add your custom canvas grades link in the @match rules. Thank you to SaturnKai for the original code.
// ==UserScript==
// @name Canvas Grade Calculator
// @namespace 0612
// @version 1.6
// @description Calculates the Letter Grade for Canvas
// @author SaturnKai
// @match http*://*.instructure.com/*
// @match http*://*.canvas.*.edu/*
// @run-at document-end
// @grant none
// ==/UserScript==
function getLetterGrade(percent) {
let grade = percent.match(/\d+\.?\d+/)?.[0];
if (!grade || percent.includes("(")) {
return "";
}
if (grade > 100) {
return " (A+)";
} else if (grade >=93 && grade <=100) {
return " (A)";
} else if (grade >=90 && grade <=92.99) {
return " (A-)";
} else if (grade >=87 && grade <=89.99) {
return " (B+)";
} else if (grade >=83 && grade<=86.99) {
return " (B)"
} else if (grade >=80 && grade <=82.99) {
return " (B-)"
} else if (grade >=77 && grade <=79.99) {
return " (C+)"
} else if (grade >=73 && grade <=76.99) {
return " (C)"
} else if (grade >=70 && grade <=72.99) {
return " (C-)"
} else if (grade >= 60) {
return " (D)";
} else if (grade < 60) {
return " (F)";
} else {
return "";
}
}
function addLetterGrade(element) {
element.innerText += getLetterGrade(element.innerText);
}
function main() {
document.querySelectorAll("td.percent").forEach(addLetterGrade);
document.querySelectorAll(".final_grade .grade").forEach(addLetterGrade);
}
if (document.readyState === "complete" || document.readyState === "interactive") {
main();
} else {
window.addEventListener("DOMContentLoaded", () => {
main();
});
}