Last active
October 30, 2023 05:05
-
-
Save quangnhut123/f6f06231ae6621b7b8edbcae539de600 to your computer and use it in GitHub Desktop.
Base Checkin Advanced Color
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ==UserScript== | |
// @name Base Checkin Advanced Color | |
// @namespace base | |
// @version 0.6 | |
// @description Color base on checkin time | |
// @author Jonny | |
// @match https://checkin.base.vn/me* | |
// @icon https://static-gcdn.basecdn.net/checkin/image/fav.png | |
// @grant none | |
// ==/UserScript== | |
(function() { | |
const INTERVAL_TIME = 500; | |
const THRESHOLD = 540; | |
function addMenuItem() { | |
if ($('#checkstatus').length) return; | |
const checkButton = $("<div>", { | |
html: "Kiểm tra Timesheet", | |
id: "checkstatus", | |
class: "cta", | |
click: checkCheckinStatus | |
}); | |
$('.side').eq(2).append(checkButton); | |
$('.msg-channel').addClass('collapsed'); | |
checkCheckinStatus(); | |
} | |
function timeToMinutes(time) { | |
const [hours, minutes] = time.split(':').map(Number); | |
return (hours * 60) + minutes; | |
} | |
function compareTime(time1, time2) { | |
return timeToMinutes(time1) - timeToMinutes(time2); | |
} | |
function calcTime(timeIn, timeOut) { | |
return timeToMinutes(timeOut) - timeToMinutes(timeIn); | |
} | |
function checkCheckinStatus() { | |
$('.inner[class*="js-ts-"]').each(function() { | |
const $this = $(this); | |
const checkinInfo = $this.find('.checkin-info').first(); | |
if (checkinInfo.length) { | |
const times = checkinInfo.children().first().text().match(/(\d{2}:\d{2})/g); | |
console.log(times); | |
if(times) { | |
const [timeIn = '00:00', timeOut = '00:00'] = times; | |
if (times.length) { | |
const timeTotal = calcTime(timeIn, timeOut); | |
if (timeTotal < THRESHOLD) { | |
$this.css('backgroundColor', '#FFDAB9'); | |
} | |
$this.find('.from').css('color', compareTime(timeIn, '8:59') < 0 ? 'green' : 'red'); | |
$this.find('.to').css('color', compareTime(timeOut, '16:59') > 0 ? 'green' : 'red'); | |
} | |
} | |
} | |
}); | |
} | |
setInterval(addMenuItem, INTERVAL_TIME); | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment