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

Governadores elegem apenas dois prefeitos nas capitais brasileiras

Prefeito de Curitiba, Rafael Greca é reeleito no primeiro turno - GIULIANO GOMES/ESTADÃO CONTEÚDO
Prefeito de Curitiba, Rafael Greca é reeleito no primeiro turno Imagem: GIULIANO GOMES/ESTADÃO CONTEÚDO

José Dacau

Do UOL, em São Paulo

16/11/2020 11h12

Dois governadores elegeram, no primeiro turno, o candidato a prefeito que apoiaram na eleição que aconteceu neste domingo (15) em 25 capitais brasileiras. E outros cinco conseguiram que seus afiliados políticos assem para o segundo turno, que será realizado no próximo dia 29.

No Paraná, o prefeito Rafael Greca (DEM), apadrinhado pelo governador Ratinho Junior (PSD), se reelegeu prefeito de Curitiba no primeiro turno com 59,74 % dos votos. Marquinhos Trad (PSD), apoiado por Reinaldo Azambuja (PSDB), também se reelegeu em Campo Grande (MS) com 52,58 % do eleitorado.

Apenas a capital Macapá ficou de fora da eleição. A votação foi adiada por causa do apagão que atingiu há duas semanas o Estado do Amapá, na região Norte. O primeiro turno na cidade deverá acontecer no dia 13 de dezembro. Se for necessário, o segundo turno, está previsto para o dia 27.

Nordeste

O candidato Evaldo (PDT), apoiado por Belivaldo Chagas (PSD), ficou em primeiro lugar na disputa pela prefeitura de Aracaju (SE). Ele vai disputar o segundo turno com Delegada Danielle (Cidadania).

Alfredo Gaspar de Mendonça (MDB), que teve como padrinho político o governador de Alagoas, Renan Filho (MDB), vai enfrentar JHC (PSB) no segundo turno em Maceió.

O governador de Pernambuco, Paulo Câmara (PSB), apostou em João Campos (PSB) para prefeito em Recife. Campos ficou em primeiro lugar. No próximo dia 29, ele enfrentará Marília Arraes (PT).

Sudeste

Em São Paulo, o prefeito Bruno Covas (PSDB) disputará o segundo turno com Guilherme Boulos (PSOL). O tucano teve apoio do governador João Doria (PSDB).

Centro-Oeste

Em Goiânia (GO), Ronaldo Caiado (DEM) escolheu o nome de Vanderlan Cardoso (PSD). Ele ficou em segundo lugar e disputará o segundo turno com Maguito Vilela (MDB).

Sem candidato

Na disputa em Manaus (AM), o governador Wilson Lima (PSC) não apoiou nenhum nome. Mauro Carlesse (PHS), governador de Tocantins, também não apoiou nenhum candidato na disputa em Palmas.