// ==UserScript== // @name Correggi Offset COLLAUDO Portale // @namespace http://tampermonkey.net/ // @version 1.0 // @description Correzione puntuale: elimina sfasamento in testa e recupera coda dal campo successivo // @author Gemini+Gatto. // @match https://www.ilportaledellautomobilista.it/revisioni/certificatoApprovazioneVeicolo/* // @grant none // ==/UserScript== (function() { 'use strict'; // 0. STATO DI ESECUZIONE (Salvato nella sessione del browser) // Usiamo sessionStorage così se l'utente ricarica la pagina, lo stato si resetta. let giaEseguito = false; // --- 1. CONFIGURAZIONE FILTRI --- const targetPhrase = "Dettaglio Certificato Approvazione Veicolo"; //const targetDomain = "www.ilportaledeltrasporto.it"; // --- 2. VERIFICA CONDIZIONI DI ATTIVAZIONE --- if (!document.body.innerText.includes(targetPhrase)) { console.log("Script disattivato: Frase specifica non trovata nella pagina."); return; } function correggiValorePerValore() { const baseID = "DettaglioCertificatoApprovazioneVeicolo_richiestaCertificatoApprovazioneVeicoloView_righeDescrittiveList_"; const numCampi = 12; // Da 0 a 11 (a-l) let v = []; if (giaEseguito) { console.warn("Tentativo duplicato: USCITA o ricaricamento pagina in corso..."); console.log("Script disattivato: Gia apportate modifiche."); // window.location.reload(); // Forza il refresh (F5) return; } // 1. Carichiamo i valori attuali in un array v (v[0]=a, v[1]=b, ..., v[11]=l) for (let i = 0; i < numCampi; i++) { let el = document.getElementById(baseID + i + "_"); v.push(el ? el.value : ""); } console.log("Valori letti prima della correzione:", v); let v_corr = new Array(numCampi); // 2. Applicazione della strategia definita dall'utente // a_corr = a inalterato v_corr[0] = v[0]; // Da b a k (indici da 1 a 10) // b_corr (i=1): elimina 1 char, aggiunge primi 1 di c (v[2]) // c_corr (i=2): elimina 2 char, aggiunge primi 2 di d (v[3]) // ... for (let i = 1; i <= 10; i++) { let n_da_eliminare = i; let n_da_recuperare = i; // Prendiamo il campo corrente, togliamo l'inizio let parte_restante = v[i].substring(n_da_eliminare); // Prendiamo i caratteri "scivolati" dal campo successivo let coda_recuperata = v[i+1].substring(0, n_da_recuperare); // Componiamo il valore corretto v_corr[i] = parte_restante + coda_recuperata; console.log(`Debug Cella ${i}: rimosse ${n_da_eliminare} in testa, aggiunte ${n_da_recuperare} da cella successiva.`); } // l_corr (l'ultimo campo, indice 11) - presumibilmente resta la parte rimanente o inalterato v_corr[11] = v[11].substring(11); // 3. Scrittura dei valori corretti nei campi HTML for (let i = 0; i < numCampi; i++) { let el = document.getElementById(baseID + i + "_"); if (el) { // Assicuriamoci che non superi mai i 36 caratteri (limite database) el.value = v_corr[i].substring(0, 36); el.style.backgroundColor = "#e8f5e9"; // Feedback visivo (verde) el.style.border = "1px solid #2e7d32"; } } giaEseguito = true; // alert("Correzione applicata secondo lo schema definito."); } // Creazione del Pulsante (3cm da destra, 8cm dall'alto) const btn = document.createElement('button'); btn.type = "button"; btn.innerHTML = "CORREGGI"; btn.style.cssText = ` position: fixed; right: 3cm; top: 4cm; z-index: 10000; padding: 12px 20px; background-color: #ff5722; color: white; border: 2px solid #e64a19; font-weight: bold; cursor: pointer; box-shadow: 0 4px 6px rgba(0,0,0,0.3); `; btn.onclick = (e) => { e.preventDefault(); correggiValorePerValore(); }; document.body.appendChild(btn); })();