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

Fluminense

Destaque do Flu, Martinelli exalta 'equilíbrio' e mira vaga na Libertadores

Volante Martinelli vem sendo um dos destaques do Fluminense nesta reta final de Brasileiro - Mailson Santana / Fluminense F.C.
Volante Martinelli vem sendo um dos destaques do Fluminense nesta reta final de Brasileiro Imagem: Mailson Santana / Fluminense F.C.

Alexandre Araújo e Caio Blois

Do UOL, no Rio de Janeiro (RJ)

12/02/2021 04h00

Invicto há seis partidas e há quatro sem levar gols, a retomada do Fluminense no Campeonato Brasileiro vem jogando holofote sobre alguns pontos do time, dentre eles, o jovem Martinelli. Cria do clube, o volante conquistou espaço na equipe do técnico Marcão e está sendo peça de destaque nesta reta final da competição.

Promovido no meio da temporada, Martinelli se tornou opção para um setor que patinou em busca da formação ideal após a saída do titular Dodi, recentemente anunciado pelo Kashiwa Reysol, do Japão. Em meio a nomes mais experientes no elenco, ganhou vaga e se tornou cativo nas escalações iniciais.

"O campeonato da nossa equipe foi bem regular. Acredito que, após a saída do Odair, fosse natural que acontecesse um período mais irregular. Mas sempre tive tranquilidade e trabalhei firme. Acredito que o meu bom momento, e do próprio time, se reflete justamente nesse objetivo de levar o Fluminense para a Libertadores", disse Martinelli ao UOL Esporte.

Logo que Marcão assumiu o comando da equipe, ocupando a vaga de Odair Hellmann — que foi para o Al-Wasl, dos Emirados Árabes —, o Fluminense viu a média de gols sofridos na competição dobrar. À época, o técnico procurava achar o ponto de equilíbrio entre os setores do time. E parece ter alcançado. Nas últimas quatro partidas, o Tricolor saiu de campo sem buscar a bola no fundo da própria rede, ponto crucial para os elogiados resultados recentes.

"Acredito que foi mais um período mesmo de adaptação ao estilo de jogo proposto pelo Marcão. Apesar de ser auxiliar na época do Odair, o Marcão tem umas linhas de pensamento mais próprias. Foi mais uma questão de ajuste. Tivemos algumas saídas de jogadores, é uma temporada atípica por conta da Covid. O importante foi que, nessa reta final, achamos o ponto de equilíbrio e o time está apresentando um bom desempenho e próximo de uma vaga para a Libertadores", afirmou o volante.

Por falar em Marcão, no elenco profissional reencontrou-se com o comandante, com quem trabalhou no sub-23. Ex-volante e ídolo do clube, Marcão conversa bastante e indica os rumos aos mais jovens. Martinelli salienta a importância do atual treinador, e lembra também a contribuição de Odair no processo de transição:

"Marcão é um cara sensacional. Procura ter uma atenção especial com os mais jovens. No meu caso, ainda tem o fato de ser da mesma posição que ele desempenhava como jogador. Ele mostra caminhos e dá exemplos do seu tempo de jogador. Isso vem me ajudando bastante nessa sequência como titular. O próprio Odair também colaborou muito, principalmente quando subi para o profissional."

Diante dos desafios da temporada, o Flu viu a ascensão de diversos nomes da base, mantendo uma tradição de clube revelador. No Tricolor desde 2017, quando chegou ainda para o sub-17, Martinelli diz acreditar que o fato de ter jogadores que foram companheiros na base ajuda no entrosamento e projeta que "muita gente boa" vai subir em breve.

"A base do Fluminense tem esse histórico de revelar com muita qualidade. E a essência de um clube está justamente nas categorias inferiores. O fato de ter, hoje, no elenco profissional jogadores que são meus contemporâneos na base é um dos fatores para essa adaptação tranquila. Aqueles que subiram um pouco antes ajudam na adaptação, tem a questão do nosso entrosamento natural. Acredito que o Fluminense está bem servido, hoje, no profissional de grandes jovens jogadores. E ainda tem muita gente boa que está na base e vai nos ajudar em breve", apontou.

Fluminense