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

Grêmio resgata esperança com título, mas se mexe no mercado para a Série B

Pedro H. Tesch/AGIF
Imagem: Pedro H. Tesch/AGIF

Jeremias Wernek

Do UOL, em Porto Alegre

03/04/2022 04h00

A Arena do Grêmio viveu um sábado completamente oposto aos dias finais de 2021. Quatro meses após o rebaixamento, o Grêmio conquistou o pentacampeonato gaúcho e entregou doses de esperança à torcida. O título obtido diante do Ypiranga-RS encheu a diretoria de otimismo e deu fôlego ao trabalho para a disputa da Série B do Campeonato Brasileiro. Ainda assim, o elenco ará por mudanças com algumas chegadas e muitas saídas.

O Grêmio acumula os títulos estaduais de 2018, 2019, 2020, 2021 e 2022.

"A gente já tinha certeza de ter encontrado um rumo, mas o título rende validação externa, e ela é importante também", afirmou Roger Machado, treinador do Grêmio. "(O título) Significa mais confiança. Dá sentido de confiança, conjunto. Expectativa de caminho correto", disse Romildo Bolzan Jr., presidente do Grêmio.

Em outras palavras, o Grêmio entende que a festa pelo título estadual acaba com o período de luto pela queda para a Série B. Além de dar ânimo ao elenco, diretoria. Torcida. O clube como um todo. Tudo isso às vésperas da estreia na Segundona.

O clima não vai frear mudanças no elenco. As alterações já estavam alinhadas depois de avaliação de Roger Machado sobre o elenco. Uma das ideias é reduzir o número de atletas no grupo principal e, assim, saídas de suplentes e jovens aconteceram.

A mais emblemática é de Diego Churín. Reserva desde 2020, o centroavante será reado ao Atlético-GO. O argentino já havia sido liberado para procurar novo clube há tempos, mas a saída só aconteceu nos últimos dias.

O elenco principal também deve se despedir de Frizzo, volante que atuou pelo Botafogo em 2021, o meia-atacante Rildo, o atacante Vini Paulista e os volantes Victor Bobsin e Thiago Santos. O camisa 5, ex-Palmeiras, ainda depende de acerto com novo clube, mas já tem tratativas em andamento para deixar Porto Alegre.

Eles se juntam a Orejuela, contratado em janeiro e liberado após oito partidas e avaliação de que não se encaixou no elenco. Agora vai jogar pelo Athletico.

As contratações se somarão nos próximos dias. Depois de Edilson e Rodrigo Ferreira, ex-Avaí e Mirassol, respectivamente, o Grêmio tem acordo com Gabriel Teixeira, meia-atacante do Fluminense, e Elkeson, livre no mercado da bola após deixar o Guangzhou Evergrande, da China.

A diretoria ainda analisa o mercado atrás de um meia, estilo "número oito" para a sequência da temporada.

"Agora, com essa estrutura, vamos buscar jogadores com essa característica. Quantos volantes eu tenho? Quantos jogadores de beirada eu tenho? Tenho jogadores para manter a posse ou vou me expor muito para isso? São conclusões que vamos ter no dia a dia e nos jogos, por jogarmos muito", comentou Roger em outro trecho da entrevista.

O Grêmio estreia na Série B contra a Ponte Preta, no sábado (9), em Campinas. Mas quando entrar em campo, vai carregar uma dose nova de esperança.