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

Atlético-MG

Atlético-MG prevê mercado mais comedido e mira poucos alvos; veja quais

Eduardo Coudet ao lado de Rodrigo Caetano, após  o contrato com o Atlético-MG - Divulgação/Atlético-MG
Eduardo Coudet ao lado de Rodrigo Caetano, após o contrato com o Atlético-MG Imagem: Divulgação/Atlético-MG

Victor Martins

Do UOL, em Belo Horizonte

22/11/2022 04h00

Eduardo Coudet foi anunciado como técnico do Atlético-MG no dia 19, quando recebeu Rodrigo Caetano, diretor de futebol, e o ex-goleiro Victor, gerente de futebol, em Buenos Aires, e assinou o contrato que tem dois anos de duração. Mas 48 horas antes de firmar vínculo com o Galo, o treinador argentino tinha situação encaminhada e iniciou uma avaliação mais profunda do elenco alvinegro. Após primeiras análises, com e dos auxiliares, Chacho Coudet ou para a direção do Atlético posições que precisam ser reforçadas.

A prioridade do Galo neste primeiro momento no mercado da bola é buscar zagueiros para 2023. Lacuna identificada pelo novo treinador e que a diretoria do clube já tinha ciência de ser a posição que requer mais atenção neste momento. O Atlético terminou a temporada com Réver e Jemerson atuando como como titulares, com Nathan Silva no banco de reservas, enquanto Junior Alonso e Igor Rabello estavam no departamento médico.

Em uma temporada na qual o Atlético vai disputar pelo menos quatro competições - Mineiro, Copa do Brasil, Libertadores e Brasileiro -, a diretoria vai repetir a estratégia dos últimos anos e manter um elenco com várias opções para o técnico. Como Igor Rabello operou o joelho esquerdo e dificilmente terá condição de jogo antes de abril, e Junior Alonso não deve seguir na Cidade do Galo, a meta é buscar dois zagueiros.

"O que realmente me preocupa é o nível de expectativa. A forma como a gente comunica. O torcedor gostaria de ouvir de mim que estamos indo ao mercado de forma agressiva, vamos trazer seis, sete ou oito atletas. Não vão ouvir isso de mim. Não vão ouvir. Eu não trabalho assim", disse o diretor de futebol Rodrigo Caetano, que prevê um Atlético comedido no mercado, apenas fazendo ajustes no elenco.

Até pela situação financeira do Galo, que tem a maior dívida do futebol brasileiro, o investimento vai depender do que o clube conseguir realizar de vendas.

"São raros os clubes que, hoje, tem capacidade de investimento do Brasil. Diria dois, Três. Então, o que a gente vive não é nada diferente da maioria. A diferença é que nós temos um elenco de muito bom nível, que em dois anos ganhou cinco de nove competições. A gente não tem que depreciar, desvalorizar o que nós temos de bom", finalizou Caetano.

Atlético-MG