From 4c34736fe0eb984e11244e4842912b0cd235804a Mon Sep 17 00:00:00 2001 From: gameloader Date: Tue, 19 Sep 2023 13:22:34 +0800 Subject: [PATCH] make some style change --- whuF2caculate.js | 174 ++++++++++++++++++++++++----------------------- 1 file changed, 88 insertions(+), 86 deletions(-) diff --git a/whuF2caculate.js b/whuF2caculate.js index dfa27c1..c7b3c58 100644 --- a/whuF2caculate.js +++ b/whuF2caculate.js @@ -72,67 +72,69 @@ // 获取gnmkdmKey的值 var gnmkdmKey = document.getElementById('gnmkdmKey').value; - // 构造请求URL和postData + // 构造请求URL和postData var url = 'https://jwgl.whu.edu.cn/cjcx/cjcx_cxXsgrcj.html'; var params = 'doType=query&gnmkdm=' + encodeURIComponent(gnmkdmKey); - // 最终请求URL + // 最终请求URL var finalUrl = url + '?' + params; // Bind click event to the query button 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'; - // Perform the same POST request as the calculate button - // console.log(postData); - GM_xmlhttpRequest({ - method: 'POST', - url: finalUrl, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - data: postData, - onload: function(response) { - var responseData = JSON.parse(response.responseText); - let items = responseData.items; - // console.log(items); + 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 + // console.log(postData); + GM_xmlhttpRequest({ + method: 'POST', + url: finalUrl, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: postData, + onload: function(response) { + var responseData = JSON.parse(response.responseText); + let items = responseData.items; + // console.log(items); - // Only consider items where kcxzmc includes "选修" - var electiveItems = items.filter((item) => { - return item && items[item].kcxzmc && items[item].kcxzmc.includes("选修"); - }); + // Only consider items where kcxzmc includes "选修" + var electiveItems = items.filter((item) => { + // 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 - var electiveList = document.createElement('ul'); - electiveList.style.listStyleType = 'none'; - electiveList.style.border = '1px solid black'; // Add border to the list - electiveList.style.padding = '10px'; // Add some padding - electiveList.style.marginTop = '20px'; // Add margin at the top + // Display these items in a list with checkboxes + var electiveList = document.createElement('ul'); + electiveList.style.listStyleType = 'none'; + electiveList.style.border = '1px solid black'; // Add border to the list + electiveList.style.padding = '10px'; // Add some padding + electiveList.style.marginTop = '20px'; // Add margin at the top - electiveItems.forEach(item => { - var listItem = document.createElement('li'); - listItem.style.marginTop = '5px'; - listItem.style.display = 'flex'; // Use flex layout - listItem.style.alignItems = 'center'; // Center-align items vertically + electiveItems.forEach(item => { + var listItem = document.createElement('li'); + listItem.style.marginTop = '5px'; + listItem.style.display = 'flex'; // Use flex layout + listItem.style.alignItems = 'center'; // Center-align items vertically - var checkbox = document.createElement('input'); - checkbox.type = 'checkbox'; - checkbox.value = item.kcmc; - checkbox.style.marginRight = '10px'; // Add some space between the checkbox and the label - listItem.appendChild(checkbox); + var checkbox = document.createElement('input'); + checkbox.type = 'checkbox'; + checkbox.value = item.kcmc; + checkbox.style.marginRight = '10px'; // Add some space between the checkbox and the label + listItem.appendChild(checkbox); - var label = document.createElement('label'); - label.textContent = item.kcmc; - listItem.appendChild(label); + var label = document.createElement('label'); + label.textContent = item.kcmc; + listItem.appendChild(label); - electiveList.appendChild(listItem); - }); + electiveList.appendChild(listItem); + }); - // Add the list to the container - container.appendChild(electiveList); - } + // Add the list to the container + 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'; // 发送POST请求 GM_xmlhttpRequest({ - method: 'POST', - url: finalUrl, - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - data: postData, - onload: function(response) { - var responseData = JSON.parse(response.responseText); - let items = responseData.items; - // console.log(items); + method: 'POST', + url: finalUrl, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: postData, + onload: function(response) { + var responseData = JSON.parse(response.responseText); + let items = responseData.items; + // console.log(items); - // 创建变量用于存储必修成绩、选修成绩和必修学分 - var requiredScore = 0; - var electiveScore = 0; - var requiredCredits = 0; + // 创建变量用于存储必修成绩、选修成绩和必修学分 + var requiredScore = 0; + var electiveScore = 0; + var requiredCredits = 0; - // Get the selected elective courses - var selectedElectives = Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).map(input => input.value); - // Iterate through each item in the items array - for (var i = 0; i < items.length; i++) { - var item = items[i]; - var kcxzmc = item.kcxzmc; - var bfzcj = parseFloat(item.bfzcj); - var xf = parseFloat(item.xf); + // Get the selected elective courses + var selectedElectives = Array.from(container.querySelectorAll('input[type="checkbox"]:checked')).map(input => input.value); + // Iterate through each item in the items array + for (var i = 0; i < items.length; i++) { + var item = items[i]; + var kcxzmc = item.kcxzmc; + var bfzcj = parseFloat(item.bfzcj); + var xf = parseFloat(item.xf); - 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 + if (kcxzmc.includes("必修")) { requiredScore += bfzcj * xf; requiredCredits += xf; - } else { - // Only consider the non-selected elective courses for the elective score - electiveScore += bfzcj * xf; + } else if (kcxzmc.includes("选修")) { + if (selectedElectives.includes(item.kcmc)) { + // 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 electiveGrade = electiveScore * 0.002; + // 计算必修课平均成绩和选修课成绩 + var requiredGrade = requiredScore / requiredCredits; + var electiveGrade = electiveScore * 0.002; - // 在窗口中显示结果 - var resultElement = document.createElement('div'); - resultElement.style.marginTop = '10px'; - resultElement.textContent = "必修课: " + requiredGrade.toFixed(3) + ",选修课: " + electiveGrade.toFixed(3)+",总成绩:"+(requiredGrade+electiveGrade).toFixed(3); - container.appendChild(resultElement); -}})})})(); + // 在窗口中显示结果 + var resultElement = document.createElement('div'); + resultElement.style.marginTop = '10px'; + resultElement.textContent = "必修课: " + requiredGrade.toFixed(3) + ",选修课: " + electiveGrade.toFixed(3)+",总成绩:"+(requiredGrade+electiveGrade).toFixed(3); + container.appendChild(resultElement); + }})})})();