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

Com Grêmio 100%, Renato Gaúcho ativa o modo marrento

Renato Gaúcho, técnico do Grêmio, durante jogo contra o São Luiz - WILLIAM ANACLETO/ISHOOT/ESTADÃO CONTEÚDO
Renato Gaúcho, técnico do Grêmio, durante jogo contra o São Luiz Imagem: WILLIAM ANACLETO/ISHOOT/ESTADÃO CONTEÚDO

Colaboração para o UOL, em Maceió

13/02/2023 04h00

O Grêmio é o único time 100% no Campeonato Gaúcho, com sete vitórias em sete jogos e folga na liderança. Até agora, o time só sofreu três gols e fez 14. Ainda assim o técnico Renato Gaúcho reclamou do time que venceu o Avenida por 2 a 0.

Com a cara séria, ele disse na coletiva que 'não gostou de nada' do que viu em campo. "Não adianta reclamar do calor. Estava calor para as duas equipes. Eles não tinham 15 jogadores, tinham 11".

Depois do time, Renato cobrou a diretoria por reforços. "Nunca falamos que nosso grupo estava fechado. Eu entendo algumas dificuldades financeiras que o clube está ando, mas a gente troca ideias. Vamos ver se a gente, de repente, acha esse jogador (veloz e habilidoso). Achar a gente já achou. O problema é a grana. Vamos ver se consigo convencer o presidente e a gente traz".

A estreia da Copa do Brasil foi a deixa para criticar a antiga diretoria, que o demitiu: "Se o Grêmio vai jogar contra a Campinense desde a primeira fase, o Grêmio é culpado. Quando eu estava aqui, o Grêmio entrava sempre antes dos 16. Os entendidos de futebol que estavam aqui jogaram o Grêmio para a segunda (divisão) e a gente vai pagar a conta indo lá para o Nordeste". O Grêmio enfrentará a Campinense às vésperas do Gre-Nal.

E sobrou até para a torcida que, de vez em quando reclama de algum nome na escalação: "Me manda embora e traz esses torcedores pra escalar o time."

Elogio e cutucada no novo contratado

Durante a coletiva, o técnico elogiou a chegada de Vina: "É um jogador interessante. Acompanho ele há muito tempo no Ceará. Encosta bastante no atacante, no caso no Luis (Suárez) hoje. Sabe fazer gols. Chuta."

Mas não garantiu o novo atacante como titular: "É mais um. Ninguém chega no Grêmio e tem uma cláusula de titularidade. Todos têm oportunidades e ele terá as dele. É um jogador que ajudou bastante o Ceará nesses últimos anos e vai nos ajudar bastante. É importante se ter peças de reposição também."

Foi curioso ver a recepção de Renato ao jogador. Ela está neste vídeo (abaixo) divulgado pelo Grêmio. O jogador pergunta se o técnico está tranquilo, e ele responde: "Você chegou, né? Vamos ver agora. Contra mim era um leão".

Veja a chega de Vina e a conversa entre ele e Renato