<commit_before>// ==UserScript==
// @name       Melhora Portal do Servidor
// @namespace  https://github.com/luizluca/melhora-sgrh
// @version    1.5
// @description Adiciona mais informações ao Portal do Servidor
// @grant       none
// @updateURL https://raw.githubusercontent.com/luizluca/melhora-sgrh/master/melhora-sgrh.user.js
// @downloadURL https://raw.githubusercontent.com/luizluca/melhora-sgrh/master/melhora-sgrh.user.js
// @match      https://sistemas4.tre-sc.gov.br/sadAdmSRH/frequencianacional/espelhoPontoMensal.do*
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_recuperar.action
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/_/EspelhoPontoMesAction_recuperar
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_recuperar
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_formEspelhoPontoMes_consultar
// @copyright  2016+, <NAME> <<EMAIL>>, <NAME> <<EMAIL>>
// @require    https://code.jquery.com/jquery-latest.js
// ==/UserScript==

/*global $:false, jQuery:false */
/*jshint multistr: true */

function pad (str, max) {
  return (""+str).length < max ? pad("0" + str, max) : str;
}

function time2str(aTime,hourMinuteSecond=false) {
    if (isNaN(aTime)) aTime=0;

    var aSig=((aTime<0)?"-":"");
    var aHour;
    var aMin;
    var aTimeStr="";
    if (hourMinuteSecond) {
        // Second resolution
        aTime=Math.floor(aTime/(1000));
        var aSec=aTime%60;
        aTimeStr=":"+pad(Math.abs(aSec),2);
        aTime=(aTime-aSec)/60;
    } else {
        // Minute resolution
        aTime=Math.floor(aTime/(1000*60));
    }
    aMin=aTime%60;
    aTimeStr=":"+pad(Math.abs(aMin),2)+aTimeStr;
    aHour=(aTime-aMin)/60;

    return aSig+pad(Math.abs(aHour),2)+aTimeStr;
}

function str2time(aTimeStr) {
    var horas=parseInt(aTimeStr.substr(0,aTimeStr.indexOf(":")));
    var minutos=parseInt(aTimeStr.substr(aTimeStr.indexOf(":")+1));
    if (aTimeStr[0]=="-") minutos=-minutos;
    return (horas*60+minutos)*60*1000;
}

function str2date(aDate,aLang) {
    switch(aLang) {
        case "pt_BR":
            aDate=aDate.
               replace(/Fev/i,"Feb").
               replace(/Abr/i,"Apr").
               replace(/Mai/i,"May").
               replace(/Ago/i,"Aug").
               replace(/Set/i,"Sep").
               replace(/Out/i,"Oct").
               replace(/Dez/i,"Dec").
               toString();
    }
    aDate=aDate.
        replace(/Jan/i,"01").
        replace(/Fev/i,"02").
        replace(/Mar/i,"03").
        replace(/Apr/i,"04").
        replace(/May/i,"05").
        replace(/Jun/i,"06").
        replace(/Jul/i,"07").
        replace(/Aug/i,"08").
        replace(/Sep/i,"09").
        replace(/Oct/i,"10").
        replace(/Nov/i,"11").
        replace(/Dec/i,"12").
        toString();
    aDate=aDate.split("/").reverse().join("/");
    return new Date(aDate);
}

Date.prototype.days_in_month = function() {
    return (new Date(this.getFullYear(),this.getMonth()+1,0)).getDate();
};

class EspelhoPonto {
    constructor(_tabela) {
        if (_tabela === undefined) {
            this.tabela=$("#tblEspelhoPontoMesCorrente tr");
            this.async=true;
        } else {
            this.tabela=_tabela;
            this.async=false;
        }
        this.mes=str2date(this.tabela[1].children[0].innerHTML,"pt_BR");
        this.num_dias=this.mes.days_in_month()
        this.saldo_mes=null;
        this.saldo_mes_anterior=null;
        this.atualiza_tudo();
    }

