fix: guard URL-based per attivare le feature solo sulle pagine target
Aggiunto helper getPageMode(iDoc) che legge il parametro "mode" dall'URL senza toccare il DOM. Accordion badges ora si attiva solo su mode=edit_host (guard in tryInitAccordionCounts, init e MutationObserver), evitando operazioni inutili e potenziali errori in console sulle altre pagine.
This commit is contained in:
parent
1a9db50817
commit
a0a0f20df3
1 changed files with 24 additions and 7 deletions
|
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name Checkmk SwissKnife
|
// @name Checkmk SwissKnife
|
||||||
// @namespace https://luigidacunto.com/
|
// @namespace https://luigidacunto.com/
|
||||||
// @version 2.2
|
// @version 2.3
|
||||||
// @description Raccolta di miglioramenti all'interfaccia di Checkmk WATO. Ogni fix o enhancement viene aggiunto qui come feature indipendente.
|
// @description Raccolta di miglioramenti all'interfaccia di Checkmk WATO. Ogni fix o enhancement viene aggiunto qui come feature indipendente.
|
||||||
// @author Luigi D'Acunto
|
// @author Luigi D'Acunto
|
||||||
// @homepageURL https://git.luigidacunto.com/tools/checkmk-swissknife
|
// @homepageURL https://git.luigidacunto.com/tools/checkmk-swissknife
|
||||||
|
|
@ -37,6 +37,12 @@
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Legge il parametro "mode" dall'URL del documento target senza accedere al DOM
|
||||||
|
function getPageMode(iDoc) {
|
||||||
|
try { return new URLSearchParams(iDoc.location.search).get('mode') || ''; }
|
||||||
|
catch (e) { return ''; }
|
||||||
|
}
|
||||||
|
|
||||||
// Inietta CSS nel documento target (una sola volta, deduplica per id)
|
// Inietta CSS nel documento target (una sola volta, deduplica per id)
|
||||||
function injectStyles(iDoc, id, css) {
|
function injectStyles(iDoc, id, css) {
|
||||||
if (iDoc.getElementById(id)) return;
|
if (iDoc.getElementById(id)) return;
|
||||||
|
|
@ -551,17 +557,25 @@
|
||||||
if (++attemptsAcc < MAX_ATTEMPTS) setTimeout(tryInitAccordionCounts, POLL_INTERVAL_MS);
|
if (++attemptsAcc < MAX_ATTEMPTS) setTimeout(tryInitAccordionCounts, POLL_INTERVAL_MS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!iDoc.getElementById('form_edit_host')) return;
|
// Guard URL: attiva solo sulla pagina edit_host
|
||||||
|
if (getPageMode(iDoc) !== 'edit_host') return;
|
||||||
if (!initAccordionCheckedCounts(iDoc)) {
|
if (!initAccordionCheckedCounts(iDoc)) {
|
||||||
if (++attemptsAcc < MAX_ATTEMPTS) setTimeout(tryInitAccordionCounts, POLL_INTERVAL_MS);
|
if (++attemptsAcc < MAX_ATTEMPTS) setTimeout(tryInitAccordionCounts, POLL_INTERVAL_MS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function init() {
|
function init() {
|
||||||
|
const iDoc = getWatoDoc(FOLDER_SELECT_ID);
|
||||||
|
const mode = getPageMode(iDoc);
|
||||||
attemptsFolder = 0;
|
attemptsFolder = 0;
|
||||||
attemptsAcc = 0;
|
attemptsAcc = 0;
|
||||||
|
// Folder select: si auto-ferma se non trova l'elemento, schedula sempre.
|
||||||
setTimeout(tryEnhanceFolderSelect, 800);
|
setTimeout(tryEnhanceFolderSelect, 800);
|
||||||
setTimeout(tryInitAccordionCounts, 800);
|
// Accordion: solo su edit_host. Se mode è vuoto (iframe non ancora caricato)
|
||||||
|
// si schedula comunque: tryInitAccordionCounts farà il guard URL.
|
||||||
|
if (!mode || mode === 'edit_host') {
|
||||||
|
setTimeout(tryInitAccordionCounts, 800);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (document.readyState === 'complete') {
|
if (document.readyState === 'complete') {
|
||||||
|
|
@ -574,15 +588,18 @@
|
||||||
new MutationObserver(() => {
|
new MutationObserver(() => {
|
||||||
const iDoc = getWatoDoc(FOLDER_SELECT_ID);
|
const iDoc = getWatoDoc(FOLDER_SELECT_ID);
|
||||||
if (!iDoc) return;
|
if (!iDoc) return;
|
||||||
|
const mode = getPageMode(iDoc);
|
||||||
const sel = iDoc.getElementById(FOLDER_SELECT_ID);
|
const sel = iDoc.getElementById(FOLDER_SELECT_ID);
|
||||||
if (sel && sel.classList.contains('select2-hidden-accessible') && !sel.dataset.cmkEnhanced) {
|
if (sel && sel.classList.contains('select2-hidden-accessible') && !sel.dataset.cmkEnhanced) {
|
||||||
attemptsFolder = 0;
|
attemptsFolder = 0;
|
||||||
setTimeout(tryEnhanceFolderSelect, 300);
|
setTimeout(tryEnhanceFolderSelect, 300);
|
||||||
}
|
}
|
||||||
const form = iDoc.getElementById('form_edit_host');
|
if (mode === 'edit_host') {
|
||||||
if (form && !form.dataset.cmkAccBadge) {
|
const form = iDoc.getElementById('form_edit_host');
|
||||||
attemptsAcc = 0;
|
if (form && !form.dataset.cmkAccBadge) {
|
||||||
setTimeout(tryInitAccordionCounts, 300);
|
attemptsAcc = 0;
|
||||||
|
setTimeout(tryInitAccordionCounts, 300);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).observe(document.body, { childList: true, subtree: true });
|
}).observe(document.body, { childList: true, subtree: true });
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue