From c3c52524b66f6b59e6443f619d2bca7ba2091f27 Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Thu, 11 Mar 2021 01:46:57 -0800 Subject: [PATCH 1/3] ensure scripts load in order --- js/all.js | 7 +++++-- js/course.js | 2 ++ js/courses.js | 2 ++ js/grades.js | 2 +- js/home.js | 2 ++ js/preload.js | 3 ++- 6 files changed, 14 insertions(+), 4 deletions(-) diff --git a/js/all.js b/js/all.js index 3e497ff9..d87df2cf 100644 --- a/js/all.js +++ b/js/all.js @@ -1,4 +1,4 @@ -while (!window.splusPreload) { } +while (!window.splusLoaded && !window.splusLoaded.has("preload")) { } // Inform user about theme { @@ -1256,4 +1256,7 @@ function indicateSubmittedAssignments() { } setTimeout(indicateSubmitted, 1000); -} \ No newline at end of file +} + +window.splusLoaded.add("all"); +Logger.debug("Finished loading all.js"); \ No newline at end of file diff --git a/js/course.js b/js/course.js index 92193162..4184b1b7 100644 --- a/js/course.js +++ b/js/course.js @@ -1,3 +1,5 @@ +while (!window.splusLoaded && !window.splusLoaded.has("all")) { } + let courseIdNumber; let courseSettingsCourseName; (function () { diff --git a/js/courses.js b/js/courses.js index 64356432..8ce620a7 100644 --- a/js/courses.js +++ b/js/courses.js @@ -1,3 +1,5 @@ +while (!window.splusLoaded && !window.splusLoaded.has("all")) { } + for (let course of document.querySelectorAll("li.course-item.list-item")) { let parent = course.parentNode; let wrapper = document.createElement("div"); diff --git a/js/grades.js b/js/grades.js index eb7680da..aec4b9ca 100644 --- a/js/grades.js +++ b/js/grades.js @@ -1,4 +1,4 @@ -while (!window.splusPreload) { } +while (!window.splusLoaded && !window.splusLoaded.has("preload")) { } const timeout = ms => new Promise(res => setTimeout(res, ms)); const BUG_REPORT_FORM_LINK = "https://docs.google.com/forms/d/e/1FAIpQLScF1_MZofOWT9pkWp3EfKSvzCPpyevYtqbAucp1K5WKGlckiA/viewform?entry.118199430="; diff --git a/js/home.js b/js/home.js index ce78e903..239a4973 100644 --- a/js/home.js +++ b/js/home.js @@ -1,3 +1,5 @@ +while (!window.splusLoaded && !window.splusLoaded.has("all")) { } + /** @typedef {{id:number,title:string,message:string,timestamp?:Date,icon?:string}} Broadcast */ let homeFeedContainer = document.getElementById("home-feed-container"); diff --git a/js/preload.js b/js/preload.js index 36096c62..725f8310 100644 --- a/js/preload.js +++ b/js/preload.js @@ -1151,4 +1151,5 @@ new Setting( element => element.value ); -window.splusPreload = true; \ No newline at end of file +window.splusLoaded = new Set(["preload"]); +Logger.debug("Finished loading preload.js"); \ No newline at end of file From 1796e5ee0b46dba44be48b9ca89a79f655edd98b Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Sat, 13 Mar 2021 19:34:43 -0800 Subject: [PATCH 2/3] fixed issues with calculations in what-if grades --- js/grades.js | 31 ++++++++++++++++--------------- js/version-specific.js | 7 +++++++ 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/js/grades.js b/js/grades.js index aec4b9ca..f12914fe 100644 --- a/js/grades.js +++ b/js/grades.js @@ -669,7 +669,7 @@ var fetchQueue = []; let total = 0; let totalPercentWeight = 0; let catWeight = 0; // 0 to 1 - for (let category of perRow.parentElement.getElementsByClassName("category-row")) { + for (let category of perRow.parentElement.querySelectorAll(`.category-row[data-parent-id="${perRow.dataset.id}]"`)) { let weightPercentElement = category.getElementsByClassName("percentage-contrib")[0]; if (!weightPercentElement) { continue; @@ -1086,7 +1086,7 @@ var fetchQueue = []; throw { listSearchErr: err, firstTryError: firstTryError }; } }; - fetchQueue.push(f); + fetchQueue.push([f, 0]); } // td-content-wrapper @@ -1234,7 +1234,7 @@ var fetchQueue = []; } else { let total = 0; let totalPercentWeight = 0; - for (let category of perRow.parentElement.getElementsByClassName("category-row")) { + for (let category of perRow.parentElement.querySelectorAll(`.category-row[data-parent-id="${perRow.dataset.id}"]`)) { let weightPercentElement = category.getElementsByClassName("percentage-contrib")[0]; if (!weightPercentElement) { continue; @@ -1242,6 +1242,7 @@ var fetchQueue = []; let weightPercent = weightPercentElement.textContent; let col = category.getElementsByClassName("grade-column-right")[0]; let colMatch = col ? col.textContent.match(/(\d+\.?\d*)%/) : null; + Logger.debug("Category", category, weightPercent); if (colMatch) { let scorePercent = Number.parseFloat(colMatch[1]); if (!Number.isNaN(scorePercent)) { @@ -1560,26 +1561,26 @@ function createAddAssignmentElement(category) { return addAssignmentThing; } -function processNonenteredAssignments(sleep, attempts = 0) { - if (attempts > 3) { - // Remove the first element - fetchQueue.shift(); - attempts = 0; - Logger.warn("Maximum attempts reached; aborting"); - } +function processNonenteredAssignments() { if (fetchQueue.length > 0) { + let [func, attempts] = fetchQueue.shift() + sleep = attempts > 0 setTimeout(() => { - fetchQueue[0]().then(x => { - fetchQueue.splice(0, 1); + func().then(x => { processNonenteredAssignments(); }).catch(err => { Logger.warn("Caught error: ", err); Logger.log("Waiting 3 seconds to avoid rate limit"); - if ("status" in err && err.status === 403) { + if (err && err.firstTryError && err.firstTryError.status === 403) { attempts = 100; } - processNonenteredAssignments(true, attempts + 1); + if (attempts > 3) { + Logger.warn("Maximum attempts reached; aborting"); + } else { + fetchQueue.push([func, attempts + 1]) + } + processNonenteredAssignments(); }); }, sleep ? 3000 : 0); - } + } } diff --git a/js/version-specific.js b/js/version-specific.js index 7e8e1680..fcdeed4f 100644 --- a/js/version-specific.js +++ b/js/version-specific.js @@ -242,6 +242,13 @@ let migrationsTo = { new Date(2021, 0 /* January */, 16) ) ]); + + var modalExistsInterval = setInterval(function () { + if (document.readyState === "complete" && openModal && document.getElementById("choose-theme-modal") && !document.querySelector(".splus-modal-open")) { + clearInterval(modalExistsInterval); + openModal("choose-theme-modal"); + } + }, 50); }, "7.2": function (currentVersion, previousVersion) { saveBroadcasts([ From c8f1bd0b2b51c1b4639a22aec2ee5dd682941ea5 Mon Sep 17 00:00:00 2001 From: Aaron Opell Date: Sat, 13 Mar 2021 19:58:31 -0800 Subject: [PATCH 3/3] Bump version to 7.2.1 --- css/modern/all.css | 4 ++++ js/grades.js | 1 - manifest.json | 2 +- scss/modern/all.scss | 5 ++++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/css/modern/all.css b/css/modern/all.css index 6b8de7fd..734bc526 100644 --- a/css/modern/all.css +++ b/css/modern/all.css @@ -874,6 +874,10 @@ variable-intellisense { color: var(--grades) !important; } +[modern=true]:root .gradebook-course.hierarchical-grading-report .item-row .title-column .title { + color: var(--text) !important; +} + [modern=true]:root .grade-active-color, [modern=true]:root .awarded-grade span { color: var(--grades) !important; diff --git a/js/grades.js b/js/grades.js index f12914fe..5c59f2bf 100644 --- a/js/grades.js +++ b/js/grades.js @@ -1242,7 +1242,6 @@ var fetchQueue = []; let weightPercent = weightPercentElement.textContent; let col = category.getElementsByClassName("grade-column-right")[0]; let colMatch = col ? col.textContent.match(/(\d+\.?\d*)%/) : null; - Logger.debug("Category", category, weightPercent); if (colMatch) { let scorePercent = Number.parseFloat(colMatch[1]); if (!Number.isNaN(scorePercent)) { diff --git a/manifest.json b/manifest.json index fadbc984..1430cf49 100644 --- a/manifest.json +++ b/manifest.json @@ -9,7 +9,7 @@ "id": "schoology.plus@aopell.me" } }, - "version": "7.2", + "version": "7.2.1", "icons": { "128": "imgs/icon@128.png", "64": "imgs/icon@64.png", diff --git a/scss/modern/all.scss b/scss/modern/all.scss index 971313e2..18492e3d 100644 --- a/scss/modern/all.scss +++ b/scss/modern/all.scss @@ -926,12 +926,15 @@ variable-intellisense { // Grades Page .gradebook-course.hierarchical-grading-report { - .period-row .grade-column, .category-row .grade-column, .item-row .grade-column { color: var(--grades) !important; } + + .item-row .title-column .title { + color: var(--text) !important; + } } .grade-active-color,