Update Compass QoL Enhancer to 1.13.1
- Tabs specified in the URL are now opened as fast as possible - Fix some panels not having their tabs linked to
This commit is contained in:
parent
169205b341
commit
b251d9c2e5
|
@ -2,7 +2,7 @@
|
||||||
// @name Compass QoL Enhancer
|
// @name Compass QoL Enhancer
|
||||||
// @namespace blankie-scripts
|
// @namespace blankie-scripts
|
||||||
// @match http*://*.compass.education/*
|
// @match http*://*.compass.education/*
|
||||||
// @version 1.13.0
|
// @version 1.13.1
|
||||||
// @author blankie
|
// @author blankie
|
||||||
// @description A userscript that adds small but useful features for Compass, such as the ability to close windows by clicking on the background
|
// @description A userscript that adds small but useful features for Compass, such as the ability to close windows by clicking on the background
|
||||||
// @inject-into page
|
// @inject-into page
|
||||||
|
@ -223,15 +223,19 @@ function handleNewCalendarEvent(element, calendar) {
|
||||||
function handlePanelItem(panel, panelItem, isDefault, tabToOpen) {
|
function handlePanelItem(panel, panelItem, isDefault, tabToOpen) {
|
||||||
let panelId = panelItem.itemId || panelItem.id;
|
let panelId = panelItem.itemId || panelItem.id;
|
||||||
let panelItemHash = getPanelItemHash(panelId, isDefault);
|
let panelItemHash = getPanelItemHash(panelId, isDefault);
|
||||||
|
|
||||||
// Automatically open tab specified in fragment
|
// Automatically open tab specified in fragment
|
||||||
if (panelId === tabToOpen) {
|
if (panelId === tabToOpen) {
|
||||||
// if the sessions tab is automatically opened, the currently selected tab is still dashboard for some reason
|
// if the sessions tab is automatically opened, the currently selected tab is still dashboard for some reason,
|
||||||
// i can't be arsed to read any more minified javascript, so this is the best fix that you'll get
|
// hence this hook to open it when the dashboard finishes loading
|
||||||
// it does look like that this bug only manifests if the tab is activated while the initial loading thing is shown
|
if (panel.setDashboardToLoading) {
|
||||||
setTimeout(function() {
|
let original = panel.setDashboardToLoading;
|
||||||
|
panel.setDashboardToLoading = function(loading) {
|
||||||
|
original.apply(this, arguments);
|
||||||
|
!loading && panel.setActiveTab(panelItem);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
panel.setActiveTab(panelItem);
|
panel.setActiveTab(panelItem);
|
||||||
}, 1000);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// /Communicate/SchoolDocumentation.aspx does not have tabs
|
// /Communicate/SchoolDocumentation.aspx does not have tabs
|
||||||
|
@ -320,7 +324,11 @@ function handleNewNode(node, observer) {
|
||||||
}
|
}
|
||||||
} else if (!qolTabOpened && node.classList.contains("x-panel")) {
|
} else if (!qolTabOpened && node.classList.contains("x-panel")) {
|
||||||
qolTabOpened = true;
|
qolTabOpened = true;
|
||||||
let panel = unsafeWindow.Ext.getCmp(node.id);
|
let topMostPanel = node;
|
||||||
|
while (topMostPanel.parentElement.closest(".x-panel")) {
|
||||||
|
topMostPanel = topMostPanel.parentElement.closest(".x-panel");
|
||||||
|
}
|
||||||
|
let panel = unsafeWindow.Ext.getCmp(topMostPanel.id);
|
||||||
let tabToOpen = window.location.pathname === "/Organise/Activities/Activity.aspx"
|
let tabToOpen = window.location.pathname === "/Organise/Activities/Activity.aspx"
|
||||||
? getHashSearch().get("qol_open_tab")
|
? getHashSearch().get("qol_open_tab")
|
||||||
: (window.location.hash.replace(/^#(.+?)&.*$/, "$1") || null);
|
: (window.location.hash.replace(/^#(.+?)&.*$/, "$1") || null);
|
||||||
|
|
Loading…
Reference in New Issue