bb-check-in

bb werp 打卡計算機

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

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==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...
})();