    agora() {
        var agora=new Date();
        var hoje=new Date(agora.getFullYear(),agora.getMonth(),agora.getDate())
        var hoje_str=hoje.toLocaleString().slice(0, 10);
        var found=this.tabela.find("td:contains('"+hoje_str+"')")
        if (found.length>0) {
            var linha=found.parent();
            var soma_dia=0
            var expediente=0;
            if ($(linha).hasClass("fundo2")) {
                expediente=0;
            } else {
                // Expediente 8h a partir de Abril de ano eleitoral
                if ((hoje.getFullYear()%2==0) && (hoje.getMonth() >= 3)) {
                    expediente=7*60*60*1000;
                } else {
                    expediente=6*60*60*1000;
                }
            }

            for (var j=0;j<3;j++) {
                var entrada=linha.children()[j*2+1].innerHTML;
                if (entrada=="") break;
                entrada=str2time(entrada);
                var saida=linha.children()[j*2+2];
                if ($(saida).hasClass("dinamico") || (saida.innerHTML=="")) {
                    saida=(agora.getTime()-hoje.getTime())
                    this.atualiza_campo(linha.children()[j*2+2],time2str(saida))
                } else {
                    saida=str2time(saida.innerHTML);
                }

                soma_dia+=saida-entrada
            }
            this.atualiza_campo(linha.children()[8],time2str(soma_dia));
            this.atualiza_campo(linha.children()[9],time2str(soma_dia-expediente));
        } else {
            // Mẽs anterior mas não fechado ainda.
        }
        this.recarrega();
        this.atualiza_resumos();
    }

