您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds a button to help fill out PUP faculty evaluation surveys
当前为
// ==UserScript== // @name PUP Survey Helper // @namespace Violentmonkey Scripts // @match https://survey.pup.edu.ph/apps/ofes/survey/* // @grant none // @version 1.2 // @author intMeinVoid // @icon https://www.pup.edu.ph/about/images/PUPLogo.png // @description Adds a button to help fill out PUP faculty evaluation surveys // @license MIT // ==/UserScript== (function() { 'use strict'; // Create and style the floating button const button = document.createElement('button'); button.textContent = '📝 Set Eval'; button.style.cssText = ` position: fixed; bottom: 20px; right: 20px; padding: 10px 20px; background-color: #900000; color: white; border: none; border-radius: 5px; cursor: pointer; font-size: 14px; z-index: 9999; box-shadow: 0 2px 5px rgba(0,0,0,0.2); transition: all 0.3s ease; `; // Add hover effect button.addEventListener('mouseenter', () => { button.style.backgroundColor = '#b00000'; }); button.addEventListener('mouseleave', () => { button.style.backgroundColor = '#900000'; }); // Add the evaluation function const setEvaluation = async (targetAvg) => { try { // If no target average provided, prompt user if (targetAvg === undefined) { const input = prompt('Enter desired average (1-5):', '2.5'); if (input === null) return; // User clicked cancel targetAvg = parseFloat(input); } // Validate input if (isNaN(targetAvg)) { throw new Error('Please enter a valid number'); } if (targetAvg < 1 || targetAvg > 5) { throw new Error('Target average must be between 1 and 5'); } // Get all radio inputs and calculate total questions const radios = document.querySelectorAll('input[type="radio"][name^="q"]'); const totalQuestions = radios.length / 5; if (totalQuestions === 0) { throw new Error('No questions found on the page'); } // Calculate required values const exactTotal = targetAvg * totalQuestions; const roundedTotal = Math.round(exactTotal); const lowerValue = Math.floor(targetAvg); const higherValue = Math.ceil(targetAvg); const numberOfHigher = roundedTotal - (lowerValue * totalQuestions); // Validate if average is achievable if (numberOfHigher < 0 || numberOfHigher > totalQuestions) { throw new Error(`Target average ${targetAvg} is not achievable with ${totalQuestions} questions`); } // Clear any previously selected options radios.forEach(radio => radio.checked = false); // Set scores for each question for (let i = 1; i <= totalQuestions; i++) { const score = i <= numberOfHigher ? higherValue : lowerValue; const questionId = `q${i}${score}`; const element = document.getElementById(questionId); if (!element) { throw new Error(`Could not find element with ID: ${questionId}`); } element.checked = true; } // Show success message const msg = `Set ${totalQuestions} questions to average ${targetAvg}\n` + `(${numberOfHigher} × ${higherValue} and ${totalQuestions - numberOfHigher} × ${lowerValue})`; alert(msg); } catch (error) { alert('Error: ' + error.message); } }; // Add click handler to the button button.addEventListener('click', () => setEvaluation()); // Add the button to the page document.body.appendChild(button); })();