bb-check-in

bb werp 打卡計算機

目前為 2023-08-03 提交的版本,檢視 最新版本

// ==UserScript==
// @name         bb-check-in
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  bb werp 打卡計算機
// @author       You
// @match        https://cy.iwerp.net/portal/page/new_home.xhtml
// @icon         https://www.google.com/s2/favicons?sz=64&domain=iwerp.net
// @grant        none
// @license      MIT
// ==/UserScript==

function isInCurrentWeek(dateString, firstDayOfWeek) {
  var currentDate = parseDateString(dateString);
  var weekStart = firstDayOfWeek;
    console.log(weekStart)
  var weekEnd = new Date(weekStart.getFullYear(), weekStart.getMonth(), weekStart.getDate() + 6);

  return currentDate >= weekStart && currentDate <= weekEnd;
}

function getcurrentDayOfWeek(dateString) {
  var currentDate = parseDateString(dateString);
  return currentDate.getDay();
}

function parseDateString(dateString) {
  var parts = dateString.split('/');
  var month = parseInt(parts[0], 10) - 1;
  // 月份需減1,因為 JavaScript 的月份是從 0 開始
  var day = parseInt(parts[1].split(' ')[0], 10);

  var currentDate = new Date();
  currentDate.setMonth(month);
  currentDate.setDate(day);

  return currentDate;
}

function addMinutes(time, minutes) {
  var newTime = new Date(time.getTime() + minutes * 60000);
  return newTime;
}

function formatTime(time) {
  var hours = time.getHours().toString().padStart(2, '0');
  var minutes = time.getMinutes().toString().padStart(2, '0');
  return hours + ':' + minutes;
}

function addColor(val,text){
    var retxt = "";
    if(val<0){
         retxt = '<font color="#FF0000">'+ text +'少: '+val+'</font>'
    }else{
         retxt = '<font color="blue">'+ text +'多: '+val+'</font>'
    }
    return retxt;
}



function testA(){
    setTimeout(function() {
        'use strict';
        var today = new Date();
        var currentDayOfWeek = today.getDay(); // 获取今天是星期几,0表示星期日,1表示星期一,以此类推

        // 将日期设置为本周第一天(星期日)
        today.setDate(today.getDate() - currentDayOfWeek);
        // 取得指定 ID 的元素
        var container = document.getElementById('formTemplate:attend_rec_panel_content');
        // 取得所有的 <tr> 元素
        var rows = container.getElementsByTagName('tr');
        // 初始化一個空陣列來儲存資料
        var data = [];
        var fridayStart = "";

        // 迭代所有的 <tr> 元素
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];

            // 取得每一列中的 <td> 元素
            var cells = row.getElementsByTagName('td');
            // 檢查 <td> 元素是否存在
            if (cells.length > 0) {
                var rowData = {};
                // 存放每個 <td> 的內容到對應的鍵值
                rowData.strDate = cells[0].textContent.trim();
                if(!rowData.strDate||!isInCurrentWeek(rowData.strDate,today)){
                    rowData.strStart = "";
                    rowData.strEnd = "";
                    rowData.diffMinutes = 0;
                    rowData.estimate = 0;
                    rowData.currentDayOfWeek = -1;
                }else{
                    rowData.strStart = cells[1].textContent.trim();
                    rowData.strEnd = cells[2].textContent.trim();
                    var strStart = rowData.strStart;
                    var strEnd = rowData.strEnd;
                    if(parseDateString(rowData.strDate).getDay()==5){
                        fridayStart = rowData.strStart
                        console.log("***小夫我:"+ fridayStart);
                    }

                    // 如果 strEnd 為空,則將其設為 '00:00'
                    var dateStart = new Date('1970-01-01 ' + strStart);
                    var dateEnd = new Date('1970-01-01 ' + strEnd);
                    var diffMinutes = (dateEnd - dateStart) / (1000 * 60);
                    if (!strEnd) {
                        diffMinutes = 0;
                    }
                    rowData.diffMinutes = diffMinutes;
                    if(diffMinutes>0){
                        rowData.estimate = diffMinutes-540;
                    }else{
                        rowData.estimate = 0;
                    }
                    rowData.currentDayOfWeek = getcurrentDayOfWeek(rowData.strDate);
                }
                // 把每列的資料加入到陣列中
                var cell1 = row.insertCell();
                if(diffMinutes!=0){
                    cell1.textContent = rowData.estimate;
                }
                data.push(rowData);
            }
        }

        // 印出抓取到的資料
        var totalMin = 0;
        var ifMaintain = 0;
        var estimate = 0;
        var estimateMaintain = 0;
        for (var j = 0; j < data.length; j++) {
            console.log("日期:" + data[j].strDate);
            console.log("開始時間:" + data[j].strStart);
            console.log("結束時間:" + data[j].strEnd);
            console.log("分鐘數:" + data[j].diffMinutes);
            console.log("今天分鐘數:" + data[j].estimate);
            console.log("星期:" + data[j].currentDayOfWeek);
            console.log("---");
            totalMin += data[j].diffMinutes;
            estimate += data[j].estimate;
            if(data[j].currentDayOfWeek !=3){
                ifMaintain += data[j].diffMinutes;
                estimateMaintain += data[j].estimate;
            }
        }
        var xx=rows[0].insertCell();
        xx.innerHTML = addColor(estimate,'') + '<br>' + addColor(estimateMaintain,'[維護]');
        console.log(totalMin);
        if(currentDayOfWeek==5){
            var aa= 2700 - totalMin;
            var bb= 2160 - ifMaintain;
            if(fridayStart!==""){
                console.log("***小夫我又:"+ fridayStart);
                var fridayS = new Date('1970-01-01 ' + fridayStart);
                var newTime = addMinutes(fridayS, aa);
                var hasMaintainTime = addMinutes(fridayS, bb);
            }
            console.log(fridayStart);
            console.log(aa);
            console.log(newTime);
            //alert(formatTime(newTime) +" let 夠 \n若本週維護 \n"+formatTime(hasMaintainTime) +" let 夠");
            var tbody = document.getElementById('formTemplate:attend_rec_datatable_data');
            var newRow = document.createElement('tr');
            var cell101 = document.createElement('td');
            var cell102 = document.createElement('td');
            var cell11 = document.createElement('td');
            var cell12 = document.createElement('td');
            cell102.textContent = "幾點可走";
            cell11.textContent = "正常:" + formatTime(newTime);
            cell12.textContent = "維護:" + formatTime(hasMaintainTime);
            newRow.appendChild(cell101);
            newRow.appendChild(cell102);
            newRow.appendChild(cell12);
            newRow.appendChild(cell11);
            tbody.appendChild(newRow);
            return rowData;
        }
    },2000); // 等待 1000 毫秒(1 秒)
}

(function() {

    var rowData = testA();


    // Your code here...
})();