    recarrega(){
        this.jornada=new Array(this.num_dias);
        this.excedentes=new Array(this.num_dias);
        this.autorizacoesHE=new Array(this.num_dias);
        for (var i=1;i<=this.num_dias;i++) {
            var linha=this.tabela[i]
            var dia=linha.children[0].innerHTML;
            //for (var j=0;j<3;j++) {
            //    var entrada=linha.children[j*2+1].innerHTML;
            //    var saida=linha.children[j*2+2].innerHTML;
            //}
            var total=0;
            var excedente=0;
            var autorizacaoHE=false;
            if (linha.children.length==16) {
                total=str2time(linha.children[8].innerHTML);
                excedente=str2time(linha.children[9].innerHTML);
                autorizacaoHE=linha.children[15].children.length>0;
            }
            this.jornada[i-1]=total;
            this.excedentes[i-1]=excedente;
            this.autorizacoesHE[i-1]=autorizacaoHE<commit_msg>Ignora a linha de hoje sem entradas horárias<commit_after>// ==UserScript==
// @name       Melhora Portal do Servidor
// @namespace  https://github.com/luizluca/melhora-sgrh
// @version    1.6
// @description Adiciona mais informações ao Portal do Servidor
// @grant       none
// @updateURL https://raw.githubusercontent.com/luizluca/melhora-sgrh/master/melhora-sgrh.user.js
// @downloadURL https://raw.githubusercontent.com/luizluca/melhora-sgrh/master/melhora-sgrh.user.js
// @match      https://sistemas4.tre-sc.gov.br/sadAdmSRH/frequencianacional/espelhoPontoMensal.do*
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_recuperar.action
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/_/EspelhoPontoMesAction_recuperar
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_recuperar
// @match      https://sistemas5.tre-sc.gov.br/portal-servidor/EspelhoPontoMesAction_formEspelhoPontoMes_consultar
// @copyright  2016+, <NAME> <<EMAIL>>, <NAME> <<EMAIL>>
// @require    https://code.jquery.com/jquery-latest.js
// ==/UserScript==

/*global $:false, jQuery:false */
/*jshint multistr: true */

function pad (str, max) {
  return (""+str).length < max ? pad("0" + str, max) : str;
}

function time2str(aTime,hourMinuteSecond=false) {
    if (isNaN(aTime)) aTime=0;

    var aSig=((aTime<0)?"-":"");
    var aHour;
    var aMin;
    var aTimeStr="";
    if (hourMinuteSecond) {
        // Second resolution
        aTime=Math.floor(aTime/(1000));
        var aSec=aTime%60;
        aTimeStr=":"+pad(Math.abs(aSec),2);
        aTime=(aTime-aSec)/60;
    } else {
        // Minute resolution
        aTime=Math.floor(aTime/(1000*60));
    }
    aMin=aTime%60;
    aTimeStr=":"+pad(Math.abs(aMin),2)+aTimeStr;
    aHour=(aTime-aMin)/60;

    return aSig+pad(Math.abs(aHour),2)+aTimeStr;
}

function str2time(aTimeStr) {
    var horas=parseInt(aTimeStr.substr(0,aTimeStr.indexOf(":")));
    var minutos=parseInt(aTimeStr.substr(aTimeStr.indexOf(":")+1));
    if (aTimeStr[0]=="-") minutos=-minutos;
    return (horas*60+minutos)*60*1000;
}

function str2date(aDate,aLang) {
    switch(aLang) {
        case "pt_BR":
            aDate=aDate.
               replace(/Fev/i,"Feb").
               replace(/Abr/i,"Apr").
               replace(/Mai/i,"May").
               replace(/Ago/i,"Aug").
               replace(/Set/i,"Sep").
               replace(/Out/i,"Oct").
               replace(/Dez/i,"Dec").
               toString();
    }
    aDate=aDate.
        replace(/Jan/i,"01").
        replace(/Fev/i,"02").
        replace(/Mar/i,"03").
        replace(/Apr/i,"04").
        replace(/May/i,"05").
        replace(/Jun/i,"06").
        replace(/Jul/i,"07").
        replace(/Aug/i,"08").
        replace(/Sep/i,"09").
        replace(/Oct/i,"10").
        replace(/Nov/i,"11").
        replace(/Dec/i,"12").
        toString();
    aDate=aDate.split("/").reverse().join("/");
    return new Date(aDate);
}

Date.prototype.days_in_month = function() {
    return (new Date(this.getFullYear(),this.getMonth()+1,0)).getDate();
};

class EspelhoPonto {
    constructor(_tabela) {
        if (_tabela === undefined) {
            this.tabela=$("#tblEspelhoPontoMesCorrente tr");
            this.async=true;
        } else {
            this.tabela=_tabela;
            this.async=false;
        }
        this.mes=str2date(this.tabela[1].children[0].innerHTML,"pt_BR");
        this.num_dias=this.mes.days_in_month()
        this.saldo_mes=null;
        this.saldo_mes_anterior=null;
        this.atualiza_tudo();
    }

    agora() {
        var agora=new Date();
        var hoje=new Date(agora.getFullYear(),agora.getMonth(),agora.getDate())
        var hoje_str=hoje.toLocaleString().slice(0, 10);
        var found=this.tabela.find("td:contains('"+hoje_str+"')")
        if (found.length>0) {
            var linha=found.parent();
            var soma_dia=0
            var expediente=0;
            if ($(linha).hasClass("fundo2")) {
                expediente=0;
            } else {
                // Expediente 8h a partir de Abril de ano eleitoral
                if ((hoje.getFullYear()%2==0) && (hoje.getMonth() >= 3)) {
                    expediente=7*60*60*1000;
                } else {
                    expediente=6*60*60*1000;
                }
            }

            for (var j=0;j<3;j++) {
                var entrada=linha.children()[j*2+1].innerHTML;
                if (entrada=="") break;
                entrada=str2time(entrada);
                if (isNaN(entrada)) break;
                var saida=linha.children()[j*2+2];
                if ($(saida).hasClass("dinamico") || (saida.innerHTML=="")) {
                    saida=(agora.getTime()-hoje.getTime())
                    this.atualiza_campo(linha.children()[j*2+2],time2str(saida))
                } else {
                    saida=str2time(saida.innerHTML);
                }
                soma_dia+=saida-entrada
            }
            if (j>0) {
                this.atualiza_campo(linha.children()[8],time2str(soma_dia));
                this.atualiza_campo(linha.children()[9],time2str(soma_dia-expediente));
            }
        } else {
            // Mẽs anterior mas não fechado ainda.
        }
        this.recarrega();
        this.atualiza_resumos();
    }

    recarrega(){
        this.jornada=new Array(this.num_dias);
        this.excedentes=new Array(this.num_dias);
        this.autorizacoesHE=new Array(this.num_dias);
        for (var i=1;i<=this.num_dias;i++) {
            var linha=this.tabela[i]
            var dia=linha.children[0].innerHTML;
            //for (var j=0;j<3;j++) {
            //    var entrada=linha.children[j*2+1].innerHTML;
            //    var saida=linha.children[j*2+2].innerHTML;
            //}
            var total=0;
            var excedente=0;
            var autorizacaoHE=false;
            if (linha.children.length==16) {
                total=str2time(linha.children[8].innerHTML);
                excedente=str2time(linha.children[9].innerHTML);
                autorizacaoHE=linha.children[15].children.length>0;
            }
            this.jornada[i-1]=total;
            this.excedentes[i-1]=excedente;
            this.autorizacoesHE[i-1]=autorizacaoHE
{'fraction_non_alphanumeric': 0.16432, 'fraction_numerical': 0.02328, 'mean_word_length': 2.0943069306930693, 'pattern_counts': {'":': 12, '<': 25, '<?xml version=': 0, '>': 22, 'https://': 18, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4361071', 'n_tokens_mistral': 4549, 'n_tokens_neox': 4391, 'n_words': 535}