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

Após tropeço, Crespo pede paciência no São Paulo: "não temos dinheiro"

Crespo viu um duelo equilibrado com o Fortaleza no Morumbi - Pedro H. Tesch/AGIF
Crespo viu um duelo equilibrado com o Fortaleza no Morumbi Imagem: Pedro H. Tesch/AGIF

Do UOL, em São Paulo

17/07/2021 21h26

O técnico Hernán Crespo falou pouco sobre o desempenho do São Paulo na derrota para o Fortaleza por 1 a 0, hoje (17), no Morumbi, pelo Campeonato Brasileiro. Além de analisar que o duelo foi equilibrado, ele pediu tempo para "construir um novo São Paulo" já que os recursos financeiros são escassos no Morumbi.

"Sabíamos que aceitar o trabalho no São Paulo seria difícil pela situação financeira. Como resolver? Com potencial econômico. Vamos trabalhar dia a dia sabendo que vamos sofrer e ar por situações difíceis. Mas vamos continuar a trabalhar todos juntos. A diretoria pagando dívidas e nós tentando ser competitivos na medida do possível", explicou.

"Estamos ando por um momento muito difícil para construir um São Paulo muito melhor. Precisamos de tempo porque não temos dinheiro. Porque se temos dinheiro, o tempo é mais curto", complementou o treinador.

O tempo pedido por Crespo acontece após a quinta derrota do time no Brasileirão, justamente após um momento de recuperação. O Tricolor começou o campeonato sem nenhuma vitória nas primeiras nove partidas, mas vinha de triunfos sobre Internacional e Bahia. Como voltou a tropeçar, estacionou no 14º lugar, com 11 pontos.

O São Paulo encontra-se em um momento decisivo na temporada 2021. Na próxima terça-feira (20), enfrenta o Racing, na Argentina, pela partida de volta das oitavas de final da Libertadores. E o confronto acontece antes de uma sequência difícil no Brasileirão (Flamengo, Palmeiras, Athletico-PR e Grêmio. Em meio a essas partidas, há o duelo com o Vasco pelas oitavas de final da Copa do Brasil.

E para um clube com problemas financeiros, Crespo entende que a única solução para encarar a sequência da temporada é com trabalho.

"Aconteceu algo extraordinário (título paulista) que, para mim, é muito pequeno para a história do São Paulo, mas que é muito importante para o presente do clube. Sabemos que a situação é muito difícil. Quando é fácil, é fácil falar. Fora daqui, todos são dirigentes, treinadores. Todos falam e todos têm a solução. Mas a única solução é o trabalho. E quem faz o trabalho somos eu e os dirigentes, sabendo a situação crítica. O problema é que a história do São Paulo é muito maior do que a realidade", sentenciou.

Sobre o duelo contra o Fortaleza, Crespo lamentou a definição do resultado em um lance de bola parada. "Hoje foi um jogo equilibrado, e o São Paulo queria ser protagonista para jogar no campo rival. Faltou tranquilidade para terminar as ações", disse. "O jogo termina com uma bola parada. Uma pequena situação a favor deles definiu o jogo. Mas acredito na ideia de jogar o jogo e de ser protagonista. Talvez faltou um pouco de qualidade e precisão, mas as intenções foram corretas."