mirror of
https://github.com/GuySandler/CanvasRefined.git
synced 2026-06-21 01:49:54 +02:00
main course page done
This commit is contained in:
parent
62b7112954
commit
d972184909
144
js/content.js
144
js/content.js
@ -40,6 +40,7 @@ let options = {};
|
|||||||
let timeCheck = null;
|
let timeCheck = null;
|
||||||
let reminderCheck = null;
|
let reminderCheck = null;
|
||||||
let betterSidebarLoading = false;
|
let betterSidebarLoading = false;
|
||||||
|
let dashboardReadyTimer = null;
|
||||||
//let assignmentData = null;
|
//let assignmentData = null;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -284,6 +285,11 @@ function isDomainCanvasPage() {
|
|||||||
function startExtension() {
|
function startExtension() {
|
||||||
toggleDarkMode();
|
toggleDarkMode();
|
||||||
|
|
||||||
|
chrome.storage.sync.get(["better_sidebar", "sidebar_scale"], result => {
|
||||||
|
options = { ...options, ...result };
|
||||||
|
ensureBetterSidebar();
|
||||||
|
});
|
||||||
|
|
||||||
chrome.storage.sync.get(null, result => {
|
chrome.storage.sync.get(null, result => {
|
||||||
options = { ...options, ...result };
|
options = { ...options, ...result };
|
||||||
toggleAutoDarkMode();
|
toggleAutoDarkMode();
|
||||||
@ -299,7 +305,7 @@ function startExtension() {
|
|||||||
|
|
||||||
//getClassAverages();
|
//getClassAverages();
|
||||||
|
|
||||||
setTimeout(() => document.getElementById("footer").remove(), 800);
|
setTimeout(() => document.getElementById("footer")?.remove(), 800);
|
||||||
setTimeout(() => runDarkModeFixer(false), 800);
|
setTimeout(() => runDarkModeFixer(false), 800);
|
||||||
setTimeout(() => runDarkModeFixer(false), 4500);
|
setTimeout(() => runDarkModeFixer(false), 4500);
|
||||||
});
|
});
|
||||||
@ -453,6 +459,12 @@ function resetBetterSidebarLayout() {
|
|||||||
document.querySelector(".ic-Layout-wrapper")?.style.removeProperty("margin-left");
|
document.querySelector(".ic-Layout-wrapper")?.style.removeProperty("margin-left");
|
||||||
document.querySelector("#main")?.style.removeProperty("margin-left");
|
document.querySelector("#main")?.style.removeProperty("margin-left");
|
||||||
document.querySelector(".ic-app-nav-toggle-and-crumbs")?.style.removeProperty("display");
|
document.querySelector(".ic-app-nav-toggle-and-crumbs")?.style.removeProperty("display");
|
||||||
|
document.getElementById("not_right_side")?.style.removeProperty("display");
|
||||||
|
document.getElementById("not_right_side")?.style.removeProperty("flex");
|
||||||
|
document.getElementById("not_right_side")?.style.removeProperty("min-width");
|
||||||
|
document.getElementById("right-side-wrapper")?.style.removeProperty("flex");
|
||||||
|
document.getElementById("right-side-wrapper")?.style.removeProperty("width");
|
||||||
|
document.getElementById("right-side-wrapper")?.style.removeProperty("max-width");
|
||||||
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("display");
|
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("display");
|
||||||
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("align-items");
|
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("align-items");
|
||||||
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("min-width");
|
document.querySelector(".ic-Layout-contentWrapper")?.style.removeProperty("min-width");
|
||||||
@ -460,6 +472,7 @@ function resetBetterSidebarLayout() {
|
|||||||
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("min-width");
|
document.querySelector(".ic-Layout-contentMain")?.style.removeProperty("min-width");
|
||||||
document.getElementById("left-side")?.style.removeProperty("display");
|
document.getElementById("left-side")?.style.removeProperty("display");
|
||||||
document.getElementById("better-sidebar-container")?.remove();
|
document.getElementById("better-sidebar-container")?.remove();
|
||||||
|
clearBetterSidebarLayoutFix();
|
||||||
}
|
}
|
||||||
|
|
||||||
function ensureBetterSidebar() {
|
function ensureBetterSidebar() {
|
||||||
@ -580,6 +593,24 @@ function clearCustomBackground() {
|
|||||||
if (style) style.remove();
|
if (style) style.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function applyBetterSidebarLayoutFix() {
|
||||||
|
let style = document.querySelector("#bettercanvas-sidebar-layout-fix") || document.createElement("style");
|
||||||
|
style.id = "bettercanvas-sidebar-layout-fix";
|
||||||
|
style.textContent = `
|
||||||
|
#wrapper,
|
||||||
|
.ic-Layout-wrapper,
|
||||||
|
#main {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
document.documentElement.appendChild(style);
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearBetterSidebarLayoutFix() {
|
||||||
|
let style = document.querySelector("#bettercanvas-sidebar-layout-fix");
|
||||||
|
if (style) style.remove();
|
||||||
|
}
|
||||||
|
|
||||||
let insertTimer;
|
let insertTimer;
|
||||||
function resetTimer() {
|
function resetTimer() {
|
||||||
clearTimeout(insertTimer);
|
clearTimeout(insertTimer);
|
||||||
@ -597,42 +628,40 @@ function checkDashboardReady() {
|
|||||||
const callback = (mutationList) => {
|
const callback = (mutationList) => {
|
||||||
for (const mutation of mutationList) {
|
for (const mutation of mutationList) {
|
||||||
if (mutation.type !== "childList") continue;
|
if (mutation.type !== "childList") continue;
|
||||||
if (current_page == "/" || current_page == "") {
|
if (current_page == "/" || current_page == "" || current_page.match(/^\/courses\/(\d+)(?:\/|$)/)) {
|
||||||
console.log("I am dashboard");
|
if (dashboardReadyTimer) continue;
|
||||||
if (mutation.target == document.querySelector("#DashboardCard_Container")) {
|
dashboardReadyTimer = setTimeout(() => {
|
||||||
let cards = document.querySelectorAll('.ic-DashboardCard');
|
dashboardReadyTimer = null;
|
||||||
changeGradientCards();
|
|
||||||
setupCardAssignments();
|
const dashboardCards = document.querySelector("#DashboardCard_Container");
|
||||||
loadCardAssignments();
|
if (dashboardCards) {
|
||||||
customizeCards(cards);
|
let cards = document.querySelectorAll(".ic-DashboardCard");
|
||||||
insertGrades();
|
changeGradientCards();
|
||||||
loadDashboardNotes();
|
setupCardAssignments();
|
||||||
setupGPACalc();
|
loadCardAssignments();
|
||||||
showUpdateMsg();
|
customizeCards(cards);
|
||||||
} else if (mutation.target == document.querySelector('#right-side')) {
|
insertGrades();
|
||||||
if (!mutation.target.querySelector(".bettercanvas-todosidebar")) {
|
loadDashboardNotes();
|
||||||
setupBetterTodo();
|
setupGPACalc();
|
||||||
setupBetterSidebar();
|
showUpdateMsg();
|
||||||
// loadBetterTodo();
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else if (current_page.match(/^\/courses\/(\d+)(?:\/|$)/)) {
|
const rightSide = document.querySelector("#right-side");
|
||||||
if (mutation.target == document.querySelector('#right-side')) {
|
if (rightSide && !rightSide.querySelector(".bettercanvas-todosidebar")) {
|
||||||
if (!mutation.target.querySelector(".bettercanvas-todosidebar")) {
|
|
||||||
setupBetterTodo();
|
setupBetterTodo();
|
||||||
setupBetterSidebar(getSidebarLayoutMode());
|
setupBetterSidebar(getSidebarLayoutMode());
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
if (options.better_sidebar) {
|
||||||
|
ensureBetterSidebar();
|
||||||
|
}
|
||||||
|
}, 0);
|
||||||
} else {
|
} else {
|
||||||
console.log("I am outside", current_page);
|
console.log("I am outside", current_page);
|
||||||
if (options.better_sidebar) {
|
if (options.better_sidebar) {
|
||||||
ensureBetterSidebar();
|
ensureBetterSidebar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.better_sidebar) {
|
|
||||||
ensureBetterSidebar();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1490,39 +1519,64 @@ async function setupBetterSidebar(mode = getSidebarLayoutMode()) {
|
|||||||
betterSidebarLoading = true;
|
betterSidebarLoading = true;
|
||||||
try {
|
try {
|
||||||
const layoutMode = mode === "course" || mode === "dash" ? mode : getSidebarLayoutMode();
|
const layoutMode = mode === "course" || mode === "dash" ? mode : getSidebarLayoutMode();
|
||||||
|
const outerWrapper = document.getElementById("main");
|
||||||
|
outerWrapper.style.setProperty("display", "flex", "important");
|
||||||
|
// document.getElementById("not_right_side").style.setProperty("display", "none", "important");
|
||||||
|
const leftSide = document.getElementById("left-side")
|
||||||
|
leftSide.style.opacity = "1";
|
||||||
|
leftSide.style.position = "static";
|
||||||
const mainWrapper = document.querySelector(".ic-Layout-contentWrapper");
|
const mainWrapper = document.querySelector(".ic-Layout-contentWrapper");
|
||||||
if (!mainWrapper) return;
|
if (!mainWrapper) return;
|
||||||
let expanded = await getSidebarExpandedState(layoutMode);
|
const expandedPromise = getSidebarExpandedState(layoutMode);
|
||||||
|
applyBetterSidebarLayoutFix();
|
||||||
mainWrapper.style.display = "flex";
|
mainWrapper.style.display = "flex";
|
||||||
mainWrapper.style.alignItems = "stretch";
|
mainWrapper.style.alignItems = "stretch";
|
||||||
mainWrapper.style.minWidth = "0";
|
mainWrapper.style.minWidth = "0";
|
||||||
|
document.querySelector(".ic-Layout-contentMain")?.style.setProperty("flex", "1 1 auto");
|
||||||
|
document.querySelector(".ic-Layout-contentMain")?.style.setProperty("min-width", "0");
|
||||||
|
if (layoutMode === "course") {
|
||||||
|
const notRightSide = document.getElementById("not_right_side");
|
||||||
|
const rightSideWrapper = document.getElementById("right-side-wrapper");
|
||||||
|
leftSide.style.flex = "0 0 250px";
|
||||||
|
leftSide.style.width = "250px";
|
||||||
|
leftSide.style.maxWidth = "250px";
|
||||||
|
if (notRightSide) {
|
||||||
|
notRightSide.style.display = "flex";
|
||||||
|
notRightSide.style.flex = "1 1 auto";
|
||||||
|
notRightSide.style.minWidth = "0";
|
||||||
|
}
|
||||||
|
if (rightSideWrapper) {
|
||||||
|
rightSideWrapper.style.flex = "0 0 340px";
|
||||||
|
rightSideWrapper.style.width = "340px";
|
||||||
|
rightSideWrapper.style.maxWidth = "340px";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const sidebarParent = layoutMode === "course" && leftSide ? leftSide : mainWrapper;
|
||||||
|
if (layoutMode === "course" && leftSide) {
|
||||||
|
leftSide.style.display = "flex";
|
||||||
|
leftSide.style.flexDirection = "row";
|
||||||
|
leftSide.style.alignItems = "stretch";
|
||||||
|
leftSide.style.minWidth = "0";
|
||||||
|
leftSide.style.gap = "0";
|
||||||
|
}
|
||||||
|
document.querySelector(".ic-app-nav-toggle-and-crumbs")?.style.setProperty("display", "none");
|
||||||
|
if (layoutMode !== "course") {
|
||||||
|
document.getElementById("left-side")?.style.removeProperty("display");
|
||||||
|
}
|
||||||
if (layoutMode == "dash") {
|
if (layoutMode == "dash") {
|
||||||
document.getElementById("header")?.style.setProperty("display", "none");
|
document.getElementById("header")?.style.setProperty("display", "none");
|
||||||
document.querySelector(".ic-Layout-wrapper")?.style.setProperty("margin-left", "0");
|
|
||||||
}
|
}
|
||||||
else if (layoutMode == "course") {
|
else if (layoutMode == "course") {
|
||||||
document.getElementById("header")?.style.setProperty("display", "none");
|
document.getElementById("header")?.style.setProperty("display", "none");
|
||||||
document.querySelector(".ic-Layout-wrapper")?.style.setProperty("margin-left", "0");
|
|
||||||
document.querySelector("#main")?.style.setProperty("margin-left", "0");
|
|
||||||
const contentMain = document.querySelector(".ic-Layout-contentMain");
|
|
||||||
if (contentMain) {
|
|
||||||
contentMain.style.flex = "1";
|
|
||||||
contentMain.style.minWidth = "0";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let sidebarList = makeElement("div", mainWrapper, { id: "better-sidebar-container",
|
let sidebarList = makeElement("div", sidebarParent, { id: "better-sidebar-container",
|
||||||
style: `display:flex;flex-direction:column;width:50px;justify-content:center;align-items:center;box-sizing:border-box;position:relative;background-color:var(--bcbackground-0);height:100vh;position:sticky;top:0;left:0;`
|
style: `display:flex;flex-direction:column;width:50px;justify-content:center;align-items:center;box-sizing:border-box;position:relative;background-color:var(--bcbackground-0);height:100vh;position:sticky;top:0;left:0;`
|
||||||
}, true);
|
}, true);
|
||||||
let sidebarContent = makeElement("div", sidebarList, {
|
let sidebarContent = makeElement("div", sidebarList, {
|
||||||
style: "display:flex;flex-direction:column;gap:20px;width:100%;flex:1;justify-content:flex-start;align-items:center;margin:40px;"
|
style: "display:flex;flex-direction:column;gap:20px;width:100%;flex:1;justify-content:flex-start;align-items:center;margin:40px;"
|
||||||
});
|
});
|
||||||
applySidebarScaleStyles(sidebarList);
|
applySidebarScaleStyles(sidebarList);
|
||||||
sidebarList.dataset.expanded = expanded ? "true" : "false";
|
|
||||||
// Populate sidebar from Canvas navigation menu dynamically
|
|
||||||
populateSidebarFromNav(sidebarContent);
|
|
||||||
|
|
||||||
|
|
||||||
let expander = makeElement("div", sidebarList, {
|
let expander = makeElement("div", sidebarList, {
|
||||||
className: "better-sidebar-expander",
|
className: "better-sidebar-expander",
|
||||||
style: "display:flex;flex-direction:column;gap:0px;margin-top:auto;width:100%;justify-content:center;align-items:center;cursor:pointer;",
|
style: "display:flex;flex-direction:column;gap:0px;margin-top:auto;width:100%;justify-content:center;align-items:center;cursor:pointer;",
|
||||||
@ -1536,6 +1590,12 @@ async function setupBetterSidebar(mode = getSidebarLayoutMode()) {
|
|||||||
</g>
|
</g>
|
||||||
</svg>
|
</svg>
|
||||||
`
|
`
|
||||||
|
sidebarList.dataset.expanded = "false";
|
||||||
|
updateSidebar(false, sidebarList, expander);
|
||||||
|
requestAnimationFrame(() => populateSidebarFromNav(sidebarContent));
|
||||||
|
|
||||||
|
let expanded = await expandedPromise;
|
||||||
|
sidebarList.dataset.expanded = expanded ? "true" : "false";
|
||||||
updateSidebar(expanded, sidebarList, expander);
|
updateSidebar(expanded, sidebarList, expander);
|
||||||
setSidebarExpandedState(layoutMode, expanded);
|
setSidebarExpandedState(layoutMode, expanded);
|
||||||
// const labels = document.querySelectorAll(".better-sidebar-label");
|
// const labels = document.querySelectorAll(".better-sidebar-label");
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user