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

São Paulo

Perto de ser comprado, Calleri eleva média e vira rei dos clássicos no SPFC

Calleri comemora gol marcado de pênalti para o São Paulo na partida contra o Cuiabá, válida pelo Campeonato Brasileiro - Marcello Zambrana/AGIF
Calleri comemora gol marcado de pênalti para o São Paulo na partida contra o Cuiabá, válida pelo Campeonato Brasileiro Imagem: Marcello Zambrana/AGIF

Brunno Carvalho

Do UOL, em São Paulo

25/05/2022 04h00

A permanência praticamente certa de Jonathan Calleri é motivo de comemoração para o torcedor do São Paulo. Depois de meteórica agem em 2016, o argentino voltou ao Morumbi com números ainda melhores e uma diferença fundamental: a importância em clássicos.

Desde que voltou no último dia da janela de transferências do meio do ano ado, Calleri disputou 11 clássicos e não participou de gols em apenas três: as derrotas por 1 a 0 e 4 a 0 para o Palmeiras e a vitória por 3 a 0 sobre o Santos, todas no Paulistão deste ano.

Nas outras sete partidas, Calleri foi fundamental. O argentino balançou as redes sete vezes e deu uma assistência. Foram dois gols contra o Santos, dois contra o Palmeiras e três contra o Corinthians, além de um e para gol.

No último domingo, Calleri abriu o placar para o São Paulo contra o Corinthians, na Neo Química Arena. O gol por muito pouco não significou a quebra do tabu do time tricolor de nunca ter vencido na casa do rival. Adson, aos 38 minutos do segundo tempo, no entanto, garantiu o empate por 1 a 1.

A atuação em clássicos é uma das principais mudanças de Calleri em relação à primeira agem, em 2016. Naquela vez, o argentino era cobrado pelo fraco desempenho contra os principais rivais. Ele jogou duas vezes contra o Santos, uma contra o Palmeiras e uma contra o Corinthians, e não marcou nenhum gol nem deu assistência.

Média segue próxima, mas Calleri fica mais decisivo

Calleri jogador do São Paulo comemora o gol marcado durante partida contra o Palmeiras pelo Campeonato Paulista  - Marcello Zambrana/AGIF - Marcello Zambrana/AGIF
Calleri jogador do São Paulo comemora o gol marcado durante partida contra o Palmeiras pelo Campeonato Paulista
Imagem: Marcello Zambrana/AGIF

Os clássicos não são os únicos momentos em que Calleri se mostra mais decisivo do que na primeira agem. Se considerarmos os jogos em que os gols do atacante influenciaram diretamente no resultado, o argentino praticamente dobrou sua importância.

Na rápida agem de cinco meses que teve em 2016, Calleri participou de 31 jogos e garantiu 12 pontos para o São Paulo. Desde que voltou, em agosto do ano ado, o argentino participou de 42 jogos e já garantiu 23 pontos ao clube. A conta é feita com base nos gols que transformaram uma derrota em empate ou um empate em uma vitória.

A média de gols das duas agens são bem parecidas, com leve vantagem para 2016. Calleri deixou o São Paulo daquela vez tendo feito 16 gols em 31 jogos, com uma média de 0,52 gols por jogo. Na atual agem, ele já fez 20 gols em 42 partidas, com 0,47 g/j.

O duelo contra o Corinthians no domingo fez com que Calleri atingisse a meta prevista em seu contrato para que o São Paulo fosse obrigado a comprá-lo do Deportivo Maldonado-URU. O clube paulista pagará parceladamente os US$ 3 milhões necessários para adquirir o jogador de 28 anos.

Os números de Jonathan Calleri nas duas agens pelo São Paulo:

2016

31 jogos
16 gols
0 assistências
Média: 0,52 gol por jogo
Desempenho em clássicos: 0 gols e 0 assistências em quatro jogos

2021/22

42 jogos
20 gols
1 assistência
Média: 0,47 gol por jogo
Desempenho em clássicos: 7 gols e uma assistência em 10 jogos

São Paulo