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

Rafinha elogia Domènec Torrent, mas diz: 'Treinador não precisa ser gringo'

Domenec Torrent, que atuou com Guardiola no Manchester City - Divulgação/NY City FC
Domenec Torrent, que atuou com Guardiola no Manchester City Imagem: Divulgação/NY City FC

Colaboração para o UOL, em São Paulo

24/07/2020 20h10

O lateral direito Rafinha, do Flamengo, que trabalhou com Domènec Torrent no Bayern de Munique, elogiou o treinador espanhol, que tem sido especulado como um dos possíveis substitutos de Jorge Jesus. O jogador contou que ele era o responsável da comissão técnica de Guardiola por dar os treinamentos no clube alemão.

"O Dome, eu falo até assim porque eu tenho uma intimidade legal com ele. Foram três anos que trabalhamos juntos no Bayern, depois ele foi para o City com o Pep. É aquela história, ele é da escola do (Johan) Cruyff, né? É um cara que sabe tudo e mais um pouco de bola. No Bayern, os treinamentos quem dava era ele, o Guardiola ficava só corrigindo e tal", disse Rafinha em entrevista ao Resenha ESPN.

"É um cara que dispensa comentários, eu conheço bem e posso falar com propriedade porque é um cara com quem eu trabalhei. Não só eu, né? Ele fez muita gente no Bayern crescer muito. E agora ele está de primeiro treinador, aí não tivemos mais contato. Mas o tempo que trabalhamos juntos dispensa comentários", continuou o jogador.

'Não precisa ser gringo'

Apesar dos elogios, Rafinha não entende que ser estrangeiro seja um requisito para assumir o Flamengo. O lateral direito, porém, acredita que os melhores treinadores brasileiros não estão disponíveis no mercado.

"Eu já falei isso uma vez: eu não sei de onde tiraram que precisa contratar treinador estrangeiro, não sei de onde tiraram isso. Não sei quem falou isso. E também não cabe a mim falar sobre isso porque sou atleta e a do meu limite ficar falando disso", opinou Rafinha.

"Mas, poxa, no Brasil existem tantos treinadores bons, né? Sendo realista, os que tem muita qualidade estão tudo empregados. Não é porque o Jesus que é europeu deu certo que o próximo técnico precisa ser europeu. Não, eu acho que a diretoria tem que buscar um treinador que tenha as mesmas ideias que o clube tem, que siga a nossa linha de trabalho que daí eu acho que dá certo. Não é porque o Jesus deu certo que o treinador precisa ser gringo", destacou.

Enquanto o Flamengo não define o novo treinador, Maurício Souza, comandante da equipe sub-20, é o responsável por comandar os treinos da equipe.