make some style change

This commit is contained in:
gameloader 2023-09-19 13:22:34 +08:00
parent 3b6db1f851
commit 4c34736fe0

View File

@ -72,67 +72,69 @@
// 获取gnmkdmKey的值 // 获取gnmkdmKey的值
var gnmkdmKey = document.getElementById('gnmkdmKey').value; var gnmkdmKey = document.getElementById('gnmkdmKey').value;
// 构造请求URL和postData // 构造请求URL和postData
var url = 'https://jwgl.whu.edu.cn/cjcx/cjcx_cxXsgrcj.html'; var url = 'https://jwgl.whu.edu.cn/cjcx/cjcx_cxXsgrcj.html';
var params = 'doType=query&gnmkdm=' + encodeURIComponent(gnmkdmKey); var params = 'doType=query&gnmkdm=' + encodeURIComponent(gnmkdmKey);
// 最终请求URL // 最终请求URL
var finalUrl = url + '?' + params; var finalUrl = url + '?' + params;
// Bind click event to the query button // Bind click event to the query button
queryButton.addEventListener('click', function() { queryButton.addEventListener('click', function() {
var postData = 'xnm=' + yearSelect.value + '&xqm=&kcbj=&_search=false&nd=' + Date.now() + '&queryModel.showCount=50&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0'; var postData = 'xnm=' + yearSelect.value + '&xqm=&kcbj=&_search=false&nd=' + Date.now() + '&queryModel.showCount=50&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0';
// Perform the same POST request as the calculate button // Perform the same POST request as the calculate button
// console.log(postData); // console.log(postData);
GM_xmlhttpRequest({ GM_xmlhttpRequest({
method: 'POST', method: 'POST',
url: finalUrl, url: finalUrl,
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/x-www-form-urlencoded'
}, },
data: postData, data: postData,
onload: function(response) { onload: function(response) {
var responseData = JSON.parse(response.responseText); var responseData = JSON.parse(response.responseText);
let items = responseData.items; let items = responseData.items;
// console.log(items); // console.log(items);
// Only consider items where kcxzmc includes "选修" // Only consider items where kcxzmc includes "选修"
var electiveItems = items.filter((item) => { var electiveItems = items.filter((item) => {
return item && items[item].kcxzmc && items[item].kcxzmc.includes("选修"); // console.log('item:', items[item]);
}); // console.log('kcxzmc:', items[item] && items[item].kcxzmc);
return item && items[item].kcxzmc && items[item].kcxzmc.includes("选修");
});
// Display these items in a list with checkboxes // Display these items in a list with checkboxes
var electiveList = document.createElement('ul'); var electiveList = document.createElement('ul');
electiveList.style.listStyleType = 'none'; electiveList.style.listStyleType = 'none';
electiveList.style.border = '1px solid black'; // Add border to the list electiveList.style.border = '1px solid black'; // Add border to the list
electiveList.style.padding = '10px'; // Add some padding electiveList.style.padding = '10px'; // Add some padding
electiveList.style.marginTop = '20px'; // Add margin at the top electiveList.style.marginTop = '20px'; // Add margin at the top
electiveItems.forEach(item => { electiveItems.forEach(item => {
var listItem = document.createElement('li'); var listItem = document.createElement('li');
listItem.style.marginTop = '5px'; listItem.style.marginTop = '5px';
listItem.style.display = 'flex'; // Use flex layout listItem.style.display = 'flex'; // Use flex layout
listItem.style.alignItems = 'center'; // Center-align items vertically listItem.style.alignItems = 'center'; // Center-align items vertically
var checkbox = document.createElement('input'); var checkbox = document.createElement('input');
checkbox.type = 'checkbox'; checkbox.type = 'checkbox';
checkbox.value = item.kcmc; checkbox.value = item.kcmc;
checkbox.style.marginRight = '10px'; // Add some space between the checkbox and the label checkbox.style.marginRight = '10px'; // Add some space between the checkbox and the label
listItem.appendChild(checkbox); listItem.appendChild(checkbox);
var label = document.createElement('label'); var label = document.createElement('label');
label.textContent = item.kcmc; label.textContent = item.kcmc;
listItem.appendChild(label); listItem.appendChild(label);
electiveList.appendChild(listItem); electiveList.appendChild(listItem);
}); });
// Add the list to the container // Add the list to the container
container.appendChild(electiveList); container.appendChild(electiveList);
} }
});
}); });
});
// 绑定按钮点击事件 // 绑定按钮点击事件
@ -141,53 +143,53 @@
let postData = 'xnm=' + yearSelect.value + '&xqm=&kcbj=&_search=false&nd=' + Date.now() + '&queryModel.showCount=70&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0'; let postData = 'xnm=' + yearSelect.value + '&xqm=&kcbj=&_search=false&nd=' + Date.now() + '&queryModel.showCount=70&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc&time=0';
// 发送POST请求 // 发送POST请求
GM_xmlhttpRequest({ GM_xmlhttpRequest({
method: 'POST', method: 'POST',
url: finalUrl, url: finalUrl,
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/x-www-form-urlencoded'
}, },
data: postData, data: postData,
onload: function(response) { onload: function(response) {
var responseData = JSON.parse(response.responseText); var responseData = JSON.parse(response.responseText);
let items = responseData.items; let items = responseData.items;
// console.log(items); // console.log(items);
// 创建变量用于存储必修成绩、选修成绩和必修学分 // 创建变量用于存储必修成绩、选修成绩和必修学分
var requiredScore = 0; var requiredScore = 0;
var electiveScore = 0; var electiveScore = 0;
var requiredCredits = 0; var requiredCredits = 0;
// Get the selected elective courses // Get the selected elective courses
var selectedElectives = Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).map(input => input.value); var selectedElectives = Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).map(input => input.value);
// Iterate through each item in the items array // Iterate through each item in the items array
for (var i = 0; i < items.length; i++) { for (var i = 0; i < items.length; i++) {
var item = items[i]; var item = items[i];
var kcxzmc = item.kcxzmc; var kcxzmc = item.kcxzmc;
var bfzcj = parseFloat(item.bfzcj); var bfzcj = parseFloat(item.bfzcj);
var xf = parseFloat(item.xf); var xf = parseFloat(item.xf);
if (kcxzmc.includes("必修")) { if (kcxzmc.includes("必修")) {
requiredScore += bfzcj * xf;
requiredCredits += xf;
} else if (kcxzmc.includes("选修")) {
if (selectedElectives.includes(item.kcmc)) {
// Treat the selected elective courses as required courses
requiredScore += bfzcj * xf; requiredScore += bfzcj * xf;
requiredCredits += xf; requiredCredits += xf;
} else { } else if (kcxzmc.includes("选修")) {
// Only consider the non-selected elective courses for the elective score if (selectedElectives.includes(item.kcmc)) {
electiveScore += bfzcj * xf; // Treat the selected elective courses as required courses
requiredScore += bfzcj * xf;
requiredCredits += xf;
} else {
// Only consider the non-selected elective courses for the elective score
electiveScore += bfzcj * xf;
}
} }
} }
}
// 计算必修课平均成绩和选修课成绩 // 计算必修课平均成绩和选修课成绩
var requiredGrade = requiredScore / requiredCredits; var requiredGrade = requiredScore / requiredCredits;
var electiveGrade = electiveScore * 0.002; var electiveGrade = electiveScore * 0.002;
// 在窗口中显示结果 // 在窗口中显示结果
var resultElement = document.createElement('div'); var resultElement = document.createElement('div');
resultElement.style.marginTop = '10px'; resultElement.style.marginTop = '10px';
resultElement.textContent = "必修课: " + requiredGrade.toFixed(3) + ",选修课: " + electiveGrade.toFixed(3)+",总成绩:"+(requiredGrade+electiveGrade).toFixed(3); resultElement.textContent = "必修课: " + requiredGrade.toFixed(3) + ",选修课: " + electiveGrade.toFixed(3)+",总成绩:"+(requiredGrade+electiveGrade).toFixed(3);
container.appendChild(resultElement); container.appendChild(resultElement);
}})})})(); }})})})();