118 lines
4.1 KiB
JavaScript
118 lines
4.1 KiB
JavaScript
// ==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);
|
|
})(); |