Last active
August 29, 2015 14:27
-
-
Save marcelotmelo/4c630378bc69e335c6c6 to your computer and use it in GitHub Desktop.
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== | |
// @version 0.14 | |
// @name Controle de Frequencia - Somar horas mes | |
// @author marcelotmelo (https://github.com/marcelotmelo) | |
// @namespace http://www.mec.gov.br/ | |
// @description Calcula o saldo de horas a partir do controle de frequencia do MEC | |
// @updateURL https://gist.github.com/marcelotmelo/4c630378bc69e335c6c6/raw/e716c63b654f4da985f78ba625e386321b948729/intramec-saldo-horas-mes.user.js | |
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js | |
// @match http://10.1.26.151/sistemas/SCF/listaFrequencia.asp?matricula=*&mes=*&ano=*&cpf=* | |
// @grant GM_addStyle | |
// @grant GM_getResourceText | |
// @copyright 2014, mec.gov.br | |
// ==/UserScript== | |
//Avoid conflicts | |
this.$ = this.jQuery = jQuery.noConflict(true); | |
function mostraSaldo() { | |
var positivo = 0; | |
var negativo = 0; | |
var creditoNAut = 0; | |
var ausente = 0; | |
$("form[action='logonFrequencia.asp'] table:nth-child(2) tr td:nth-child(10)").each( | |
function() { | |
var saldo = $(this).text(); | |
if(saldo && saldo.trim().length > 0 && saldo != 'Crédito ñ Aut.') { | |
if(saldo.indexOf('-') != -1){ | |
var critica = $(this).next().next().text().trim(); | |
if(critica != '002' && critica != 'REG.INCOMP.') { | |
saldo = saldo.replace('-', ''); | |
negativo += converteSegundos(saldo); | |
} | |
if(critica == 'REG.AUSENTE') { | |
saldo = saldo.replace('-', ''); | |
ausente += converteSegundos(saldo); | |
} | |
} else { | |
positivo += converteSegundos(saldo); | |
var credito = $(this).next().text().trim(); | |
if(credito && credito.length > 0 && credito != 'Crédito ñ Aut.') { | |
creditoNAut += converteSegundos(credito); | |
} | |
} | |
} | |
}); | |
saldo = 0; | |
sinal = 1; | |
var texto = ''; | |
if(negativo > positivo) { | |
sinal = -1; | |
saldo = negativo - positivo; | |
texto = 'Saldo Negativo: '; | |
} else if (positivo > negativo) { | |
sinal = 1; | |
saldo = positivo - negativo; | |
texto = 'Saldo Positivo: '; | |
} else { | |
texto = 'Saldo Zerado: '; | |
} | |
texto += converteHoraMinutos(saldo); | |
if(ausente > 0) { | |
var compAusente = 0; | |
texto += '\nAusente: ' + converteHoraMinutos(ausente); | |
if(saldo > ausente) { | |
compAusente = saldo - ausente; | |
} else if (ausente > saldo) { | |
compAusente = ausente - saldo; | |
} | |
texto += '\nSaldo sem Ausente: ' + converteHoraMinutos(compAusente); | |
} | |
if (creditoNAut) { | |
texto += '\nCredito não autorizado: ' + converteHoraMinutos(creditoNAut); | |
var saldoCred = 0; | |
//saldo negativo | |
if(sinal < 0) { | |
//saldo continua negativo | |
if(creditoNAut < saldo) { | |
saldoCred = saldo - creditoNAut; | |
texto += '\nTotal: -' + converteHoraMinutos(saldoCred); | |
//saldo positivo ou zero | |
} else { | |
saldoCred = creditoNAut - saldo; | |
texto += '\nTotal: ' + converteHoraMinutos(saldoCred); | |
} | |
//saldo positivo | |
} else { | |
saldoCred = saldo + creditoNAut; | |
texto += '\nTotal: ' + converteHoraMinutos(saldoCred); | |
} | |
} | |
alert(texto); | |
}; | |
function converteSegundos(hora) { | |
var separa = hora.split(':'); // separa no : | |
// hora sao 60 minutos, minutos 60 segundos | |
var segundos = ((+separa[0]) * 60 * 60) + ((+separa[1]) * 60); | |
return segundos; | |
} | |
function converteHoraMinutos(segundos) { | |
var horas = Math.floor(segundos / 3600); | |
var minutos = Math.floor((segundos - (horas * 3600)) / 60); | |
if(minutos < 10) { | |
minutos = '0' + minutos; | |
} | |
if(horas < 10) { | |
horas = '0' + horas; | |
} | |
return horas + ':' + minutos; | |
} | |
var btnCalcula = document.createElement("input"); | |
btnCalcula.type = "button"; | |
btnCalcula.value = "Calcular"; | |
btnCalcula.onclick = mostraSaldo; | |
$(document).ready( | |
function() { | |
var tbl = $("form[action='logonFrequencia.asp'] table:first-child tr:first-child td:first-child"); | |
if($(tbl).text() === 'Matrícula :') { | |
var frm = $("form[action='logonFrequencia.asp']"); | |
$(frm).append($(btnCalcula)); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment