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

Grêmio anuncia renovação com Renato Gaúcho até o final de 2021

Grêmio renova contrato com Renato Gaúcho até o final da temporada de 2021 - Lucas Uebel / Grêmio FBPA
Grêmio renova contrato com Renato Gaúcho até o final da temporada de 2021 Imagem: Lucas Uebel / Grêmio FBPA

Jeremias Wernek

Do UOL, em Porto Alegre

05/03/2021 13h29

O Grêmio anunciou no começo da tarde desta sexta-feira (5), a renovação de contrato de Renato Gaúcho. O treinador estendeu seu vínculo com a equipe até o final da temporada de 2021. O acordo foi selado na noite de quinta, logo após chegada da delegação gremista a Atibaia, em preparação para o segundo jogo da final da Copa do Brasil, diante do Palmeiras.

Renato já havia encaminhado acordo com os dirigentes na semana ada. Dois encontros em Porto Alegre alinharam termos da renovação, que não terá aumento salarial.

"Essa renovação se dá antes da final da Copa do Brasil exatamente porque acreditamos no projeto que tem de se renovar, vai se renovar. Cada vez mais será reforçado. Temos a expectativa de logo em seguida de começar, o ano segue, e a continuidade do projeto cada vez mais consistente é fundamental. E isso implica em tres situações. Manutenção da estabilidade econômica, formação de jogadores e, principalmente, condição de competitividade. E para que isso aconteça, alguns processos serão bem mais aprimorados. Antecipação de aproveitamento de jogadores, contratações pontuais, organização de processos internos. Tudo isso faz parte, exatamente, de processo que se melhora por dentro. Por dentro. Ou seja, não vamos fazer rupturas. Vamos melhorar e qualificar nossos processos internos. Por isso digo a torcida, com certeza, que vamos para mais um ano vitorioso", disse Romildo Bolzan Jr. presidente do Grêmio, em vídeo divulgado pelo clube.

Renato está no Grêmio desde setembro de 2016 e sempre assinou contratos até o fim das temporadas. A renovação atual dividiu as atenções com a decisão da Copa do Brasil.

"Obrigado presidente, eu agradeço muito ao senhor, a diretoria do Grêmio e a nossa torcida. Vamos dar sequência aos nossos projetos, que são fundamentais para esse grande clube e acima de tudo trabalhar bastante com os guris e se Deus quiser aproveitar mais alguns nesses anos. É fundamental esse trabalho que temos feitos com a base e buscar mais títulos, que é nosso objetivo", disse ele para os site oficial do clube.

A renovação, que foi anunciada pelo presidente Romildo Bolzan Junior, aconteceu dias antes da decisão da Copa do Brasil, que acontecerá no domingo, 7. O Grêmio visitará o Palmeiras, em São Paulo, para tentar reverter o placar de 1 a 0 do jogo de ida, no Rio Grande do Sul.

Em 2020, o profissional assumiu o posto do técnico que mais comandou o Grêmio na história. Atualmente, ele tem 407 partidas em seu currículo pela equipe gaúcha.

Durante os cinco anos de trabalho, Renato já conquistou Copa Libertadores, Recopa Sul-Americana, Copa do Brasil, Recopa Gaúcha e três campeonatos estaduais.

Grêmio