-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmypoint.user.js
124 lines (106 loc) · 4.38 KB
/
mypoint.user.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
// ==UserScript==
// @name Chronos - MyPoint
// @namespace https://github.com/rtpaulino/chronosx
// @version 0.6
// @description Exibe o horário do ponto de batida da saída para completar as 8:00 de trabalho diário
// @author Rafael Paulino <[email protected]>
// @include http://10.101.40.105/Pages/MyPoint
// @supportURL https://github.com/rtpaulino/chronosx/issues
// @downloadURL https://raw.githubusercontent.com/rtpaulino/chronosx/master/mypoint.user.js
// @require http://underscorejs.org/underscore-min.js
// @require https://raw.githubusercontent.com/epeli/underscore.string/master/dist/underscore.string.min.js
// @grant none
// ==/UserScript==
var makeString = function(object) {
if (object == null || typeof object === 'undefined') return '';
return '' + object;
};
var getCurrentDate = function() {
var d = new Date();
var day = d.getDate();
var mon = d.getMonth()+1;
return s.lpad(makeString(day), 2, "0") + "/" + s.lpad(makeString(mon), 2, "0");
};
var toMin = function(hora) {
var q = hora.match(/(\d{2}):(\d{2})/);
var h = parseInt(q[1]);
var m = parseInt(q[2]);
return h*60+m;
};
var incrMin = function(hora, mins) {
mins = mins || 1;
var q = hora.match(/(\d{2}):(\d{2})/);
var h = parseInt(q[1]);
var m = parseInt(q[2]);
m = m + mins;
h = (h + Math.floor(m / 60)) % 24;
m = m % 60;
return s.lpad(makeString(h), 2, "0") + ":" + s.lpad(makeString(m), 2, "0");
};
var incrHora = function(hora, i) {
i = i || 1;
return incrMin(hora, i*60);
};
var diff = function(hora1, hora2) {
var m1 = toMin(hora1);
var m2 = toMin(hora2);
return m2 - m1;
};
var horaAtual = function() {
var d = new Date();
return s.lpad(makeString(d.getHours()), 2, "0") + ":" + s.lpad(makeString(d.getMinutes()), 2, "0");
};
$(function() {
setInterval(function () {
var date = getCurrentDate();
var tabela = $(".semana");
var trs = tabela.find("tr");
var colIndex = $(".semana").find("th:contains('"+date+"')").index();
var horaEntrada1 = trs.eq(2).find("td").eq(colIndex).text();
var horaSaida1 = trs.eq(3).find("td").eq(colIndex).text();
var horaEntrada2 = trs.eq(4).find("td").eq(colIndex).text();
var horaSaida2 = trs.eq(5).find("td").eq(colIndex).text();
if (!s.isBlank(horaEntrada1) && !s.isBlank(horaSaida1)) {
if (s.isBlank(horaEntrada2)) {
var td = trs.eq(4).find("td").eq(colIndex);
td.html("<i style='color:#999'>"+incrHora(horaEntrada2)+"</i>");
} else {
var td = trs.eq(5).find("td").eq(colIndex);
var horaFinal = incrMin(horaEntrada2, 8 * 60 - diff(horaEntrada1, horaSaida1));
if (td.text() === '') {
td.html("<b style='color:blue'>" + horaFinal + "</b>");
} else {
var faltam = diff(horaSaida1, horaEntrada1) + diff(horaSaida2, horaEntrada2);
if (faltam > 0) {
td.css('color', 'red').css('font-weight', 'bold');
} else {
td.css('color', 'green').css('font-weight', 'bold');
}
}
}
}
}, 1000);
var iframe = $("<iframe></iframe>").attr('src', 'http://10.101.40.105/Pages/Home');
iframe.css('position', 'fixed');
iframe.css('right', '5px');
iframe.css('top', '5px');
iframe.css('width', '120px');
iframe.css('height', '78px');
iframe.css('border', '1px solid #DDDDDD');
iframe.css('z-index', '10000');
iframe.appendTo($("body"));
iframe.on('load', function () {
if (!s.endsWith(this.contentWindow.location.href, 'Home')) {
window.location.reload();
} else {
$("header, footer", iframe.contents()).remove();
$(".widgets li:not(:first)", iframe.contents()).remove();
$(".widgets", iframe.contents()).removeClass('widgets').removeClass('sortable').css('padding', '0');
$('#interface', iframe.contents()).css('padding-top', '0');
$("#pageContent", iframe.contents()).css('padding', '0');
$("input[type=submit]", iframe.contents()).removeClass('big').css('margin-top', '0');
$("li[draggable] div", iframe.contents()).css('text-align', 'center');
$("li[draggable] div span", iframe.contents()).css('font-size', '35px');
}
});
});