1/** 2 * 3 */ 4 5var fuvUsuarioLogado = null; 6 7function jsGlobalLoadScript(url, callback, charset){ 8 var script = document.createElement("script"); 9 script.type = "text/javascript"; 10 11 if (typeof charset != "undefined") { 12 script.charset = charset; 13 } 14 15 if (script.readyState) { //IE 16 script.onreadystatechange = function() { 17 if ((script.readyState == "loaded") || (script.readyState == "complete")) { 18 script.onreadystatechange = null; 19 callback(); 20 } 21 }; 22 } 23 else { //Others 24 script.onload = function() { 25 callback(); 26 }; 27 } 28 script.src = url; 29 document.getElementsByTagName("head")[0].appendChild(script); 30} 31 32function fStartFuvAdmin(d) { 33 if ((typeof d.codigo_usuario !== "undefined") && (d.codigo_usuario !== "") && (parseInt(d.codigo_usuario) !== 0)) { 34 if ((typeof d.codigo_usuario_master !== "undefined") && (d.codigo_usuario_master!=="") && (parseInt(d.codigo_usuario_master) !== 0)) { 35 var fuvAdmin = new FuvAdmin("idDIVLogoFuvest","idFuvAdmin"); 36 } 37 } 38 39 if ((typeof fuvUsuarioLogado != "undefined") && (fuvUsuarioLogado != null)) { 40 fuvUsuarioLogado.codigo_perfil = parseInt(fuvUsuarioLogado.codigo_perfil); 41 42 var o = $("#myNavbar ul li.dropdown:contains(Financeiro) ul"); 43 if (o.length == 0) { 44 o = $('#myNavbar ul'); 45 } 46 47 //if ((o.length > 0) && (typeof fuvUI != "undefined")) { // desabilitar temporariamente 48 if (false) { 49 var a = [2, 12, 13, 36]; 50 51 if (a.indexOf(fuvUsuarioLogado.codigo_perfil) >= 0) { 52 if (typeof pell === "undefined") { 53 jQuery.getScript("/js/pell.min.js").done(function() { 54 fuvUI.getCSS("/css/pell.min.css"); 55 }); 56 } 57 58 fuvUI.loadClass( 59 typeof fuvDlgConst === "undefined", 60 "/js/fuv_dialogos.js", 61 function() { 62 fuvUI.loadClass( 63 typeof FuvDadosFinanceiros === "undefined", 64 "/js/fuv_financeiro.js", 65 function() { 66 // verifica se existem pendências financeiras 67 fuvVerificaDadosFinanceiros = new FuvVerificaDadosFinanceiros('idSplashErrosFinanceiros', fuvUsuarioLogado, function(dados) { 68 try { 69 o.append('<li><a id="idMenuItem_EditarDadosFinanceiros" href="javascript:void(0)"><span style="display:inline-block;width:24px;
69font-family:FontAwesome;"><\/span>Minhas Informações Financeiras<\/a><\/li>'); 70 $('#idMenuItem_EditarDadosFinanceiros').click(function(e) { 71 e.stopPropagation(); 72 var fuvDadosFinanceiros = new FuvDadosFinanceiros('idDadosFinanceirosUsuario'); 73 }); 74 75 o.append('<li><a id="idMenuItem_Meus_Vencimentos" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;"><\/span>Vencimentos Recebidos<\/a><\/li>'); 76 $('#idMenuItem_Meus_Vencimentos').click(function(e) { 77 e.stopPropagation(); 78 alert('não implementado'); 79 }); 80 81 if (dados.resposta.lista_informes_rendimento.length > 0) { 82 o.append('<li><a id="idMenuItem_Meus_Informes" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;"><\/span>Informes de Rendimento IRPF<\/a><\/li>'); 83 $('#idMenuItem_Meus_Informes').click(function(e) { 84 e.stopPropagation(); 85 86 var b = $(this), x = b.offset().left - $(window).scrollLeft(), y = b.offset().top - $(window).scrollTop(), items = [], i; 87 88 for(i = 0; i < dados.resposta.lista_informes_rendimento.length; i++) { 89 items.push([ 90 dados.resposta.lista_informes_rendimento[i].ir_caption, 91 function(index) { 92 return function() { 93 window.location.href = "/servicos/arquivos/atividades/obtem_arquivo_ex/informe/" + dados.resposta.lista_informes_rendimento[index].ir_code; 94 } 95 }(i), 96 true 97 ]); 98 } 99 100 var menu = new FuvApresentaMenu('idMenuItem_Meus_Informes_Menu', x + 80, y + 20, 240, 0, items, 10000); 101 102 }); 103 } 104 105 if (dados.resposta.pastas_coordenacao.numero > 0) { 106 o.append('<li><a id="idMenuItem_EditarColaboradoresAlocados" href="javascript:void(0)"><span style="display:inline-block;width:24px;
106font-family:FontAwesome;"><\/span>Gerenciar Colaboradores (' + dados.resposta.pastas_coordenacao.numero + ' pastas)<\/a><\/li>'); 107 $('#idMenuItem_EditarColaboradoresAlocados').click(function(e) { 108 e.stopPropagation(); 109 var fuvGerenciarColaboradoresAlocados = new FuvGerenciarColaboradoresAlocados('idGerenciarColaboradoresAlocados'); 110 }); 111 } 112 113 if ((fuvUsuarioLogado.codigo_perfil == 2) || (fuvUsuarioLogado.codigo_perfil == 36)) { 114 115 o.append('<li><a id="idMenuItem_GerenciarPastas" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;"><\/span>Gerenciar Pastas<\/a><\/li>'); 116 $('#idMenuItem_GerenciarPastas').click(function(e) { 117 e.stopPropagation(); 118 var fuvGerenciamentoPastas = new FuvGerenciamentoPastas("idGerenciamentoPastas", fuvUsuarioLogado, 1000); 119 }); 120 121 o.append('<li><a id="idMenuItem_GerenciarBancos" href="javascript:void(0)"><span style="display:inline-block;width:24px;
121font-family:FontAwesome;"><\/span>Gerenciar Bancos<\/a><\/li>'); 122 $('#idMenuItem_GerenciarBancos').click(function(e) { 123 e.stopPropagation(); 124 var fuvBancos = new FuvBancos('idMenu_Gerenciamento_Bancos'); 125 }); 126 127 o.append('<li><a id="idMenuItem_Valores_Padrao" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;"><\/span>Valores-padrão do Sistema<\/a><\/li>'); 128 $('#idMenuItem_Valores_Padrao').click(function(e) { 129 e.stopPropagation(); 130 var fuvPadroesFinanceiros = new FuvPadroesFinanceiros('idMenuItem_Valores_Padrao_Janela'); 131 }); 132 133 o.append('<li><a id="idMenuItem_Parametros_Financeiros_Edital" href="javascript:void(0)"><span style="display:inline-block;width:24px;font-family:FontAwesome;"><\/span>Parâmetros Financeiros dos Editais<\/a><\/li>'); 134 $('#idMenuItem_Parametros_Financeiros_Edital').click(function(e) { 135 e.stopPropagation(); 136 var fuvParametrosEdital = new FuvParametrosEdital('idMenuItem_Parametros_Financeiros_Edital_Janela'); 137 }); 138 139 o.append('<li><a id="idMenuItem_Tabelas_Basicas_Totvs" href="javascript:void(0)"><span style="display:inline-block;width:24px;
139font-family:FontAwesome;"><\/span>Atualizar Tabelas Básicas da TOTVS<\/a><\/li>'); 140 $('#idMenuItem_Tabelas_Basicas_Totvs').click(function(e) { 141 e.stopPropagation(); 142 var fuvGerenciamentoFinanceiroSistema = new FuvGerenciamentoFinanceiroSistema('idMenuItem_Tabelas_Basicas_Totvs_Janela'); 143 }); 144 145 } 146 147 } 148 catch(e) { 149 console.log(e.message); 150 } 151 }); 152 }, 153 function() { 154 console.log('falha ao carregar fuv_financeiro.js') 155 } 156 ) 157 }, 158 function() { 159 console.log('falha ao carregar fuv_dialogos.js') 160 } 161 ); 162 163 } 164 165 } 166 } 167 168} 169 170function fWaitUntilUserIsReady(nTimeOut, f) { 171 window.setTimeout(function(nTimeOut1,f1){ 172 return function() { 173 if (fuvUsuarioLogado==null) { 174 fWaitUntilUserIsReady(nTimeOut1, f1); 175 } 176 else { 177 f1(); 178 } 179 } 180 }(nTimeOut,f), nTimeOut); 181} 182 183class TFuvHistograma { 184 constructor (id, d) { 185 this.id = id; 186 this.d = d; 187 this.index = 0; 188 this.cBarColor = 'rgb(200,200,255)'; 189 $(window).resize(function(t) { 190 return function(){ 191 t.refresh(); 192 } 193 }(this)).resize(); 194 } 195 196 refresh(){ 197 var c = ''; 198 var d = this.d.result[this.index]; 199 var i; 200 var o = $('#'+this.id); 201 var w = o.width(); 202 var h = 400; 203 var nMax = 45; 204 var aVal = []; 205 for(i=0;i<=nMax;i++) { 206 aVal[i] = 0; 207 } 208 var nMaxX = 0; 209 var nMaxY = 0; 210 console.log('d=',d) 211 for(i=0;i<d.val.length;i++) { 212 aVal[d.val[i].n] = d.val[i].t; 213 if (d.val[i].t>0) { 214 if (d.val[i].n>nMaxX) { 215 nMaxX = d.val[i].n; 216 } 217 if (d.val[i].t>nMaxY) { 218 nMaxY = d.val[i].t; 219 } 220 } 221 } 222 var ix,hb,wb = w/(nMaxX+2); 223 224 c = '<div style="padding:4px;border-bottom:solid 1px gray;color:gray;">'; 225 c += '<p id="'+this.id+'_do_change_graph" style="font-weight:bold;font-size:20px;cursor:pointer;color:black;margin:4px 0px 4px 0px;"><span id="'+this.id+'_icon" class="cFAW">
225<\/span> '+d.title+'<\/p>'; 226 c += '<div id="'+this.id+'_change_graph" style="display:none;">' 227 c += '<p style="font-size:18px;font-weight:bold;margin:2px 0px 2px 10px;">Alterar para:<\/p>'; 228 for(i=0;i<this.d.result.length;i++) { 229 if (i!=this.index) { 230 c += '<p id="'+this.id+'_p_'+i+'" style="font-size:16px;cursor:pointer;margin:4px 0px 4px 40px" data-index="'+i+'">• '+this.d.result[i].title+'<\/p>'; 231 } 232 } 233 c += '<p style="font-size:9px;">Tempo para extrair informações da tabela: '+this.d.time+'s<\/p>' 234 c += '<p style="font-size:9px;">Diretoria: '+this.d.diretoria+'<\/p>' 235 c += '<p style="font-size:9px;">Escola Origem: '+this.d.escola+'<\/p>' 236 c += '<\/div>'; 237 c += '<\/div>'; 238 c += '<div id="'+this.id+'_graph"><\/div>'; 239 $('#'+this.id).html(c); 240 241 $('#'+this.id+'_do_change_graph').click(function(t1) { 242 return function() { 243 $('#'+t1.id+'_change_graph').toggle(); 244 if ($('#'+t1.id+'_change_graph').is(':visible')) { 245 $('#'+t1.id+'_icon').html(''); 246 } 247 else { 248 $('#'+t1.id+'_icon').html(''); 249 } 250 251 } 252 }(this)); 253 254 255 $("[id^='"+this.id+"_p_']").click(function(t1) { 256 return function() { 257 t1.index = parseInt($(this).data('index')); 258 t1.refresh(); 259 } 260 }(this)); 261 262 263 if (wb<12) { // histograma na vertical - simplificado 264 h = w-100; 265 $('#'+this.id+'_graph').css({"height":""}); 266 267 c = ''; 268 for(i=0;i<d.medias.length;i++) { 269 if (i==0) { 270 c += '<table border=1 cellspacing=0 cellpadding=0 style="margin:10px 0px 10px 0px;font-size:16px;border-collapse:collapse;border:solid 1px gray;">'; 271 c += '<tr style="font-weight:bold;"><td style="padding:2px;">Grupo<\/td><td style="padding:2px;">Média<\/td><\/tr>'; 272 } 273 c += '<tr>'; 274 c += '<td style="padding:2px;">'+d.medias[i].title+'<\/td>'; 275 c += '<td style="padding:2px;text-align:right;">'+d.medias[i].val.toFixed(2)+'<\/td>'; 276 c += '<\/tr>'; 277 } 278 if (d.medias.length>0) { 279 c += '<\/table>' 280 } 281 282 c += '<table border=0 cellspacing=0 cellpadding=0 style="border-collapse:collapse;font-size:16px;">'; 283 c += '<tr style="height:20px;border-bottom:solid 1px gray;">'; 284 c += '<td style="text-align:right;padding-right:5px;font-size:8px;font-weight:bold;border-right:solid 1px gray;">ACERTOS<\/td>'; 285 c += '<td style="width:100%;font-size:8px;font-weight:bold;padding-left:5px;">QUANTIDADE<\/td>'; 286 c += '<\/tr>'; 287 for(i=0;i<=nMaxX;i++) { 288 hb = h*aVal[i]/nMaxY; 289 c += '<tr style="height:20px;">'; 290 c += '<td style="text-align:right;padding-right:10px;font-size:12px;">'+i+'<\/td>'; 291 c += '<td style="width:100%"><div style="height:20px;background-color:'+this.cBarColor+';float:left;font-size:9px;color:maroon;width:'+hb+'px;"><\/div><span style="margin-left:5px;">'+aVal[i]+'<\/span><\/td>'; 292 c += '<\/tr>'; 293 } 294 c += '<\/table>'; 295 $('#'+this.id+'_graph').html(c); 296 } 297 else { // histograma normal 298 c = ''; 299 300 $('#'+this.id+'_graph').css({"position":"relative"}); 301 $('#'+this.id+'_graph').height(h); 302 303 for(i=0;i<=nMaxX;i++) { 304 hb = (h-30-50)*aVal[i]/nMaxY; 305 c += '<div id="'+this.id+'_bar_'+i+'" data-bar="'+i+'" style="position:absolute;cursor:crosshair;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*i)+'px;bottom:30px;border:solid 1px black;background-color:'+this.cBarColor+';"><\/div>' 306 c += '<div style="position:absolute;width:'+wb+'px;height:24px;left:'+(5+wb*i)+'px;bottom:4px;text-align:center;font-size:8px;">'+i+'<\/div>' 307 c += '<div style="position:absolute;width:1px;height:4px;left:'+(5+wb*(i+0.5))+'px;bottom:28px;border-left:solid 1px black;"><\/div>' 308 } 309 310 for(i=0;i<=nMaxX;i++) { 311 hb = (h-30-50)*aVal[i]/nMaxY; 312 c += '<div id="'+this.id+'_val_'+i+'" style="position:absolute;display:none;text-align:center;width:60px;height:20px;left:'+(5+wb*(i+0.5)-30)+'px;bottom:'+(40+hb+2)+'px;color:blue;font-size:10px;font-weight:bold;">'+aVal[i]+'<\/div>'; 313 } 314 315 316 // desenha as médias 317 for(i=0;i<d.medias.length;i++) { 318 hb = h-60+10*i; 319 if (d.medias[i].val>=(nMaxX/2)) { 320 ix = d.medias[i].val+0.5; 321 c += '<div style="position:absolute;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*ix)+'px;bottom:30px;border-left:solid 2px maroon;border-top:solid 2px maroon;"><\/div>' 322 c += '<div style="position:absolute;height:12px;left:'+(5+wb*ix+wb+2)+'px;bottom:'+(30+hb-7)+'px;font-size:9px;">'+d.medias[i].title+'<\/div>' 323 } 324 else { 325 ix = d.medias[i].val-0.5; 326 c += '<div style="position:absolute;width:'+wb+'px;height:'+hb+'px;left:'+(5+wb*ix)+'px;bottom:30px;border-right:solid 1px black;border-top:solid 1px black;"><\/div>' 327 c += '<div style="position:absolute;height:12px;right:'+(5+wb*ix-2+wb)+'px;bottom:'+(30+hb-7)+'px;text-align:right;font-size:9px;">'+d.medias[i].title+'<\/div>' 328 } 329 } 330 331 $('#'+this.id+'_graph').html(c); 332 333 $("[id^='"+this.id+"_bar_']").mouseover(function(t1) { 334 return function() { 335 var i = parseInt($(this).data('bar')); 336 $(this).css({"box-shadow":"0px 0px 10px 2px rgba(0,0,0,0.75)","background-color":"rgb(220,220,255)"}); 337 $('#'+t1.id+'_val_'+i).show(); 338 } 339 }(this)); 340 341 $("[id^='"+this.id+"_bar_']").mouseout(function(t1) { 342 return function() { 343 var i = parseInt($(this).data('bar')); 344 $(this).css({"box-shadow":"","background-color":t1.cBarColor}); 345 $('#'+t1.id+'_val_'+i).hide(); 346 } 347 }(this)); 348 } 349 } 350} 351 352function fMontaHistograma(id,u,b) { 353 if (typeof u.codigo_usuario != "undefined") { 354 355 $.ajax({ 356 dataType: "json", 357 url: "servicos/histograma", 358 data: {"edital": b.codigo_edital.codigo, "diretoria":b.codigo_diretoria_ensino, "escola":b.codigo_escola_origem}, 359 success: function(id1,u1,b1) { 360 return function(d) { 361 var i,lEmpty = true; 362 console.log(d); 363 if (d.status=='ok') { 364 for(i=0;i<d.result.length;i++) { 365 if (d.result[i].val.length!=0) { 366 lEmpty = false;
367 break; 368 } 369 } 370 if (lEmpty) { 371 $('#'+id1).hide(); 372 } 373 else { 374 $('#'+id1).show(); 375 $('#'+id1).html(''); 376 var T = new TFuvHistograma(id1,d); 377 } 378 } 379 else { 380 $('#'+id1).show(); 381 $('#'+id1).html('Falha ao carregar histograma.<br>'+d.message+'<br>'); 382 } 383 } 384 }(id,u,b) 385 }); 386 387 388 } 389} 390 391class FuvAdmin { 392 constructor (idparent, id) { 393 var t = this; 394 t.idparent = idparent; 395 t.id = id; 396 t.nOffset = 0; 397 t.nPageSize = 10; 398 399 400 var c = '<div class="modal fade" id="'+this.id+'_dialog" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">'+ 401 ' <div class="modal-dialog" role="document">'+ 402 ' <div class="modal-content">'+ 403 ' <div class="modal-header">'+ 404 ' <h5 class="modal-title" id="exampleModalLabel">Digite o nome ou CPF do candidato</h5>'+ 405 ' <button type="button" class="close" data-dismiss="modal" aria-label="Close">'+ 406 ' <span aria-hidden="true">×</span>'+ 407 ' </button>'+ 408 ' </div>'+ 409 ' <div class="modal-body">'; 410 411 // formulário 412 c += ' <div class="row">'+ 413 ' <div class="col-sm-8">'+ 414 ' <input id="'+this.id+'_text" type="text" class="form-control" placeholder="Nome ou CPF" value="" required>'+ 415 ' <div id="'+this.id+'_invalid" class="invalid-feedback">digite ao menos 4 caracteres</div>'+ 416 ' </div>'+ 417 ' <div class="col-sm-4" style="text-align:center;">'+ 418 ' <button id="'+this.id+'_do" class="btn"> Pesquisar <\/button>'+ 419 ' </div>'+ 420 ' <div style="clear:both;"><\/div>'+ 421 ' </div>'; 422 423 c += ' <div id="'+this.id+'_result" style="position:relative;padding:4px;margin:10px 0px 4px 0px;">'+ // resultado da pesquisa 424 ' </div>'+ 425 ' </div>'+ 426 ' <div class="modal-footer">'+ 427 ' <button type="button" class="btn btn-secondary" data-dismiss="modal">Fechar</button>'+ 428 ' </div>'+ 429 ' </div>'+ 430 ' </div>'+ 431 '</div>'; 432 $('body').append(c); 433 434 435 $('#' + t.id + '_button').remove(); 436 437 c = '<div id="' + t.id + '_button" style="position:absolute;top:4px;left:4px;cursor:pointer;width:52px;height:52px;"><\/div>'; 438 439 $('#' + t.idparent).append(c); 440 441 $('#' + t.id + '_button').click(function() { 442 $("#" + t.id + "_dialog").modal(); 443 $("#" + t.id + "_text").focus(); 444 }); 445 446 $('#'+this.id+'_text').keyup(function(t) { 447 return function(e){ 448 var key = (e.keyCode ? e.keyCode : e.which); 449 var c = $('#'+t.id+'_text').val()+''; 450 if (c.length<4) { 451 $('#'+t.id+'_invalid').show(); 452 } 453 else { 454 $('#'+t.id+'_invalid').hide(); 455 } 456 if (key==13) { 457 $('#'+t.id+'_do').click(); 458 } 459 } 460 }(this)); 461 462 $('#' + t.id + '_do').click(function() { 463 t.nOffset = 0; 464 t.getdata(); 465 }); 466 467 } 468 469 execute(i) { 470 $.ajax({ 471 dataType: "json", 472 url: "servicos/admSet", 473 data: {"code": i}, 474 success: function(t1) { 475 return function(d) { 476 console.log(d); 477 if (d.result === 'ok') { 478 window.location.href = "/inicio"; 479 } 480 else { 481 console.log(d); 482 } 483 } 484 }(this) 485 }); 486 } 487 488 getdata() { 489 var c = ($('#'+this.id+'_text').val() + '').trim(); 490 if (c.length >= 4) { 491 $.ajax({ 492 dataType: "json", 493 url: "servicos/pesquisaCandidato", 494 data: {"nome":c, "offset":this.nOffset, "size": this.nPageSize}, 495 success: function(t1) { 496 return function(d) { 497 console.log(d); 498 if (d.result === 'ok') { 499 var i,c=''; 500 for(i=0;i<d.data.length;i++) { 501 c += '<div id="'+t1.id+'_code_'+d.data[i].codigo_usuario+'" style="margin:4px 0px 4px 0px;padding:4px;border-bottom:dotted 1px gray;cursor:pointer;" data-code="'+d.data[i].codigo_usuario+'">'; 502 c += '<p style="margin:0px;">'+d.data[i].nome_usuario+'<\/p>'; 503 c += '<p style="margin;0px;font-size:66%;color:gray;">'+d.data[i].cpf_usuario+' '+d.data[i].email_usuario+'<\/p>'; 504 c += '<\/div>'; 505 } 506 c += '<p style="font-size:75%;margin:4px 4px 4px 20px;">Mostrando '+d.data.length+' resultados ('+(t1.nOffset+1)+' a '+(t1.nOffset+d.data.length)+') de '+d.data[0].total_linhas+' possíveis.<\/p>' 507 508 if (t1.nOffset>0) { 509 c += '<span id="'+t1.id+'_prior" class="cFAW" style="font-size:16px;font-weight:bold;position:absolute;bottom:2px;left:2px;cursor:pointer;"><\/span>' 510 } 511 512 if ((t1.nOffset+t1.nPageSize-1)<d.data[0].total_linhas) { 513 c += '<span id="'+t1.id+'_next" class="cFAW" style="font-size:16px;font-weight:bold;position:absolute;bottom:2px;right:2px;cursor:pointer;"><\/span>' 514 } 515 516 $('#'+t1.id+'_result').html(c); 517 518 $("[id^='"+t1.id+"_code_']").click(function(t2) { 519 return function() { 520 var nCode = $(this).data('code'); 521 t2.execute(nCode); 522 } 523 }(t1)); 524 525 if (t1.nOffset>0) { 526 $("#"+t1.id+"_prior").click(function(t2) { 527 return function() { 528 t2.nOffset -= t2.nPageSize; 529 if (t2.nOffset<0) { 530 t2.nOffset = 0; 531 } 532 t2.getdata(); 533 } 534 }(t1)); 535 } 536 537 if ((t1.nOffset+t1.nPageSize-1)<d.data[0].total_linhas) { 538 $("#"+t1.id+"_next").click(function(t2) { 539 return function() { 540 t2.nOffset = t2.nOffset+t2.nPageSize; 541 t2.getdata(); 542 } 543 }(t1)); 544 } 545 546 547 } 548 else { 549 $('#'+t1.id+'_result').html(d.message); 550 } 551 } 552 }(this) 553 }); 554 } 555 } 556} 557 558var fuvConst = { 559 FACE_CHECK_NONE: 0, 560 FACE_CHECK_TRACKER: 1, 561 FACE_CHECK_FACE_JS: 2,
562 FACE_CHECK_EXTERNAL: 3, 563 564 FACE_MIN_W: 120, 565 FACE_MIN_H: 120, 566 FLUXO_EDITAL_ENEM: 12 567} 568 569var fuvutils = { 570 isMobile: function() { 571 return navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) || navigator.userAgent.match(/Windows Phone/i) 572 }, 573 574 toString: function(a, sep) { 575 var c,s = "",i; 576 for(i=0;i<a.length;i++) { 577 if (i!=0) s += sep; 578 c = ""+a[i]; 579 if (c.length>10) c = c.substr(0, 10); 580 s += c; 581 } 582 return s; 583 }, 584 585 getLoadingImage: function(w) { 586 return "<img src=\"data:image/png;base64,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\" style=\"width:"+w+"px\">"; 587 }, 588 589 fFullBackgroundZ: function (id, z) { 590 var w = jQuery(document).width(); 591 var h = jQuery(document).height(); 592 return '<div id="'+id+'" style="position:absolute;top:0px;left:0px;width:'+w+'px;height:'+h+'px;background-color:rgba(16,16,16,0.90);z-index:'+z+';"><\/div>'; 593 }, 594 595 fCloseWindow: function(id) { 596 jQuery('#'+id+'_background').remove(); 597 jQuery('#'+id).remove(); 598 jQuery('body').css({"overflow":""}); 599 }, 600 601 fCreateWindow: function(caller,w,caption,text,id,zindex) { 602 if (w=='max') { 603 } 604 var wm=w,x=0,y=10,o=$(window); 605 if (o.length>0) { 606 x = 0 607 wm = o.width() 608 if (w>wm) { 609 w = wm-20 610 } 611 else { 612 x = (wm-w)/2 613 } 614 } 615 if (x==0) { 616 x = 10 617 } 618
619 var c = this.fFullBackgroundZ(id+'_background', zindex-1); 620 c += '<div id="'+id+'" style="position:fixed;top:'+y+'px;left:'+x+'px;width:'+w+'px;max-height:'+(o.height()-40)+'px;border-radius:5px;background-color:rgb(245,245,255);border:solid 1px silver;box-shadow:0 3px 3px rgba(0,0,0,0.2);z-index:'+zindex+'">'+ 621 '<div style="padding:4px">'+ 622 '<p style="font-size:16px;font-weight:bold;padding:5px 0px 5px 0px;text-align:center;">'+caption+'<\/p>'+ 623 text+ 624 '<\/div>'+ 625 '<\/div>'; 626 jQuery('body').append(c); 627 jQuery('body').css({"overflow":"hidden"}); 628 629 y = ((o.height()-40)-jQuery('#'+id).height())/2; 630 jQuery('#'+id).css({"top":y+"px"}); 631 632 jQuery('#'+id+'_background').click(function(this1,id1) { 633 return function() { 634 this1.fCloseWindow(id1) 635 } 636 }(this,id)) 637 }, 638 639 fAlert: function(caption,data,zindex,f) { 640 var c = data+'<p style="text-align:center;margin:10px 0px 5px 0px"><button id="idAlertClose" class="cjsButton"> <span class="cFAW" style="color:red;"><\/span> Fechar <\/button><\/p>'; 641 this.fCreateWindow('',640,caption,c,'alert',zindex); 642 jQuery('#idAlertClose').click(function(this1,f1){ 643 return function() { 644 this1.fCloseWindow('alert'); 645 f1(); 646 } 647 }(this,f)); 648 }, 649 650 // 651 // converte o formato do resultado 652 // 653 convertFaceDescriptor: function(r, timeLoadNet, timeFaceDescr) { 654 if (typeof r === "undefined") { 655 return r; 656 } 657 658 var o = {}; 659 o['hostname'] = 'facejs'; 660 o['pid'] = 1; 661 o['count'] = 1; 662 o['result'] = 'ok'; 663 o['angle'] = 0; 664 o['crc32'] = 0; 665 o['dims'] = [150,150]; 666 o['rect'] = [r.alignedRect.box.left, r.alignedRect.box.top, r.alignedRect.box.right, r.alignedRect.box.bottom]; 667 o['time_facedescr'] = timeFaceDescr; 668 o['time_findface'] = 0; 669 o['time_landmarks'] = 0; 670 o['time_netsetup'] = timeLoadNet; 671 o['time_crc32'] = 0; 672 a = []; 673 for(i=0;i<128;i++) { 674 a.push(r.descriptor[i]); 675 } 676 o['facedescr'] = a; 677 678 a = [68]; 679 for(i=0;i<68;i++) { 680 a.push(Math.round(r.landmarks.positions[i]._x)); 681 a.push(Math.round(r.landmarks.positions[i]._y)); 682 } 683 o['landmark'] = a; 684 return o; 685 }, 686 687 removeOverlay: function(id) { 688 jQuery('#'+id).remove(); 689 }, 690 691 displayOverlayOnTop: function(id,selectorparent,message) { 692 var parent = jQuery(selectorparent); 693 var x = parent.offset().left-5; 694 var y = parent.offset().top-5; 695 var w = parent.width()+10; 696 var z = parent.css("z-index"); 697 if (isNaN(z)) { 698 z = 1000; 699 } 700 z += 100; 701 702 jQuery('body').append( 703 '<div id="'+id+'" style="position:absolute;left:'+x+'px;top:'+y+'px;width:'+w+'px;background-color:rgba(255,230,230,0.9);padding:10px;border-radius:4px;color:#777;font-size:16px;box-shadow:0px 0px 10px 0px rgba(50, 50, 50, 0.75);text-align:center;z-index:'+z+'">'+ 704 message+ 705 '<\/div>' 706 ); 707 }, 708 709 getResizedCanvas(canvas, nw) { 710 newcanvas = document.createElement('canvas'); 711 newcanvas.width = nw; 712 newcanvas.height = canvas.height*nw/canvas.width; 713 var newctx = newcanvas.getContext('2d'); 714 newctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, newcanvas.width, newcanvas.height); 715 return newcanvas; 716 }, 717 718 doubleWidth(canvas) { 719 newcanvas = document.createElement('canvas'); 720 newcanvas.width = 2*canvas.width; 721 newcanvas.height = canvas.height; 722 var newctx = newcanvas.getContext('2d'); 723 newctx.drawImage(canvas, 0, 0); 724 return newcanvas; 725 }, 726 727 getPointTR: function(selector, dx, dy, selector2 = null) { 728 var p = jQuery(selector); 729 730 if (p.length == 0) { 731 p = jQuery(selector2); 732 } 733 734 if (this.isMobile()) { 735 return {x:p.offset().left-dx,y:p.offset().top-dx}; 736 } 737 else { 738 return {x:p.offset().left+p.width()+dx,y:p.offset().top+dy}; 739 } 740 }, 741 742 getPointTL: function(selector,dx,dy) { 743 var p = jQuery(selector); 744 745 return {x:p.offset().left+dx,y:p.offset().top+dy}; 746 }, 747 748 drawCanvasLandmarks: function(id, xy, canvas, facerec, nw) { 749 var x,y,i,newcanvas = document.createElement('canvas'); 750 newcanvas.width = canvas.width; 751 newcanvas.height = canvas.height; 752 var newctx = newcanvas.getContext('2d'); 753 newctx.drawImage(canvas, 0, 0); 754 755 newctx.lineWidth = 1; 756 newctx.strokeStyle = 'red'; 757 newctx.strokeRect(facerec.rect[0], facerec.rect[1], facerec.rect[2]-facerec.rect[0], facerec.rect[3]-facerec.rect[1]); 758 759 var j = 1; 760 for(i=0;i<facerec.landmark[0];i++) { 761 x = facerec.landmark[j++]; 762 y = facerec.landmark[j++]; 763 newctx.beginPath(); 764 newctx.arc(x, y, 2, 0, 2 * Math.PI, false); 765 newctx.fillStyle = 'white'; 766 newctx.fill(); 767 newctx.lineWidth = 0.5; 768 newctx.strokeStyle = 'black'; 769 newctx.stroke(); 770 } 771 772 var c = '<img id="'+id+'" src="'+newcanvas.toDataURL("image/png")+'" style="position:absolute;top:'+xy.y+'px;left:'+xy.x+'px;width:'+nw+'px;box-shadow:0px 0px 10px 0px rgba(50, 50, 50, 0.75);">'; 773 jQuery('#'+id).remove(); 774 jQuery('body').append(c); 775 }, 776 777 desenhaFaceLandmarks: function(canvas, face, facerec) { 778 var ctx = canvas.getContext('2d'); 779 ctx.drawImage(face, 0, 0); 780 var j = 1; 781 for(i=0;i<facerec.landmark[0];i++) { 782 x = facerec.landmark[j++]; 783 y = facerec.landmark[j++]; 784 ctx.beginPath(); 785 ctx.arc(x, y, 2, 0, 2 * Math.PI, false); 786 ctx.fillStyle = 'white'; 787 ctx.fill(); 788 ctx.lineWidth = 0.5; 789 ctx.strokeStyle = 'black'; 790 ctx.stroke(); 791 } 792 }, 793 794 // 795 // rotaciona o canvasSource em degAngle graus, devolvendo como resultado um novo canvas 796 // 797 fRotate(canvasSource, degAngle) { 798 var localCanvas = document.createElement('canvas'); 799 var localCtx = localCanvas.getContext('2d'); 800 801 while (degAngle<0) {
802 degAngle += 360; 803 } 804 805 while (degAngle>=360) { 806 degAngle =- 360; 807 } 808 809 if (degAngle==0) { 810 localCanvas.width = canvasSource.width; 811 localCanvas.height = canvasSource.height; 812 localCtx.drawImage(canvasSource, 0, 0); 813 } 814 else if ((degAngle==90)||(degAngle==270)) { 815 localCanvas.width = canvasSource.height; 816 localCanvas.height = canvasSource.width; 817 818 localCtx.translate(localCanvas.width/2,localCanvas.height/2); 819 820 localCtx.rotate(degAngle*Math.PI/180);; 821 localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2); 822 } 823 else if (degAngle<=90) { 824 var w = canvasSource.width; 825 var h = canvasSource.height; 826 var a = degAngle*Math.PI/180; 827 var neww = w*Math.cos(a)+h*Math.sin(a); 828 var newh = w*Math.sin(a)+h*Math.cos(a); 829 830 localCanvas.width = neww; 831 localCanvas.height = newh; 832 833 localCtx.fillStyle = "#ffffc0"; 834 localCtx.fillRect(0, 0, neww, newh); 835 836 localCtx.translate(localCanvas.width/2,localCanvas.height/2); 837 838 localCtx.rotate(a); 839 localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2); 840 } 841 else if (degAngle<=180) { 842 var w = canvasSource.width; 843 var h = canvasSource.height; 844 var a = (degAngle-90)*Math.PI/180; 845 var neww = h*Math.cos(a)+w*Math.sin(a); 846 var newh = h*Math.sin(a)+w*Math.cos(a); 847 848 localCanvas.width = neww; 849 localCanvas.height = newh; 850 851 localCtx.fillStyle = "#ffffc0"; 852 localCtx.fillRect(0, 0, neww, newh); 853 854 localCtx.translate(localCanvas.width/2,localCanvas.height/2); 855 856 a = degAngle*Math.PI/180; 857 858 localCtx.rotate(a); 859 localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2); 860 } 861 else if (degAngle<=270) { 862 var w = canvasSource.width; 863 var h = canvasSource.height; 864 var a = (degAngle-90)*Math.PI/180; 865 var neww = -h*Math.cos(a)+w*Math.sin(a); 866 var newh = h*Math.sin(a)-w*Math.cos(a); 867 868 localCanvas.width = neww; 869 localCanvas.height = newh; 870 871 localCtx.fillStyle = "#ffffc0"; 872 localCtx.fillRect(0, 0, neww, newh); 873 874 localCtx.translate(localCanvas.width/2,localCanvas.height/2); 875 876 a = degAngle*Math.PI/180; 877 878 localCtx.rotate(a); 879 localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2); 880 } 881 else { 882 var w = canvasSource.width; 883 var h = canvasSource.height; 884 var a = degAngle*Math.PI/180; 885 var neww = -w*Math.cos(a)+h*Math.sin(a); 886 var newh = w*Math.sin(a)-h*Math.cos(a); 887 888 localCanvas.width = neww; 889 localCanvas.height = newh; 890 891 localCtx.fillStyle = "#ffffc0"; 892 localCtx.fillRect(0, 0, neww, newh); 893 894 localCtx.translate(localCanvas.width/2,localCanvas.height/2); 895 896 localCtx.rotate(a); 897 localCtx.drawImage(canvasSource, -canvasSource.width/2, -canvasSource.height/2); 898 } 899 900 return localCanvas; 901 }, 902 903 imgToCanvas: function(img) { 904 var canvas = document.createElement('canvas'); 905 var ctx = canvas.getContext('2d'); 906 canvas.width = img.naturalWidth; 907 canvas.height = img.naturalHeight; 908 ctx.drawImage(img, 0, 0); 909 return canvas; 910 }, 911 912 dataToCanvas: function(data) { 913 return new Promise((resolve, reject) => { 914 var img = new Image; 915 img.onload = function() { 916 var canvas = document.createElement('canvas'); 917 var ctx = canvas.getContext('2d'); 918 canvas.width = this.naturalWidth; 919 canvas.height = this.naturalHeight; 920 ctx.drawImage(this, 0, 0); 921 resolve(canvas); 922 } 923 img.src = data; 924 }); 925 }, 926 927 resizeImageW: function(img, maxdim) { 928 var canvas = document.createElement('canvas'); 929 var ctx = canvas.getContext('2d'); 930 canvas.width = maxdim; 931 canvas.height = img.height/img.width*maxdim; 932 ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, canvas.width, canvas.height); 933 return canvas.toDataURL("image/jpeg"); 934 }, 935 936 resizeImageH: function(img, maxdim) { 937 var canvas = document.createElement('canvas'); 938 var ctx = canvas.getContext('2d'); 939 canvas.height = maxdim; 940 canvas.width = img.width/img.height*maxdim; 941 ctx.drawImage(img, 0, 0, img.naturalWidth, img.naturalHeight, 0, 0, canvas.width, canvas.height); 942 return canvas.toDataURL("image/jpeg"); 943 }, 944 945 resizeImageMaxDimension: function(img, maxdim) { 946 if (img.width>img.height) { 947 return this.resizeImageW(img, maxdim); 948 } 949 else { 950 return this.resizeImageH(img, maxdim); 951 } 952 } 953} 954 955 956var fuvface = { 957 timeToLoadNets: 0, 958 readyToCheckPhoto: false, 959 useTinyFaceDetector: true, 960 isVerbose: true, 961 timeToProcessPhoto: 0, 962 displayDebug: function(s) { 963 if (this.isVerbose) { 964 console.log(s); 965 } 966 }, 967 initialize: function() { 968 this.timeToLoadNets = Date.now(); 969 this.readyToCheckPhoto = false;
970 jQuery.getScript("js/face-api.min.js?version=0.22.2").done(function(self) { 971 return function(script, textStatus) { 972 if (self.useTinyFaceDetector) { 973 self.loadTinyFaceDetector(); 974 } 975 else { 976 self.loadSsdMobilenetv1(); 977 } 978 } 979 }(this)).fail(function(self) { 980 return function(jqxhr, settings, e) { 981 self.displayDebug("falha ao carregar o script: "+e.message); 982 } 983 }(this)); 984 }, 985 986 loadFaceRecognitionNet: function() { 987 this.displayDebug('iniciando carga de faceRecognitionNet'); 988 faceapi.nets.faceRecognitionNet.loadFromUri('js/models').then(function(self) { 989 return function() { 990 jQuery("#botaoUploadFoto").removeAttr("disabled"); 991 self.displayDebug('faceRecognitionNet carregada'); 992 self.readyToCheckPhoto = true; 993 self.displayDebug('sistema pronto para realizar reconhecimento'); 994 self.timeToLoadNets = Date.now()-self.timeToLoadNets; 995 } 996 }(this), function(self) { 997 return function() { 998 self.displayDebug('falha ao carregar faceRecognitionNet'); 999 } 1000 }(this)); 1001 }, 1002
1003 loadFaceLandmark68TinyNet: function() { 1004 this.displayDebug('iniciando carga de faceLandmark68TinyNet'); 1005 faceapi.nets.faceLandmark68TinyNet.loadFromUri('js/models').then(function(self) { 1006 return function() { 1007 self.displayDebug('faceLandmark68TinyNet carregada'); 1008 self.loadFaceRecognitionNet(); 1009 } 1010 }(this), function(self) { 1011 return function() { 1012 self.displayDebug('falha ao carregar faceLandmark68TinyNet'); 1013 } 1014 }(this)); 1015 }, 1016 1017 loadSsdMobilenetv1: function() { 1018 this.displayDebug('iniciando carga de ssdMobilenetv1'); 1019 faceapi.nets.ssdMobilenetv1.loadFromUri('js/models').then(function(self) { 1020 return function() { 1021 self.displayDebug('ssdMobilenetv1 carregada'); 1022 self.loadFaceLandmark68TinyNet(); 1023 } 1024 }(this), function(self) { 1025 return function() { 1026 self.displayDebug('falha ao carregar ssdMobilenetv1'); 1027 } 1028 }(this)); 1029 }, 1030 1031 loadTinyFaceDetector: function() { 1032 this.displayDebug('iniciando carga de tinyFaceDetector'); 1033 faceapi.nets.tinyFaceDetector.loadFromUri('js/models').then(function(self) { 1034 return function() { 1035 self.displayDebug('tinyFaceDetector carregada'); 1036 self.loadFaceLandmark68TinyNet(); 1037 } 1038 }(this), function(self) { 1039 return function() { 1040 self.displayDebug('falha ao carregar tinyFaceDetector'); 1041 } 1042 }(this)); 1043 }, 1044 1045 realizaReconhecimentoFacial: function(canvas, f) { 1046 var faceOptions; 1047 if (this.useTinyFaceDetector) { 1048 faceOptions = new faceapi.TinyFaceDetectorOptions(); 1049 } 1050 else { 1051 faceOptions = new faceapi.SsdMobilenetv1Options({}); 1052 } 1053 1054 this.timeToProcessPhoto = 0; 1055 1056 faceapi.detectSingleFace(fuvutils.doubleWidth(canvas), faceOptions). 1057 withFaceLandmarks(true). 1058 withFaceDescriptor().then(function(self,finalCanvas1,f1) { // resultado encontrado 1059 return function(r) { 1060 if (typeof r === "undefined") { 1061 r = {"result":"failed","info":"Face não encontrada"}; 1062 f1(r); 1063 } 1064 else { 1065 r = fuvutils.convertFaceDescriptor(r, self.timeToLoadNets, Date.now()-self.timeToProcessPhoto); 1066 if (((r.rect[2]-r.rect[0])<fuvConst.FACE_MIN_W)||((r.rect[3]-r.rect[1])<fuvConst.FACE_MIN_H)) { 1067 r = {"result":"failed","info":"Face muito pequena"}; 1068 } 1069 f1(r); 1070 } 1071 } 1072 }(this,canvas,f), function(self1,finalCanvas1,f1) { // falha 1073 return function() { 1074 var r; 1075 r = {"result":"failed","info":"Face não encontrada"}; 1076 f1(r); 1077 } 1078 }(this,canvas,f)); 1079 } 1080} 1081 1082$(document).ready(function() { 1083 var host = "" + location.hostname; 1084 if ((host === "localhost") || (host === "127.0.0.1") || (host.indexOf("192.168.") === 0)) { 1085 // não executar em modo local 1086 } 1087 else { 1088 jsGlobalLoadScript("https://bin.fuvest.br/js/lgpd.js", function() { 1089 1090 }, 'utf-8'); 1091 } 1092});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.