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

Demissão de Diniz não tira São Paulo do roteiro de tragédias anunciadas

Fernando Diniz comanda o São Paulo à beira do campo contra o Atlético-GO -  Heber Gomes/AGIF
Fernando Diniz comanda o São Paulo à beira do campo contra o Atlético-GO Imagem: Heber Gomes/AGIF

Colunista do UOL

01/02/2021 16h29

Receba os novos posts desta coluna no seu e-mail

Email inválido

Enquanto não perceber que precisa de uma mudança de gestão e de como conduzir sua política interna, o São Paulo continuará nesse círculo que só traz aborrecimentos para o seu torcedor. A demissão de Fernando Diniz e a saída de Raí hoje (1) deixam alguns aliviados e outros chateados. Mas a verdade é que a perspectiva de que algo vai mudar é bem pequena. O ado recente mostra isso.

É importante destacar que toda essa pressão pelo título do Nacional só existe porque o time comandado pelo mesmo Diniz demitido hoje conseguiu alcançar uma posição que não parecia possível. Quem colocava o São Paulo como favorito? Claro que há falhas no trabalho do técnico, mas ele está longe de ser o único culpado.

É verdade que os vexames recentes foram doloridos. Eliminações como a do Paulista, da Libertadores e da Sul-Americana da maneira que foram não combinam com a história do Tricolor, mas será que a máquina de moer técnicos é a única maneira de melhorar?

A mudança de gestão de Leco para Julio Casares é um exemplo mais do que claro da falta de sensibilidade com um time que ainda disputava o título. Ninguém nunca ouviu o ditado "em time que está ganhando não se mexe"? Será que é coincidência a derrocada ter acontecido justamente em janeiro, logo após a troca na presidência, no comando do futebol e no ambiente vivido no Centro de Treinamento?

Casares optou por cumprir promessas aos seus aliados, com decisões políticas e não técnicas. E isso é absolutamente normal em um mundo pautado pelas alianças feitas durante a eleição. Mas até quando o futebol deve sofrer influência de algumas centenas de conselheiros no futuro de um time que tem milhões de torcedores?

Há um exemplo claro do outro lado do muro. Depois de prometer modernização, o Palmeiras ouviu dois ou três conselheiros influentes e trouxe Vanderlei Luxemburgo. A correção de rota veio a tempo, pautada pelo profissionalismo e escolha técnica. Não é à toa que o escolhido nem mesmo títulos tinha no currículo e mesmo assim o resultado já pode ser considerado positivo.

Será que era necessário promover as mudanças com o time em primeiro lugar do Brasileirão para agradar aos conselheiros? Foi certo tirar Alexandre Pássaro que fazia o elo entre elenco e presidência em um momento financeiro tão delicado? Quem ficou responsável pela blindagem? Muricy Ramalho tem experiência no futebol, mas já conhecia o grupo para lidar com essa responsabilidade? Qual o sentido de colocar conselheiros na hora das cobranças internas no CT?

O São Paulo já teve treinadores de todos os tipos de trabalho, das mais diferentes idades e nacionalidades. Impaciente, a torcida não tolera mais ninguém, já triturou ídolos e não deixou de reclamar mesmo quando estava com uma vantagem de sete pontos da liderança. Que tipo de incentivo tem o elenco depois de ver seu próprio ônibus apedrejado?

A sensação que o time ava nessa reta final é que faltava espírito de campeão, faltou sentimento dos atletas que eles pertenciam àquele clube, que poderiam fazer parte daquela história. Faltou identidade com o time que eles defendiam. E isso não é só culpa do treinador. É resultado de um sistema em que o poder político é o mais importante de tudo.

A máquina vai continuar assim enquanto as decisões forem pautadas pela pressão dos que votam e não com base na aposta de um trabalho que possa ser longevo e tenha início meio e fim, que não sofra interferências políticas.

A preparação para 2021 está longe de dar uma perspectiva otimista ao seu torcedor. Se for responsável, a atual gestão fará um planejamento com pouquíssimos gastos e muita readequação financeira. Não há previsão da volta da receita obtida com a bilheteria, não haverá pagamento por título e tudo o que vai restar é continuar vendendo qualquer destaque de Cotia.