add functions

This commit is contained in:
Luigi D'Acunto 2025-04-11 19:50:06 +02:00
parent 0f59eccc5d
commit d63bc7b813

View file

@ -183,10 +183,194 @@
}
}
function highlightRejectedCourses() {
if (!window.location.href.match(/\/profilo\/\d+\/curriculum\//)) return;
console.log("GAIA Swissknife: Cerco righe con 'Respinto'...");
$("tr").each(function() {
const row = $(this);
if (row.text().trim().includes("Respinto")) {
row.css("background-color", "#f8d7da");
row.css("border-left", "4px solid #dc3545"); // opzionale: bordo rosso
console.log("GAIA Swissknife: Riga evidenziata ->", row.text().trim().substring(0, 100));
}
});
}
function addAuthorizationProfileTool() {
if (!window.location.href.includes("/autorizzazioni/")) return;
// Crea la finestra modale
const $modal = $(`
<div id="gaia-auth-tool" style="
position: fixed;
top: 20px;
right: 20px;
width: 320px;
background: white;
border: 2px solid #007BFF;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
z-index: 9999;
overflow: hidden;
">
<div id="gaia-auth-header" style="
background-color: #007BFF;
color: white;
padding: 8px 10px;
font-weight: bold;
cursor: move;
display: flex;
justify-content: space-between;
align-items: center;
">
<span>🛠 GAIA Swissknife Curriculum</span>
<button id="gaia-auth-toggle" title="Riduci/Espandi" style="
background: transparent;
border: none;
color: white;
font-weight: bold;
font-size: 16px;
cursor: pointer;
padding: 0;
margin-left: 10px;
"></button>
</div>
<div id="gaia-auth-body" style="padding: 15px;">
<input type="text" id="gaia-auth-query" placeholder="Codice corso es. TOS/2025/..." style="width: 100%; padding: 5px; margin-bottom: 10px; border-radius: 4px; border: 1px solid #ccc;">
<button id="gaia-auth-btn" style="width: 100%; padding: 8px; background-color: #007BFF; color: white; border: none; border-radius: 4px; cursor: pointer;">Recupera Profili</button>
<div id="gaia-auth-openall-container" style="display: none; margin-top: 10px;">
<button id="gaia-auth-openall" style="width: 100%; padding: 6px; background-color: #28a745; color: white; border: none; border-radius: 4px; cursor: pointer;">
Apri tutti i Curriculum
</button>
</div>
<div id="gaia-auth-results" style="margin-top: 10px; max-height: 200px; overflow-y: auto; border-top: 1px solid #ddd; padding-top: 10px;"></div>
</div>
</div>
`);
$('body').append($modal);
let isCollapsed = false;
$('#gaia-auth-toggle').on('click', function (e) {
isCollapsed = !isCollapsed;
$('#gaia-auth-body').slideToggle(200);
$(this).text(isCollapsed ? '+' : ''); // Cambia icona da - a +
e.stopPropagation(); // Previene conflitti con il drag
});
// Trascinabilità
let isDragging = false;
let dragOffsetX = 0, dragOffsetY = 0;
$('#gaia-auth-header')
.on('mousedown', function (e) {
const modal = document.getElementById('gaia-auth-tool');
const rect = modal.getBoundingClientRect();
isDragging = true;
dragOffsetX = e.clientX - rect.left;
dragOffsetY = e.clientY - rect.top;
e.preventDefault(); // previene selezione testo
});
$(document)
.on('mousemove', function (e) {
if (!isDragging) return;
const winW = window.innerWidth;
const winH = window.innerHeight;
const $modal = $('#gaia-auth-tool');
let newLeft = e.clientX - dragOffsetX;
let newTop = e.clientY - dragOffsetY;
// Limiti per evitare di trascinare fuori
newLeft = Math.max(0, Math.min(newLeft, winW - $modal.outerWidth()));
newTop = Math.max(0, Math.min(newTop, winH - $modal.outerHeight()));
$modal.css({ left: newLeft + 'px', top: newTop + 'px', right: 'auto' });
})
.on('mouseup', function () {
isDragging = false;
});
$('#gaia-auth-btn').on('click', function () {
const query = $('#gaia-auth-query').val().trim().toLowerCase();
const $results = $('#gaia-auth-results');
$results.empty(); // Pulisce la lista ogni volta
$('#gaia-auth-openall-container').hide(); // Nasconde il pulsante "Apri tutti i Curriculum"
let collectedLinks = []; // memorizza i link trovati
if (!query) {
alert("Inserisci un codice corso per cercare.");
return;
}
// Ripulisce eventuali evidenziazioni precedenti
$(".panel.panel-default").css("background-color", "");
let found = 0;
$(".panel.panel-default").each(function () {
const $panel = $(this);
const text = $panel.text().toLowerCase();
if (text.includes(query)) {
found++;
// Evidenzia
$panel.css("background-color", "#d4edda");
// Cerca il link al profilo
const $profileLink = $panel.find("a[href^='/profilo/']").first();
if ($profileLink.length > 0) {
const href = $profileLink.attr('href'); // es. /profilo/220378/
const match = href.match(/\/profilo\/(\d+)\//);
const nome = $profileLink.text().trim();
if (match && match[1]) {
const id = match[1];
const fullLink = `https://gaia.cri.it/profilo/${id}/curriculum/?us`;
collectedLinks.push(fullLink);
const $entry = $(`
<div style="margin-bottom: 5px;">
<a href="${fullLink}" target="_blank">${nome}</a>
</div>
`);
$results.append($entry);
}
}
}
});
if (collectedLinks.length > 0) {
$('#gaia-auth-openall-container').show();
$('#gaia-auth-openall').off('click').on('click', () => {
collectedLinks.forEach(link => window.open(link, '_blank'));
});
}
if (found === 0) {
$results.append(`<div style="color: red;">Nessun risultato trovato.</div>`);
}
});
}
$(document).ready(() => {
addExamOutcomeButtons();
addOpenAllProfilesButton();
highlightRejectedCourses();
addAuthorizationProfileTool();
});
}