From d63bc7b8133c6417260fc975a697d596053f7479 Mon Sep 17 00:00:00 2001 From: Luigi D'Acunto Date: Fri, 11 Apr 2025 19:50:06 +0200 Subject: [PATCH] add functions --- tampermonkey-script/GAIA-Swissknife.user.js | 184 ++++++++++++++++++++ 1 file changed, 184 insertions(+) diff --git a/tampermonkey-script/GAIA-Swissknife.user.js b/tampermonkey-script/GAIA-Swissknife.user.js index 43144a5..7a45e59 100644 --- a/tampermonkey-script/GAIA-Swissknife.user.js +++ b/tampermonkey-script/GAIA-Swissknife.user.js @@ -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 = $(` +
+
+ 🛠 GAIA Swissknife – Curriculum + +
+ +
+ + + +
+
+
+ `); + + + $('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 = $(` +
+ ${nome} +
+ `); + $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(`
Nessun risultato trovato.
`); + } + }); + } + $(document).ready(() => { addExamOutcomeButtons(); addOpenAllProfilesButton(); + highlightRejectedCourses(); + addAuthorizationProfileTool(); }); }