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

Palmeiras

Abel Ferreira se queixa de falta de tempo para treinar o Palmeiras

Thiago Fernandes

Do UOL, em São Paulo

28/12/2020 04h00

Abel Ferreira comandou o primeiro treino à frente do Palmeiras em 3 de novembro ado. Desde o início de seu trabalho na Academia de Futebol até hoje, o português não teve muito tempo para trabalhar mudanças táticas no elenco que disputa Copa do Brasil, Brasileirão e Libertadores. Neste período, teve no máximo quatro dias para descansar o plantel ou fazer exercícios entre as partidas.

Neste período de 56 dias, o time disputou 16 partidas. Abel Ferreira ainda ficou fora de combate por ter sido infectado pelo novo coronavírus e se ausentou de três jogos. O português lamenta a falta de tempo para realizar atividades com o plantel.

"Não é por falta de qualidade e capacidade de gerir os jogadores. Nós temos dois dias para cada jogo. Há jogos que nem temos 72 horas para preparação. Estamos jogando no red line, perdemos só um. Eu não treino 11 jogadores, treino 23. Se desse tempo para treinar, teria uma dinâmica muito maior. Eu tento treiná-los através do treino tático específico e através dos vídeos", disse o comandante palmeirense.

"Você sabe que não gosto de arranjar justificativas. Não temos tempo para treinar desde que cheguei, não dá para treinar, não consigo fazer exercícios. Eu só consigo fazer treino tático específico parado e mostrar vídeos. Somos uma equipe que está no red line. Temos que fazer em razão do contexto", acrescentou.

A comissão técnica ainda perde jogadores por problemas clínicos. Zé Rafael, Mayke e Rony não aram a maratona de jogos e ficaram fora da vitória por 1 a 0 sobre o Red Bull Bragantino, na noite de ontem (27). Além da ausência do trio, outro jogador — Gabriel Veron — sofreu um problema físico durante o jogo e deve se ausentar das próximas partidas. A perda do garoto é mais um fato que preocupa Abel Ferreira.

"A lesão preocupa, mas o que mais me preocupa é que temos o Wesley fora e o Rony fora. Eu precisava do plantel ao meu dispor, poder escolher, poder treiná-los. O risco que corremos é esse, foi o Patrick [de Paula], o Mayke, o Zé [Rafael], o Luiz [Adriano]. Agora é Gabriel Veron", comentou.

Palmeiras