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

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Lavieri: Galiotte merecia mais crédito com a torcida no adeus ao Palmeiras

Maurício Galiotte levanta a taça da Copa Libertadores, após o título do Palmeiras - Cesar Greco
Maurício Galiotte levanta a taça da Copa Libertadores, após o título do Palmeiras Imagem: Cesar Greco

Colunista do UOL

15/12/2021 11h30

Receba os novos posts desta coluna no seu e-mail

Email inválido

O dia de hoje marca o fim de uma era vitoriosa no Palmeiras. Maurício Galiotte deixa o clube como o maior presidente da história do Alviverde e merecia mais crédito com a torcida depois de seu trabalho. Ainda mais depois de tanto ser criticado, chamado de banana e ter até seu escritório invadido por protestos.

É evidente que ele cometeu erros, até porque a perfeição não existe. O próprio ite alguns deles em entrevista concedida a mim e a Diego Iwata, repórter do UOL. Ainda há outros na opinião dessa coluna que ele não se aprofundou tanto. Contratar Vanderlei Luxemburgo depois de falar que iria mudar os rumos do time foi um deles. Dar muita autonomia para Alexandre Mattos em 2019 foi outro. Demorar a se posicionar em alguns momentos de crise também entra na conta.

Mas a verdade é que ele teve muito mais acerto do que erro. Galiotte ganhou quase tudo o que disputou. Foi o único da história do Palmeiras a conquistar um título internacional, um nacional e um estadual numa mesma temporada. Dispensável também falar que foi o único a vencer duas Libertadores em um só ano.

Mas mais do que só ganhar, manteve sua equipe sempre entre os protagonistas. Teve a melhor campanha da primeira fase em 2017 e 2018 e foi campeão do Paulista em 2020 após 12 anos de tabu. Teve também a melhor campanha da fase de grupos da Libertadores em 2018, 2019 e 2020 e teve 75% dos pontos nessa competição. Foi o único a colocar o Alviverde no torneio sul-americano em todos os anos de seu mandato e transformou o time no brasileiro com mais participações. Ganhou ainda um Campeonato Brasileiro e uma Copa do Brasil.

Apesar de ter demorado um pouco a dar chances aos garotos, Galiotte também deixou o Palmeiras com opções na base como há muito tempo o clube não tinha: Gabriel Menino, Gabriel Veron, Patrick de Paula, Danilo, Renan... E os últimos jogos do Brasileirão deste ano mostraram que tem mais por aí. Quem precisa de Copinha?

Fora de campo, o cartola foi um dos poucos a não demitir nenhum funcionário durante toda a pandemia. Pelo contrário: manteve todos e ainda pagou um prêmio extra usando o dinheiro da conquista da Libertadores. Não é à toa que saiu muito homenageado da Academia de Futebol.

Financeiramente, foi responsável até demais. Não gastou mais do que o clube podia, não aumentou a dívida e deixa de herança a Leila Pereira uma equipe totalmente saudável que pode ir ao mercado da bola para dar mais opções a Abel Ferreira, que, aliás, é outro acerto de Galiotte. Foi ele o responsável pela contratação do maior técnico da história do clube.

É uma situação bem parecida com a de Anderson Barros. O diretor chegou para ser muito mais low profile em relação a seu antecessor e para controlar os gastos. Ele cumpriu com louvor os objetivos dados a ele e ainda conseguiu manter o time na rota de vitórias. Ao menos teve seus méritos reconhecidos e continuará na próxima gestão à frente do futebol.

É claro que os títulos ajudam a mostrar como ele mais acertou do que errou. Mas boa parte da torcida do Palmeiras parece ter esquecido rapidamente que há menos de 10 anos o time flertava com a terceira queda de sua história e, hoje, inicia toda temporada como o favorito a tudo o que disputa.

Siga também as opiniões de Danilo Lavieri no Twitter e no Instagram