// ==UserScript==
// @name 根据时间计算餐补
// @namespace http://wiki.sankuai.com/pages/viewpage.action?pageId=355202639
// @version 0.5.1
// @description 根据时间计算餐补的User Script,适用于美团考勤系统。增加了一个按钮用于高亮日期。
// @author 好心人(包括但不限于吕欣^_^)
// @match http://kq.sankuai.info/node/tm*
// @icon http://kq.sankuai.info/static/image/logo.ico?cd0a9a2
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/15694/%E6%A0%B9%E6%8D%AE%E6%97%B6%E9%97%B4%E8%AE%A1%E7%AE%97%E9%A4%90%E8%A1%A5.user.js
// @updateURL https://update.greasyfork.icu/scripts/15694/%E6%A0%B9%E6%8D%AE%E6%97%B6%E9%97%B4%E8%AE%A1%E7%AE%97%E9%A4%90%E8%A1%A5.meta.js
// ==/UserScript==
function a() {
console.log("Start Computing")
var dates=[];
var eles=[];
if (document.querySelectorAll('html /deep/ .com-panel').length == 0) {
console.log("com-panel not load");
return setTimeout(a, 100);
} else {
Array.prototype.slice.call(document.querySelectorAll('html /deep/ .com-panel')).forEach(
// document.querySelectorAll('html /deep/ .com-panel').array().forEach(
function(item)
{
var date=item.querySelector('.com-t-day').innerText;
if(date.indexOf('/')!=-1)
return;
if(hasClass(item.children[1], 'com-delay-rest'))
// 不包括休息日加班
return;
item=item.querySelector('.com-f-time');
var endTime=item.children[1].innerText;
endTime=endTime&&parseInt(endTime.split(":")[0]);
var startTime=item.children[0].innerText; // 适用于早上忘记打卡只有晚上下班的一次刷卡记录的情况,哇咔咔
startTime=startTime&&parseInt(startTime.split(":")[0]);
if(endTime>=20 || startTime>=20) {
dates.push(date);
eles.push(item);
}
}
);
month = document.querySelector('html /deep/ h3').innerHTML;
window.canbuInfo = month + dates.join(',') + "共" + dates.length + "天," + (dates.length*18) + "元";
window.eles = eles;
insertTip(dates.length);
}
}
function clickbtn() {
document.querySelector("html /deep/ button#btn-prev").addEventListener('click', function() {setTimeout(a, 1000);});
document.querySelector("html /deep/ button#btn-next").addEventListener('click', function() {setTimeout(a, 1000);});
console.log("add click function succeed");
}
function checkbtn() {
btn = document.querySelector("html /deep/ button#btn-prev");
if(btn == null) {
console.log("wait for button");
return setTimeout(checkbtn, 10);
}
else {
clickbtn();
}
}
function insertTip(days) {
var node = document.createElement('p');
node.className = "ka-info-detail kq-info-rest"
node.innerHTML = "餐补 "+days+" 天,共 "+days*18+" 元。"
var prevNode = document.querySelector("html /deep/ p.ka-info-detail.kq-info-bad");
prevNode.parentNode.insertBefore(node, prevNode.nextSibling);
document.querySelector("html /deep/ button#btnHighlight").addEventListener('click', highlight, false);
}
function highlight() {
Array.prototype.slice.call(window.eles).forEach(
function(item)
{
item.style.webkitBoxShadow="0 0 3px 3px red"
}
);
confirm(window.canbuInfo);
}
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
setTimeout(a, 10);
setTimeout(checkbtn, 10);