// ==UserScript==
// @name 河海大学教务系统--辅助评教脚本
// @namespace HHU
// @version 2.02
// @description 在教师评教页面显示十个按钮,根据需要(上方按钮随机选择,下方按钮为全相同选项)即可一键全选并填充简单的评语
// @author plusmultiply0
// @match http://202.119.113.135/*
// @match http://202.119.113.136/*
// @match http://202.119.113.147/*
// @match http://202.119.113.148/*
// @run-at document-idle
// @grant none
// @license MIT License
// ==/UserScript==
function mainForJudge() {
try {
// functional
const selectItem = (row, col) => {
let path = `#tblView > tbody > tr > td:nth-child(2) > table > tbody > tr:nth-child(${row}) > td > input[type=radio]:nth-child(${col})`;
document.querySelector(path).setAttribute('checked', true);
}
const randomGernete = (num, base) => {
return [1, 2, 3, 4, 5].map(() => Math.ceil(num + base * Math.random())).concat([1, 2, 3, 4, 5].map(() => Math.ceil(num + base * Math.random()))).slice(0, 6);
}
const result = (num, base) => {
// clear exist
let clearList = [...document.querySelectorAll("#tblView > tbody > tr > td:nth-child(2) > table > tbody input[type=radio]")];
clearList.map((item) => item.removeAttribute('checked'));
let newArr = randomGernete(num, base);
for (let i = 0; i < 6; i++) {
selectItem((2 + 3 * i), newArr[i]);
}
// 一般为教材的选用情况,默认为 正式出版教材
// 实验课程,该问会询问实验仪器的情况;下一问才是教材的选用情况
selectItem(20, 1);
// 默认为默认为 正式出版教材(当为实验课程时)
try {
selectItem(23, 1);
} catch (error) { }
// 生成简单的评语
document.querySelector("body > form > table.fieldsettop > tbody > tr > td > table:nth-child(3) > tbody > tr:nth-child(2) > td:nth-child(2) > table > tbody > tr > td > textarea").value = "感谢老师这个学期的教学和指导";
}
const best = () => result(1, 0);
const good = () => result(0, 3);
const soso = () => result(1, 3);
const notgood = () => result(2, 3);
const bad = () => result(5, 0);
// 选项相同的情况
const same_best = () => result(1, 0);
const same_good = () => result(2, 0);
const same_soso = () => result(3, 0);
const same_notgood = () => result(4, 0);
const same_bad = () => result(5, 0);
const eventlist = [best, good, soso, notgood, bad];
const eventlist2 = [same_best,same_good,same_soso,same_notgood,same_bad];
// UI
// 生成评教按钮
const judge = ['非常好', '较好', '一般', '较差', '非常差'];
const judge2 = ['全-非常满意', '全-比较满意', '全-一般满意', '全-不满意','全-非常不满意'];
let fragments = document.createDocumentFragment('div');
let fragmentAll = document.createElement('div');
let fragmentOne = document.createElement('div');
let fragmentTwo = document.createElement('div');
fragmentOne.style = "display:flex;margin:3px";
fragmentTwo.style = "display:flex;margin:3px";
const addElem = (text) => {
let div = document.createElement('div');
let textnode = document.createTextNode(text);
div.appendChild(textnode);
div.style = 'border:1px solid #000;font:700 24px serif;';
return div;
}
const addElem2 = (text) => {
let div = document.createElement('div');
let textnode = document.createTextNode(text);
div.appendChild(textnode);
div.style = 'border:1px solid #603434;font:700 24px serif;';
return div;
}
// 为每个按钮绑定事件
let nodes = judge.map((item => addElem(item)));
for (let i = 0; i < nodes.length; i++) {
nodes[i].onclick = eventlist[i];
}
let nodes2 = judge2.map((item => addElem2(item)));
for (let i = 0; i < nodes2.length; i++) {
nodes2[i].onclick = eventlist2[i];
}
// 添加至文档片段中
nodes.map((item) => fragmentOne.appendChild(item));
nodes2.map((item) => fragmentTwo.appendChild(item));
fragmentAll.appendChild(fragmentOne);
fragmentAll.appendChild(fragmentTwo);
fragments.appendChild(fragmentAll);
// 添加至页面中
document.querySelector("body > form > table.fieldsettop > tbody > tr > td > table:nth-child(1) > tbody > tr:nth-child(2) > td:nth-child(2) > table > tbody > tr > td").appendChild(fragments);
}
catch (error) {
// console.log(error);
}
}
mainForJudge();