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

ANÁLISE

Ricardo Rocha: "São Paulo precisa pensar em uma reformulação"

Do UOL, em São Paulo

23/02/2021 01h34

Sem títulos desde 2012, o São Paulo viveu mais uma temporada sob pressão. As seguidas eliminações (Paulista, Libertadores, Copa Sul-Americana e Copa do Brasil), além da queda vertiginosa de produção no Brasileirão deixam em dúvida a capacidade do clube reagir em 2021. Afinal, do que o Tricolor mais precisa para evitar outra série de vexames na temporada?

No Fim de Papo, live pós-rodada do UOL Esporte —com os jornalistas Luiza Oliveira, Menon, Ricardo Rocha e Danilo Lavieri— foi discutido o que o São Paulo precisa fazer para não repetir outra temporada de decepções para seu torcedor. Na opinião dos comentaristas, será necessária uma reformulação, mas que esbarra em algumas dificuldades.

Ricardo Rocha cita um rival para explicar como o clube paulista pode dar a volta por cima. "O São Paulo precisa melhorar e pensar em uma reformulação. Em algumas situações, colocar a garotada, mesmo que perca alguns jogos. O Inter fez isso. O São Paulo precisa reagir. É muito vergonhoso o que se viu hoje contra um Botafogo esfacelado", disse, lembrando a derrota por 1 a 0 nesta segunda-feira (22) para o lanterna do Brasileirão e já rebaixado para a Série B.

"A questão financeira é um obstáculo gigante pra fazer reformulação. Quem se reestruturou e melhorou istrativamente brigou por título, como Palmeiras, Flamengo, Grêmio. O Santos foi uma exceção por conta do trabalho do Cuca. O São Paulo está do jeito que está como resultado de erros de outras gestões. Virou uma máquina de moer técnico. Não adianta trocar treinador enquanto não mudar o pensamento. Para não precisar vender o Brenner quando ainda tinha chance de título", opinou Lavieri.

Para Menon, o São Paulo precisa de mudanças no elenco. "Em termos de contratação, tem que procurar jogadores que estão de graça, terminando contrato, como Bruno Rodrigues [atacante, ex-Ponte Preta]. Que deem amplitude e profundidade ao elenco. Precisa de um volante que tenha boa saída de bola. Acho que falta mais um centroavante bom", listou.

Ricardo Rocha acredita que o São Paulo precisa, antes de ir ao mercado, acertar o time em campo —trabalho para Crespo, novo treinador do time. "O São Paulo tem bons jogadores e não tem dinheiro para contratar. Não tem que sair atirando. Bota essa garotada para jogar. O que me assusta mais é a parte tática. Quem não cumprir o que for pedido, sai do time", analisou.