;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Rubens Valente

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Vexame das prévias do PSDB ainda não tem data para acabar

João Doria, Eduardo Leite e Arthur Virgílio posam juntos nas prévias do PSDB - Divulgação/ PSDB
João Doria, Eduardo Leite e Arthur Virgílio posam juntos nas prévias do PSDB Imagem: Divulgação/ PSDB

Colunista do UOL

21/11/2021 19h10

O vexame das prévias presidenciais do PSDB deve se estender pelos próximos dias. A votação online, que registrou diversos problemas de lentidão e erro ao longo deste domingo (21) para a maioria dos 44 mil filiados aptos a votar, foi interrompida e somente nesta segunda-feira (22) a equipe técnica deverá dizer qual o grau de segurança para a retomada do sistema.

O processo de votação foi "pausado em razão de questões de infraestrutura técnica, que não comportou a demanda dos votantes das prévias", disse o partido em nota oficial. Um ex-presidente do PSDB disse à coluna na saída da sede do partido em Brasília, sob condição de anonimato, que a cúpula partidária considerou a situação "altamente frustrante", já que se esperava que a noite de domingo "era para ser os finalmentes", quando seria anunciado o vencedor das prévias. Já na segunda-feira (22) esperava-se o início dos trabalhos do partido em torno da pré-candidatura. Mas o tucano minimizou as desavenças entre os pré-candidatos, ao dizer que "briga permanente faz parte da política".

Embora os pré-candidatos reconheçam que o problema foi técnico, no aplicativo desenvolvido exclusivamente para as prévias, as dificuldades ajudaram a provocar mais desconfiança e atritos entre as campanhas dos governadores João Doria (SP) e Eduardo Leite (RS). O governador gaúcho, por exemplo, queria divulgar os resultados parciais da votação do aplicativo ainda na noite deste domingo. Doria rejeitou a ideia e surgiu uma ameaça de judicializar a questão. Com isso, a divulgação da parcial foi descartada.

O partido diz que a contratada responsável pelo sistema, a Faurgs (Fundação de Apoio à Universidade Federal do Rio Grande do Sul), vai reunir sua equipe técnica nesta segunda-feira para dar um veredito sobre quando a votação poderá ser retomada. Vários filiados disseram que o sistema travava no momento do reconhecimento facial, uma das etapas da votação pelo aplicativo. Nas urnas eletrônicas, por outro lado, o processo transcorreu sem nenhum problema, diz o partido. A sigla já sabe o resultado da votação nas urnas, mas ele também não será divulgado até a solução do problema no aplicativo.

Em nota divulgada às 19h30 pela direção do PSDB, a Faurgs afirmou, na íntegra:

"A Fundação de Apoio da Universidade Federal do Rio Grande do Sul (FAURGS) esclarece que está investigando todas as possíveis causas da instabilidade verificada no aplicativo das prévias do PSDB. Desde que os primeiros relatos foram informados, os esforços dos técnicos da instituição estão em descobrir a causa da lentidão do sistema. Assim que houver total comprovação, o detalhamento desse ocorrido será levado a público.

"Ao contrário do que foi especulado, os problemas não têm qualquer relação com a compra de licenças para ar o reconhecimento facial dos filiados. Tanto é que o mesmo número de certificados permitiu o cadastramento bem-sucedido dos mais de 44 mil eleitores.

"Os votos até agora registrados não serão perdidos, e a segurança do sistema não foi afetada. Todo o processo está sendo acompanhado por técnicos representando as três chapas inscritas, garantindo lisura e transparência."