您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
幫助IVE學生計算出席率及缺席率
当前为
// ==UserScript== // @name IVE出席率及缺席率計算器 // @namespace undefined // @version 1.0.3 // @description 幫助IVE學生計算出席率及缺席率 // @author Miklet // @match *://myportal.vtc.edu.hk/* // @require https://code.jquery.com/jquery-latest.js // @run-at document-start // @grant unsafeWindow // ==/UserScript== (function() { 'use strict'; $(function() { var insert_btn = document.createElement("button"); insert_btn.setAttribute("style",";padding:10px;margin:10px;background-color:#555;color:#fff;position:absolute;right:0;bottom:0;border:0;"); insert_btn.setAttribute ("id","calculate_btn"); insert_btn.innerHTML = "計算出缺率"; if($('table.hkvtcsp_wording').length){ document.body.insertBefore(insert_btn, document.body.firstChild); document.getElementById ("calculate_btn").addEventListener ( "click", function(){ var input_time = prompt("請輸入該單元的總時數"); if(input_time !== "" && input_time == parseInt(input_time, 10)){ var executeCalculation = calculate(input_time); }else{ alert('發生了錯誤'); } }, false ); } function time_convert(input_min) { var output_hr = Math.floor( input_min / 60); var output_min = input_min % 60; if (output_min !== 0) { return output_hr + "小時" + output_min + "分鐘"; } else { return output_hr + "小時"; } } function calculate(tt_input_time) { var tb_array = []; var headers = []; $('table.hkvtcsp_wording th').each(function(index, item) { headers[index] = $(item).text(); }); $('table.hkvtcsp_wording tr').has('td').each(function() { var arrayItem = {}; $('td', $(this)).each(function(index, item) { arrayItem[headers[index]] = $(item).text(); }); tb_array.push(arrayItem); }); var att_lesson = 0; var abs_lesson = 0; var late_lesson = 0; var tt_lesson_time = 0; var tt_att_time = 0; var tt_abs_time = 0; var att_time; var abs_time; var i=0; for (i = 0; i < tb_array.length; i++) { var lesson_time_array = tb_array[i]['課堂時間'].split("-"); //Lesson Count switch (tb_array[i]['']) { case 'Present': att_lesson++; break; case 'Late': late_lesson++; break; case 'Absent': abs_lesson++; break; } //ABS & ATT Caculate var arrived_time = tb_array[i]['出席時間']; var row_lesson_time_start = new Date(); var lesson_time_array_0 = lesson_time_array[0].split(':'); row_lesson_time_start.setHours(lesson_time_array_0[0], lesson_time_array_0[1]); var row_lesson_time_end = new Date(); var lesson_time_array_1 = lesson_time_array[1].split(':'); row_lesson_time_end.setHours(lesson_time_array_1[0], lesson_time_array_1[1]); var row_lesson_time_arrived = new Date(); if (arrived_time != '-') { arrived_time = arrived_time.split(':'); row_lesson_time_arrived.setHours(arrived_time[0], arrived_time[1]); if (row_lesson_time_arrived > row_lesson_time_start.setMinutes(row_lesson_time_start.getMinutes() + 10)) { row_lesson_time_start.setHours(lesson_time_array_0[0], lesson_time_array_0[1]); att_time = (row_lesson_time_end - row_lesson_time_arrived) / 1000 / 60; abs_time = (row_lesson_time_arrived - row_lesson_time_start) / 1000 / 60; } else { row_lesson_time_start.setHours(lesson_time_array_0[0], lesson_time_array_0[1]); att_time = (row_lesson_time_end - row_lesson_time_start) / 1000 / 60; abs_time = 0; } } else { att_time = 0; abs_time = (row_lesson_time_end - row_lesson_time_start) / 1000 / 60; } tt_lesson_time = tt_lesson_time + ((row_lesson_time_end - row_lesson_time_start) / 1000 / 60); tt_att_time = tt_att_time + att_time; tt_abs_time = tt_abs_time + abs_time; } var time_remain; if(tt_input_time*60*0.3>=tt_abs_time){ time_remain = (tt_input_time*60*0.3)-tt_abs_time; time_remain = time_convert(time_remain); }else{ time_remain = "/"; } alert("已上課堂時數 : "+time_convert(tt_lesson_time)+"\n\n"+ "總出席時數 : "+time_convert(tt_att_time)+"\n"+ "出席率 : "+(tt_att_time / (tt_input_time*60) * 100).toFixed(2)+"%\n\n"+ "總缺席時數 : "+time_convert(tt_abs_time)+"\n"+ "缺席率 : "+(tt_abs_time / (tt_input_time*60) * 100).toFixed(2)+"%\n\n"+ "每小時缺席率 : "+(60 / (tt_input_time*60) * 100).toFixed(2)+"%\n"+ "剩餘可缺席時數 : "+time_remain ); } }); })();