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

Paes quer Cesar Maia no governo para interlocução com o filho, Rodrigo Maia

Paes confirmou Pedro Paulo na Secretaria de Fazenda e Calero na pasta de Transparência e Governança - Adriano Ishibashi/Framephoto/Estadão Conteúdo
Paes confirmou Pedro Paulo na Secretaria de Fazenda e Calero na pasta de Transparência e Governança Imagem: Adriano Ishibashi/Framephoto/Estadão Conteúdo

Gabriel Sabóia e Igor Mello

Do UOL, no Rio de Janeiro

30/11/2020 15h29Atualizada em 30/11/2020 19h34

Menos de 24 horas depois do resultado que o elegeu prefeito do Rio de Janeiro pela terceira vez, Eduardo Paes (DEM) confirmou os nomes dos deputados federais Pedro Paulo (DEM) na Secretaria de Fazenda, Planejamento e Controladoria e Marcelo Calero (Cidadania) na pasta de Governo e Integridade Pública.

O nome de Daniel Soranz na Secretaria de Saúde já estava confirmado. O quarto nome a ocupar um cargo no 1º escalão do governo deve ser o do vereador e ex-prefeito da cidade, Cesar Maia (DEM), pai do presidente da Câmara dos Deputados, Rodrigo Maia (DEM) —a quem chamou de "rei da estabilidade".

Padrinho político de Paes, Cesar Maia deve ocupar uma nova secretaria, que ainda não foi nomeada, mas que deve dar a ele um papel de "primeiro-ministro" do governo municipal. Na entrevista de hoje, Paes relatou ao UOL que o convite será feito ao ex-prefeito, hoje vereador reeleito pelo DEM.

Além de deixar a Câmara Municipal, Cesar Maia aria a fazer a interlocução direta com Rodrigo Maia. Paes aproveitou a oportunidade para "lançar a campanha" de Rodrigo Maia por um terceiro mandato na Câmara dos Deputados.

"Nem sei se a legislação permite, mas já estou lançando a campanha por mais um mandato dele. É o rei da estabilidade. Com o país 'pipocando' desde o fim do mandato do Michel [Temer], ele tem conseguido apaziguar conflitos", afirmou.

As escolhas para os cargos respeitam certos critérios. Calero, que chegou a ser pré-candidato à prefeitura, abriu mão da disputa para apoiar Paes e assumiu a coordenação da campanha. O outro escolhido, Pedro Paulo, é conhecido como o "fiel escudeiro" de Paes e foi candidato apoiado por ele à prefeitura em 2016.

A nomeação de Cesar Maia, por sua vez, homenagearia o padrinho político, além de criar uma ponte de diálogo com Brasília. Além disso, colocaria mais um nome do Democratas na estrutura de poder: a ida de Maia para a secretaria abre caminho para que o 1º suplente da legenda, Átila Nunes, assuma o cargo na Câmara dos Vereadores.

Fato parecido deve acontecer graças à nomeação de Pedro Paulo, com uma vaga aberta pela suplência na Câmara Federal.

Paes conversou com jornalistas em entrevista coletiva sobre as primeiras ações de combate à pandemia do coronavírus em seu governo.