mirror of
https://github.com/GuySandler/CanvasRefined.git
synced 2026-06-22 10:19:53 +02:00
some more css fixing
This commit is contained in:
parent
2bc9f92edb
commit
a0043f37f1
@ -60,7 +60,7 @@ Actually Better Canvas adds more with more to come!
|
|||||||
- Custom Background (by URL, theme compatible)
|
- Custom Background (by URL, theme compatible)
|
||||||
- Popup UI revamp
|
- Popup UI revamp
|
||||||
- NEW Better todo list
|
- NEW Better todo list
|
||||||
- better sidebar (beta)
|
- better sidebar
|
||||||
|
|
||||||
## Planned Features (by priority)
|
## Planned Features (by priority)
|
||||||
- widgets (music, timer)
|
- widgets (music, timer)
|
||||||
@ -89,6 +89,7 @@ Actually Better Canvas adds more with more to come!
|
|||||||
- flashcards
|
- flashcards
|
||||||
- goals
|
- goals
|
||||||
- Scheduled Reminder Popups
|
- Scheduled Reminder Popups
|
||||||
|
- simplified UI
|
||||||
|
|
||||||
## Community suggestions (maybe will be done at some point)
|
## Community suggestions (maybe will be done at some point)
|
||||||
- when opening assignments it will show you "if you get a 0 on this your grade will be _"
|
- when opening assignments it will show you "if you get a 0 on this your grade will be _"
|
||||||
|
|||||||
@ -16,6 +16,95 @@ function isGradesPage() {
|
|||||||
return /^\/courses\/\d+\/grades(?:\/|$)/.test(current_page);
|
return /^\/courses\/\d+\/grades(?:\/|$)/.test(current_page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSubmissionAssignmentLink() {
|
||||||
|
const match = current_page.match(/^\/courses\/(\d+)\/assignments\/(\d+)\/submissions\/(\d+)(?:\/|$)/);
|
||||||
|
if (!match) return null;
|
||||||
|
return `${domain}/courses/${match[1]}/assignments/${match[2]}/`;
|
||||||
|
}
|
||||||
|
|
||||||
|
let submissionPageButtonObserver = null;
|
||||||
|
|
||||||
|
function addSubmissionPageButton() {
|
||||||
|
const assignmentLink = getSubmissionAssignmentLink();
|
||||||
|
if (!assignmentLink) return;
|
||||||
|
const content = document.getElementById("content");
|
||||||
|
if (!content || content.querySelector("#bettercanvas-assignment-return")) return;
|
||||||
|
|
||||||
|
makeElement("a", content, {
|
||||||
|
id: "bettercanvas-assignment-return",
|
||||||
|
className: "bettercanvas-custom-btn",
|
||||||
|
href: assignmentLink,
|
||||||
|
textContent: "Back to Assignment",
|
||||||
|
style: "display:inline-flex;align-items:center;justify-content:center;align-self:flex-start;margin:0 0 12px 0;padding:10px 14px;text-decoration:none;font-weight:700;",
|
||||||
|
}, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
let sequenceFooterObserver = null;
|
||||||
|
|
||||||
|
function isAssignmentPage() {
|
||||||
|
return /^\/courses\/\d+\/assignments(?:\/\d+)?(?:\/|$)/.test(current_page);
|
||||||
|
}
|
||||||
|
|
||||||
|
function removeSequenceFooter() {
|
||||||
|
if (!isAssignmentPage()) return false;
|
||||||
|
const sequenceFooter = document.getElementById("sequence_footer");
|
||||||
|
if (!sequenceFooter) return false;
|
||||||
|
sequenceFooter.remove();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchSequenceFooter() {
|
||||||
|
if (!isAssignmentPage()) return;
|
||||||
|
if (removeSequenceFooter()) return;
|
||||||
|
if (sequenceFooterObserver) return;
|
||||||
|
|
||||||
|
sequenceFooterObserver = new MutationObserver(() => {
|
||||||
|
if (removeSequenceFooter() && sequenceFooterObserver) {
|
||||||
|
sequenceFooterObserver.disconnect();
|
||||||
|
sequenceFooterObserver = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
sequenceFooterObserver.observe(document.documentElement, { childList: true, subtree: true });
|
||||||
|
setTimeout(() => {
|
||||||
|
if (sequenceFooterObserver) {
|
||||||
|
sequenceFooterObserver.disconnect();
|
||||||
|
sequenceFooterObserver = null;
|
||||||
|
}
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ensureSubmissionPageButton() {
|
||||||
|
const assignmentLink = getSubmissionAssignmentLink();
|
||||||
|
if (!assignmentLink) return false;
|
||||||
|
const content = document.getElementById("content");
|
||||||
|
if (!content) return false;
|
||||||
|
if (content.querySelector("#bettercanvas-assignment-return")) return true;
|
||||||
|
addSubmissionPageButton();
|
||||||
|
return Boolean(content.querySelector("#bettercanvas-assignment-return"));
|
||||||
|
}
|
||||||
|
|
||||||
|
function watchSubmissionPageButton() {
|
||||||
|
if (!getSubmissionAssignmentLink()) return;
|
||||||
|
if (ensureSubmissionPageButton()) return;
|
||||||
|
if (submissionPageButtonObserver) return;
|
||||||
|
|
||||||
|
submissionPageButtonObserver = new MutationObserver(() => {
|
||||||
|
if (ensureSubmissionPageButton() && submissionPageButtonObserver) {
|
||||||
|
submissionPageButtonObserver.disconnect();
|
||||||
|
submissionPageButtonObserver = null;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
submissionPageButtonObserver.observe(document.documentElement, { childList: true, subtree: true });
|
||||||
|
setTimeout(() => {
|
||||||
|
if (submissionPageButtonObserver) {
|
||||||
|
submissionPageButtonObserver.disconnect();
|
||||||
|
submissionPageButtonObserver = null;
|
||||||
|
}
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
|
||||||
function getSidebarStateMode(mode = getSidebarLayoutMode()) {
|
function getSidebarStateMode(mode = getSidebarLayoutMode()) {
|
||||||
return mode === "course" ? "course" : "dashboard";
|
return mode === "course" ? "course" : "dashboard";
|
||||||
}
|
}
|
||||||
@ -306,6 +395,8 @@ function startExtension() {
|
|||||||
updateReminders();
|
updateReminders();
|
||||||
applyCustomBackground();
|
applyCustomBackground();
|
||||||
ensureBetterSidebar();
|
ensureBetterSidebar();
|
||||||
|
watchSequenceFooter();
|
||||||
|
watchSubmissionPageButton();
|
||||||
|
|
||||||
//getClassAverages();
|
//getClassAverages();
|
||||||
|
|
||||||
|
|||||||
30
js/popup.js
30
js/popup.js
@ -30,6 +30,7 @@ const syncedSubOptions = [
|
|||||||
"sidebar_scale",
|
"sidebar_scale",
|
||||||
];
|
];
|
||||||
const localSwitches = [];
|
const localSwitches = [];
|
||||||
|
const fontsDropdownStateKey = "fonts_dropdown_open";
|
||||||
|
|
||||||
//const apiurl = "http://localhost:3000";
|
//const apiurl = "http://localhost:3000";
|
||||||
const apiurl = "https://bettercanvas.diditupe.dev";
|
const apiurl = "https://bettercanvas.diditupe.dev";
|
||||||
@ -856,20 +857,29 @@ function setup() {
|
|||||||
sendFromPopup("updateBackground");
|
sendFromPopup("updateBackground");
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById("fontsDropdown").addEventListener("click", (e) => {
|
const applyFontsDropdownState = (isOpen) => {
|
||||||
const el = document.getElementById("quick-fonts");
|
const el = document.getElementById("quick-fonts");
|
||||||
const el2 = document.getElementsByClassName("custom-font")[0];
|
const el2 = document.getElementsByClassName("custom-font")[0];
|
||||||
const arrow = document.getElementById("fontsDropdownArrow");
|
const arrow = document.getElementById("fontsDropdownArrow");
|
||||||
if (el.style.display === "none") {
|
if (!el || !el2 || !arrow) return;
|
||||||
el.style.display = "flex";
|
el.style.display = isOpen ? "flex" : "none";
|
||||||
el2.style.display = "block";
|
el2.style.display = isOpen ? "block" : "none";
|
||||||
arrow.style.transform = "rotate(180deg)";
|
arrow.style.transform = isOpen ? "rotate(180deg)" : "rotate(0deg)";
|
||||||
|
};
|
||||||
|
|
||||||
} else {
|
chrome.storage.local.get([fontsDropdownStateKey], (storage) => {
|
||||||
el.style.display = "none";
|
const isOpen = storage[fontsDropdownStateKey] !== false;
|
||||||
el2.style.display = "none";
|
applyFontsDropdownState(isOpen);
|
||||||
arrow.style.transform = "rotate(0deg)";
|
});
|
||||||
}
|
|
||||||
|
document.getElementById("fontsDropdown").addEventListener("click", () => {
|
||||||
|
const el = document.getElementById("quick-fonts");
|
||||||
|
const el2 = document.getElementsByClassName("custom-font")[0];
|
||||||
|
if (!el || !el2) return;
|
||||||
|
const isCurrentlyOpen = getComputedStyle(el).display !== "none" && getComputedStyle(el2).display !== "none";
|
||||||
|
const nextOpen = !isCurrentlyOpen;
|
||||||
|
applyFontsDropdownState(nextOpen);
|
||||||
|
chrome.storage.local.set({ [fontsDropdownStateKey]: nextOpen });
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user