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

Com apoio de Bolsonaro, PM virou disputa sobre PT em 2ª maior cidade do RJ

Capitão Nelson, prefeito eleito de São Gonçalo, com placa que defende "eliminar o PT" - Reprodução/ Facebook
Capitão Nelson, prefeito eleito de São Gonçalo, com placa que defende "eliminar o PT" Imagem: Reprodução/ Facebook

Igor Mello

Do UOL, no Rio

29/11/2020 22h44

Contando com o apoio do presidente Jair Bolsonaro (sem partido) na última semana da campanha, o deputado estadual e ex-policial militar Capitão Nelson (Avante) virou a disputa na segunda maior cidade do Rio e derrotou o PT em São Gonçalo, na região metropolitana.

O município com mais de 1 milhão de habitantes é marcado pelo papel de "cidade dormitório" e pelo grande contingente de evangélicos —que já chegava a 32,5% da população, de acordo com o Censo de 2010. No primeiro turno, Dimas Gadelha (PT) liderou com folga a disputa —com 31,3% dos votos, contra 22,8% de Capitão Nelson.

Em vídeo de 33 segundos, Bolsonaro adotou um tom ameno ao pedir votos para Capitão Nelson, mas alfinetou o PT. "Do outro lado, você sabe, é o PT, que dispensa comentários". Bolsonaro ainda prometeu visitar a cidade no ano que vem.

Na campanha, o candidato do PT apostou no apoio das principais figuras políticas das vizinhas Maricá e Niterói, governadas por PT e PDT, respectivamente.

O ex-prefeito de Maricá Washington Quaquá, vice-presidente nacional da legenda; o atual prefeito da cidade, Fabiano Horta (PT); e o prefeito de Niterói, Rodrigo Neves (PDT), participaram de diversos atos de campanha de Dimas Gadelha.

Além disso, o candidato petista centrou sua campanha em projetos implantados nas duas cidades vizinhas, que recebem recursos bilionários de royalties do petróleo.

É o caso de uma moeda social —mecanismo de transferência de renda que privilegia o comércio local— criada em Maricá e do sistema de ônibus gratuitos da cidade, além da instalação de câmeras para auxiliar as polícias, como feito em Niterói.

Já Capitão Nelson investiu no discurso da segurança pública, sua área de atuação, e no antipetismo.

Usando uma logomarca que lembra um distintivo de polícia, ele prometeu auxiliar no policiamento da cidade, criar um centro de comando e controle municipal e expandir o programa Segurança Presente —criado no governo Luiz Fernando Pezão e ampliado por Wilson Witzel (PSC)— por todos os distritos da cidade.

Em carreatas pela cidade, o candidato —que usava o número 70 nas urnas— era acompanhado por placas com a inscrição: "Álcool 70 para eliminar o vírus do PT de São Gonçalo", em referência aos cuidados para prevenir o novo coronavírus.

Ele também contou com o apoio de bolsonaristas influentes na região, caso dos deputados estaduais Coronel Salema (PSD) e Filippe Poubbel (PSL), e do deputado federal Carlos Jordy (PSL).