Files
script/Pulsante NRAP Convalida - Footer.user.js
T
2026-05-12 21:05:35 +02:00

91 lines
3.5 KiB
JavaScript

// ==UserScript==
// @name Pulsante NRAP Convalida - Footer
// @namespace http://tampermonkey.net/
// @version 1.0
// @description Inserisce il pulsante "Convalida" nell'header blu, allineato a destra
// @author Gemini+Gatto.
// @match *://www.ilportaledeltrasporto.it/nove/gestioneistanzanove/spa/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function injectButtonInHeader() {
// 1. Cerchiamo l'header blu (HeaderComponent)
const header = document.querySelector('header.HeaderComponent');
// 2. Cerchiamo il pulsante originale nel footer per sapere se dobbiamo mostrare il nostro
const allButtons = document.querySelectorAll('footer button, .FooterNavComponent button');
let originalBtn = null;
for (let btn of allButtons) {
if (btn.textContent.toLowerCase().includes('convalida')) {
originalBtn = btn;
break;
}
}
const existingBtn = document.querySelector('#quick-convalida-header');
// Se non c'è il tasto originale nel footer, nascondiamo il nostro
if (!originalBtn) {
if (existingBtn) existingBtn.style.display = 'none';
return;
}
// 3. Se l'header esiste e il tasto non c'è ancora, lo creiamo
if (header && !existingBtn) {
// Rendiamo l'header "relative" per poter posizionare il tasto "absolute" dentro di esso
header.style.position = 'relative';
const btn = document.createElement('button');
btn.id = 'quick-convalida-header';
btn.innerHTML = '✅ CONVALIDA DOCUMENTAZIONE';
// STILE: Posizionato a destra, dentro la zona blu
btn.style.cssText = `
position: absolute;
right: 56px; /* Distanza dal bordo destro */
top: 78%; /* Centratura verticale rispetto all'header */
transform: translateY(-50%);
padding: 8px 20px;
background-color: #28a745; /* Verde che stacca sul blu */
color: white;
border: 1px solid #ffffff;
border-radius: 4px;
font-size: 14px;
font-weight: bold;
cursor: pointer;
z-index: 9999;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
white-space: nowrap;
`;
// Azione al click
btn.onclick = function(e) {
e.preventDefault();
// Ricerchiamo il tasto originale "fresco" nel footer
const target = Array.from(document.querySelectorAll('footer button'))
.find(b => b.textContent.toLowerCase().includes('convalida'));
if (target) {
console.log("Tampermonkey: Clicco Convalida originale...");
target.click();
} else {
alert("Pulsante originale non trovato nel footer!");
}
};
header.appendChild(btn);
} else if (existingBtn) {
// Se esiste già, assicuriamoci che sia visibile
existingBtn.style.display = 'block';
}
}
// Monitoraggio continuo per gestire i cambi pagina di React
const observer = new MutationObserver(injectButtonInHeader);
observer.observe(document.body, { childList: true, subtree: true });
setInterval(injectButtonInHeader, 1000);
injectButtonInHeader();
})();