;(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

Apesar de Covas e Boulos toparem debate virtual, Globo decide manter regra

Nathan Lopes

Do UOL, em São Paulo

27/11/2020 19h06

As campanhas de Bruno Covas (PSDB) e Guilherme Boulos (PSOL) concordaram em propor à TV Globo que o debate desta noite fosse realizado de maneira virtual. A emissora, porém, negou o pedido e lembrou que as regras assinadas anteriormente previam que o encontro entre os candidatos a prefeito de São Paulo só poderia ser realizado de forma presencial.

Nesta tarde, Boulos anunciou que havia contraído covid-19 e que cumprirá período de isolamento a partir de agora. O candidato, inclusive, não irá votar no próximo domingo (29), quando será realizado o segundo turno.

Segundo a emissora, "a alternativa de fazer um debate de forma remota não é possível". "Os candidatos precisam ser tratados de forma equânime e ter as mesmas condições, e o público precisa perceber isso", disse em comunicado ao UOL.

Na nota, a Globo disse que "um candidato pode injustamente ser acusado de estar com ponto eletrônico, de estar recebendo ajuda de assessores, por exemplo". "A transmissão pode cair num momento importante do debate, e a Globo ser injustamente acusada de ser a culpada ou, da mesma forma, e também de forma injusta, o candidato ou sua campanha serem acusados de terem provocado a interrupção para fugir de um momento difícil."

A emissora ainda lembra que, no item "generalidades" das regras do debate, está escrito que o encontro "só será realizado de forma presencial, não se itindo, em nenhuma circunstância, o uso de meios virtuais para realizá-lo".

Deputada com covid-19

Boulos decidiu fazer o exame após a deputada federal Sâmia Bomfim (PSOL-SP) ter anunciado na última segunda-feira (23) que havia contraído o novo coronavírus.

O candidato e a parlamentar estiveram no mesmo ambiente na sexta-feira da semana ada, dia 20, em uma agenda fechada da campanha de Boulos.

Boulos, que fez o exame ontem, disse nos últimos dias que não tinha sintomas da doença. "Diante do resultado positivo, Guilherme Boulos irá cumprir o protocolo de quarentena pelo período necessário. Toda a equipe que trabalha na campanha e que tem contato próximo com o candidato será testado a partir de agora", disse a campanha em nota.

Por precaução, Boulos suspendeu agendas de rua desde terça-feira (24). Nesse período, ele fez encontros de campanha fechados ao público externo. Com o anúncio de que ele contraiu o novo coronavírus, ele não deverá participar das carreatas que serão realizadas amanhã. Todas terão como ponto final a avenida Paulista.

No início desta tarde, antes de saber do resultado, Boulos disse a jornalistas, inclusive ao UOL, em frente a sua casa, no Campo Limpo, zona sul de São Paulo, que fez o teste "muito mais por um gesto simbólico, para dar exemplo". "Teve aquele contato absolutamente esporádico com a Sâmia Bomfim, que testou positivo. Estou com minha agenda normal e focado na preparação para o debate".

Em nota, a campanha diz que "o candidato reforça a preocupação que tem afirmado nos últimos dias sobre os indícios de uma segunda onda da pandemia, até aqui negligenciada pelos governos estadual e municipal, responsáveis pela aplicação das medidas".

Boulos aparece em segundo lugar nas pesquisas de intenção de voto, atrás de Covas, seu adversário no pleito de domingo.

Você utiliza a Alexa? O UOL é o parceiro oficial da assistente de voz da Amazon, com boletins de notícias e dados atualizados das últimas pesquisas eleitorais e dos resultados do 2º turno. Para saber sobre a eleição na sua cidade com a credibilidade do UOL, pergunte: "Alexa, qual é o resultado da pesquisa eleitoral em São Paulo?", por exemplo, ou "Alexa, quem ganhou a eleição no Rio de Janeiro?". Nos encontramos lá!

Você utiliza a Alexa? O UOL é o parceiro oficial da assistente de voz da Amazon, com boletins de notícias e dados atualizados das últimas pesquisas eleitorais e dos resultados do 2º turno. Para saber sobre a eleição na sua cidade com a credibilidade do UOL, pergunte: "Alexa, qual é o resultado da pesquisa eleitoral em São Paulo?", por exemplo, ou "Alexa, quem ganhou a eleição no Rio de Janeiro?". Nos encontramos lá!