Aggiorna la versione a 1.1.011 e aggiunge dataInizio, dataEsame e scadenzaDomande al JSON "Copia per LURCH", oltre a sincronizzare la funzione con la v1.1.010 deployata
This commit is contained in:
parent
8d88454abe
commit
eb33f52a63
1 changed files with 69 additions and 1 deletions
|
|
@ -5,7 +5,7 @@
|
||||||
// @downloadURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js
|
// @downloadURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/GAIA-Swissknife.user.js
|
||||||
// @changelogURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/CHANGELOG.md
|
// @changelogURL https://luigidacunto.com/scripts/gaia-swissknife/tampermonkey-script/CHANGELOG.md
|
||||||
// @author Luigi D'Acunto
|
// @author Luigi D'Acunto
|
||||||
// @version 1.1.009
|
// @version 1.1.011
|
||||||
// @description Aggiunge funzionalità alle pagine di GAIA
|
// @description Aggiunge funzionalità alle pagine di GAIA
|
||||||
// @match https://gaia.cri.it/*
|
// @match https://gaia.cri.it/*
|
||||||
// @require https://code.jquery.com/jquery-3.6.0.min.js
|
// @require https://code.jquery.com/jquery-3.6.0.min.js
|
||||||
|
|
@ -814,6 +814,68 @@ GM_addStyle(GM_getResourceText("DataTablesCSS"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Converte una data in italiano (es. "Domenica 27 Settembre 2026 09:00") in formato ISO 8601 ("2026-09-27T09:00:00")
|
||||||
|
function parseDataItaliana(testo) {
|
||||||
|
const mesi = { gennaio: 1, febbraio: 2, marzo: 3, aprile: 4, maggio: 5, giugno: 6, luglio: 7, agosto: 8, settembre: 9, ottobre: 10, novembre: 11, dicembre: 12 };
|
||||||
|
const m = (testo || '').match(/(\d{1,2})\s+([a-zA-Zàèìòù]+)\s+(\d{4})\s+(\d{2}):(\d{2})/i);
|
||||||
|
if (!m) return null;
|
||||||
|
const mese = mesi[m[2].toLowerCase()];
|
||||||
|
if (!mese) return null;
|
||||||
|
const giorno = m[1].padStart(2, '0');
|
||||||
|
return `${m[3]}-${String(mese).padStart(2, '0')}-${giorno}T${m[4]}:${m[5]}:00`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Funzione per copiare i dati del corso per LURCH in clipboard come JSON
|
||||||
|
function addCopyForLurchButton() {
|
||||||
|
if (!window.location.href.match(/\/aspirante\/corso-base\/\d+\//)) return;
|
||||||
|
if ($('#sezione').length === 0) return;
|
||||||
|
|
||||||
|
console.log("GAIA Swissknife: Aggiungo pulsante Copia per LURCH...");
|
||||||
|
|
||||||
|
function getPanel(labelSubstr) {
|
||||||
|
return [...document.querySelectorAll('.panel.panel-info')].find(el => el.querySelector('.panel-title')?.innerText.includes(labelSubstr));
|
||||||
|
}
|
||||||
|
function getPanelText(labelSubstr) {
|
||||||
|
return getPanel(labelSubstr)?.querySelector('.panel-body')?.innerText?.trim() || '';
|
||||||
|
}
|
||||||
|
|
||||||
|
function extractLurchData() {
|
||||||
|
const corso = document.querySelector('h1, h2')?.innerText?.trim() || '';
|
||||||
|
|
||||||
|
const titleMatch = document.title.match(/([A-Z]{2,}\/\d{4}\/[A-Z0-9\-]+(?: [A-Z0-9\-]+)?\/\d+)/);
|
||||||
|
const protocollo = titleMatch ? titleMatch[1] : '';
|
||||||
|
|
||||||
|
const direttore = getPanel('Direttore')?.querySelector('.panel-body a')?.innerText?.trim() || '';
|
||||||
|
|
||||||
|
const quotaText = getPanelText('Quota') || '0';
|
||||||
|
const quotaValore = parseFloat(quotaText.replace(/[^\d,]/g, '').replace(',', '.')) || 0;
|
||||||
|
const quota = quotaValore !== 0;
|
||||||
|
|
||||||
|
const dataInizio = parseDataItaliana(getPanelText('Data di inizio'));
|
||||||
|
const dataEsame = parseDataItaliana(getPanelText('Data di esame'));
|
||||||
|
const scadenzaDomande = parseDataItaliana(getPanelText('Termine di scadenza per le domande di ammissione'));
|
||||||
|
|
||||||
|
return { direttore, quota, quotaValore, corso, protocollo, linkGaia: window.location.href, dataInizio, dataEsame, scadenzaDomande };
|
||||||
|
}
|
||||||
|
|
||||||
|
const $btn = $('<button type="button" style="margin: 5px; padding: 8px; width: 97%; background-color: #1a6b8a; color: #FFF; border: none; border-radius: 4px; cursor: pointer;">Copia per LURCH (JSON)</button>');
|
||||||
|
|
||||||
|
$btn.on('click', function () {
|
||||||
|
const data = extractLurchData();
|
||||||
|
navigator.clipboard.writeText(JSON.stringify(data, null, 2)).then(() => {
|
||||||
|
console.log('GAIA Swissknife: Dati LURCH copiati in clipboard.', data);
|
||||||
|
const orig = $(this).text();
|
||||||
|
$(this).text('✓ Copiato!').css('background-color', '#28a745');
|
||||||
|
setTimeout(() => $(this).text(orig).css('background-color', '#1a6b8a'), 3000);
|
||||||
|
}).catch(err => {
|
||||||
|
console.error('GAIA Swissknife: Errore clipboard:', err);
|
||||||
|
alert('Errore durante la copia in clipboard.');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
appendToSwissknifeSection($('<li role="presentation"></li>').append($btn));
|
||||||
|
}
|
||||||
|
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
applyStyleFixes();
|
applyStyleFixes();
|
||||||
addExamOutcomeButtons();
|
addExamOutcomeButtons();
|
||||||
|
|
@ -824,12 +886,18 @@ GM_addStyle(GM_getResourceText("DataTablesCSS"));
|
||||||
addSediPreferitaTool();
|
addSediPreferitaTool();
|
||||||
addCopyCatalogButton();
|
addCopyCatalogButton();
|
||||||
addCopyStructureButton();
|
addCopyStructureButton();
|
||||||
|
addCopyForLurchButton();
|
||||||
console.log("GAIA Swissknife: Funzioni caricate con successo!");
|
console.log("GAIA Swissknife: Funzioni caricate con successo!");
|
||||||
});
|
});
|
||||||
|
|
||||||
})(jQuery.noConflict(true));
|
})(jQuery.noConflict(true));
|
||||||
|
|
||||||
// ==CHANGELOG==
|
// ==CHANGELOG==
|
||||||
|
// v1.1.011 - Nuovi campi nel JSON "Copia per LURCH":
|
||||||
|
// - Aggiunti dataInizio, dataEsame e scadenzaDomande (termine per le domande di ammissione), in formato ISO 8601
|
||||||
|
// v1.1.010 - Nuova funzione:
|
||||||
|
// - Aggiunto pulsante "Copia per LURCH (JSON)" nella sidebar delle pagine corso (/aspirante/corso-base/)
|
||||||
|
// - Estrae direttore, quota, corso, protocollo e link GAIA, e copia il JSON in clipboard
|
||||||
// v1.1.009 - Nuove funzioni:
|
// v1.1.009 - Nuove funzioni:
|
||||||
// - Aggiunto pulsante "Copia catalogo corsi (JSON)" nella sidebar di /courses/catalog/
|
// - Aggiunto pulsante "Copia catalogo corsi (JSON)" nella sidebar di /courses/catalog/
|
||||||
// - Estrae nome, codice, livello, tipo, obiettivo per ogni corso e copia il JSON in clipboard
|
// - Estrae nome, codice, livello, tipo, obiettivo per ogni corso e copia il JSON in clipboard
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue