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

Danilo Lavieri

Palmeiras: Abel recebe elogios internos por mudar postura de jogadores

Abel Ferreira, técnico do Palmeiras, durante partida contra o Ceara, pelas quartas de final da Copa do Brasil 2020 - Marcello Zambrana/AGIF
Abel Ferreira, técnico do Palmeiras, durante partida contra o Ceara, pelas quartas de final da Copa do Brasil 2020 Imagem: Marcello Zambrana/AGIF

Colunista do UOL

12/11/2020 14h48

Receba os novos posts desta coluna no seu e-mail

Email inválido

O principal elogio feito ao trabalho de Abel Ferreira no Palmeiras é a mudança de postura dos jogadores não só nas partidas, mas também no dia a dia.

A diretoria do Alviverde ficou muito satisfeita ao ver o time com mais vontade dentro do gramado e nos treinos. O português ainda está sendo elogiado pela cúpula palmeirense por suas preleções e pelo jeito que envolve os atletas.

Um dos motivos que fez o Palmeiras optar pela demissão de Vanderlei Luxemburgo, além da falta de evolução dentro de campo, foi pela apatia demonstrada em algumas partidas, como foi a contra o São Paulo, na primeira derrota da história dentro do Allianz Parque, e contra o Coritiba, também em casa.

O diagnóstico da época é que o grupo "não comprava" mais o discurso do então treinador e que o substituto precisaria conseguir "convencer" os atletas das ideias de jogo.

Ainda depois da saída de Luxa, a monotonia persistiu contra o Fortaleza, quando o time já estava sob o comando de Andrey Lopes. Depois de uma conversa com o grupo, incluindo representantes do Comitê Gestor, houve uma evolução nesse sentido.

Abel já deixou claro que tem pouco tempo para fazer mudanças táticas na equipe por conta do calendário. Por conta disso, ele vai usar jogos como os de ontem, em que seu time já vencia o Ceará por 3 a 0, para fazer testes.

Nesse jogo, ele colocou uma linha com três zagueiros, onde dois deles ficavam bem abertos, um de cada lado, próximos à linha lateral, com outro centralizado. Assim, os dois laterais subiam quase na intermediária ofensiva, com dois meio-campistas responsáveis por buscar a bola na saída da área defensiva.

O Palmeiras agora encara o Fluminense, às 21h30 de sábado, em jogo que marca um confronto direto pelas posições mais altas do Brasileirão. O time seguirá com vários desfalques e agora vive a dúvida se poderá contar com Zé Rafael, que ará por novas avaliações médicas até lá.