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

Porto Alegre: Manuela enfrentará 2º turno com apoio de adversários

Manuela D"Ávila (PCdoB) obteve votos para ir ao segundo turno em disputa à Prefeitura de Porto Alegre - Divulgação
Manuela D'Ávila (PCdoB) obteve votos para ir ao segundo turno em disputa à Prefeitura de Porto Alegre Imagem: Divulgação

Hygino Vasconcellos

Colaboração para o UOL, em Porto Alegre

16/11/2020 04h16

A candidata à Prefeitura de Porto Alegre Manuela D'Ávila (PCdoB) deve enfrentar com pouco apoio de adversários o segundo turno das eleições, disputado com Sebastião Melo (MDB). Nos bastidores, apenas a candidata Fernanda Melchionna (PSOL) pode ampará-la —oficialmente, a sigla ainda não se posicionou.

Em live com a imprensa na noite de ontem, Manuela disse que iria procurar "imediatamente" Juliana Brizola (PDT), Melchionna e Montserrat Martins (PV). E destacou o índice alto de pessoas que não foram votar.

Para mim existem duas grandes batalhas, a batalha pelos votos de quem não estava conosco e daqueles que não foram votar.
Manuela D'Ávila, candidata à Prefeitura de Porto Alegre

Para o UOL, dois políticos foram veementes em não declarar apoio para Manuela: Valter Nagelstein (PSD) e Gustavo Paim (PP). Eles dois foram ouvidos na noite de ontem, quando mais de 50% dos votos já haviam sido apurados.

Nagelstein disse que é "conservador", "capitalista" e "antipetista" e, por isso, uma coligação com ela não poderia se concretizar. Por outro lado, adiantou a possibilidade de fechar com Melo. Já Paim observou que ainda era cedo para se manifestar, mas que "em hipótese alguma apoiaria Manuela". Em coletiva, Melo afirmou que os dois já entraram em contato garantindo apoio.

Outros três políticos estavam indecisos: Juliana Brizola (PDT), Rodrigo Maroni (PROS) e Martins.

Em nota divulgada à imprensa, Juliana disse que saia das eleições com "sensação de dever cumprido". "Estamos muito felizes, a receptividade das ruas ao nosso projeto foi muito boa. Caminhamos por cada canto da nossa Porto Alegre, visitamos comunidades que, segundo os moradores, nenhum político andou". Em seguida, a assessora dela salientou que ainda não estava decidido sobre apoio a Manuela ou Melo.

Chama a atenção a indefinição de Maroni. Durante os debates, o político fez vários ataques à Manuela, chamando ela de "patricinha mimada", sonsa e traidora. No último embate, o candidato chegou a ser classificado como machista devido às manifestações. "Por enquanto não temos nada definido. Se ela ganhar, seria até melhor para eu provar o que eu falei", salientou o político.

Enquanto Martins salientou que a sigla não tem alinhamento de direita e esquerda, mas que pode apoiar quem estiver mais próximo do que o PV defende, que é a proteção do meio ambiente. "O partido não se guia por essa polarização."

A reportagem tentou contato com João Derly (Republicanos), Julio Flores (PSTU) e Nelson Marchezan Júnior (PSDB), mas não obteve retorno.