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

Doze partidos elegem prefeitos nas 100 maiores cidades; PT e PSL ficam fora

15.nov.2020 - Principal avenida de Maceió, a Fernandes Lima, amanheceu coberta por santinhos e panfletos no domingo - Carlos Madeiro/UOL
15.nov.2020 - Principal avenida de Maceió, a Fernandes Lima, amanheceu coberta por santinhos e panfletos no domingo Imagem: Carlos Madeiro/UOL

Carlos Madeiro

Colaboração para o UOL, em Maceió

16/11/2020 02h10

Das 100 cidades mais populosas do país, 43 elegeram prefeitos neste domingo e consagraram um total de 12 partidos. As demais vão para o segundo turno.

Os dois maiores partidos em termos de bancada de Congresso e fundo eleitoral (PT e PSL), porém, ficaram de fora e terão que vencer no segundo turno se quiserem governar alguma dessas cidades de grande porte.

Segundo os resultados apurados até as 1h de hoje, outras 56 deverão segundo turno no próximo dia 29— mesmo número da eleição de 2016. Macapá não teve eleição ontem por conta do apagão que atinge o estado há duas semanas.

O partido que mais elegeu prefeitos entre as grandes cidades em primeiro turno foi o PSDB —foram nove, incluindo as capitais Natal e Palmas. Já o MDB fez oito, mas um deles —Washington Reis, eleito em Duque de Caxias— tem candidatura sub judice e terá recurso julgado.

O PSD fez seis prefeitos —incluindo as capitais Belo Horizonte e Campo Grande—, enquanto o DEM fez outros cinco —três deles de capitais: Salvador, Curitiba e Florianópolis.

O PT, por sua vez, tem a chance ainda de fazer 15 prefeitos, que disputarão segundo turno— entre elas, as capitais Recife e Vitória e as cidades de Guarulhos (SP) e São Gonçalo (RJ), com mais de um milhão de habitantes. Já o PSL terá apenas duas disputas: Sorocaba e Praia Grande, ambas em São Paulo.

Com o resultado do primeiro turno, o PT chega com chance de melhorar seu desempenho de 2016, quando fez apenas um prefeito entre as 100 cidades. Foi Marcus Alexandre, eleito em Rio Branco, mas que renunciou em 2018 para concorrer —e perder— a eleição para o governo do Acre. O partido chegou para esta eleição sem governar nenhuma das 100 cidades mais populosas do país.

A maior aposta dos petistas agora é o Recife, onde Marília Arraes disputará o segundo turno contra João Campos (PSB). O ex-presidente Luiz Inácio Lula de Silva deve pedir votos —como fez no primeiro turno, quando prometeu participar da posse dela, caso eleita na capital de Pernambuco.

Vitória por partido:

  • PSDB - 9
  • MDB - 8
  • PSD - 6
  • DEM - 5
  • PP - 4
  • CIDA - 3
  • SD - 2
  • PL - 2
  • PODE - 1
  • PDT -1
  • PSB - 1
  • PSC - 1