;(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 encaminha rescisão e Douglas Costa deixa pré-temporada do time

Jeremias Wernek

Do UOL, em Porto Alegre

21/01/2022 13h53

A segunda agem de Douglas Costa pelo Grêmio acabou. Clube e jogador ainda acertam detalhes burocráticos de uma rescisão de contrato, mas o meia-atacante já deixou a concentração e a pré-temporada do time e se prepara para o fim do vínculo. Oito meses após voltar da Europa, ele sai de Porto Alegre por conta do contrato com um dos maiores salários do elenco e adicionais. A tendência é que o camisa 10 assine com o Los Angeles Galaxy, dos Estados Unidos, logo depois.

Segundo apurou o UOL Esporte, Grêmio e Douglas Costa acertam a forma de pagamento de valores em aberto relativos ao ano de 2021. O jogador tem direito a reforço semestral pelas luvas do contrato assinado em maio.

  • De segunda a sexta, às 17h, o Canal UOL traz, ao vivo, as últimas informações do mercado da bola. Inscreva-se no YouTube de UOL Esporte e confira também as lives dos clubes, Posse de Bola e UOL News Esporte:

A negociação para a rescisão de contrato tomou corpo nos últimos dias, com reuniões entre a diretoria e o estafe do jogador. Na quinta-feira, Douglas Costa foi comunicado do avanço no acordo e deixou a concentração do elenco do Grêmio, em Porto Alegre. Horas antes, ele participou do primeiro treino tático do time de Vagner Mancini. Como titular.

Douglas Costa tinha salário fixo de cerca de R$ 800 mil, com gatilhos de desempenho que poderiam elevar o rendimento a R$ 1,5 milhão. Além disso, o contrato prevê pagamento de luvas a cada seis meses. Em fevereiro de 2022, o Grêmio deveria pagar cerca de R$ 2,5 milhões ao camisa 10.

Em recente encontro, a diretoria reiterou ao jogador que não possui fluxo de caixa para arcar com o contrato. Por fim, o meia-atacante indicou aceite para fim do vínculo. No momento das tratativas, o camisa 10 apontou que já tem acerto com novo clube. O Los Angeles Galaxy, da MLS (Major League Soccer) foi quem mais procurou o atleta nas últimas semanas.

Retorno polêmico

Com 31 anos, Douglas Costa foi apresentado pelo Grêmio em maio do ano ado. Sua estreia veio apenas em junho, na derrota para o Sport por 1 a 0. Ao todo, ele disputou 28 jogos, marcou três gols e deu duas assistências em sua segunda agem pelo Tricolor, clube que o lançou no futebol.

A agem pela capital gaúcha começou repleta de expectativa. O histórico positivo na Europa, as convocações para seleção brasileira e a ligação afetiva ao clube catapultaram o meia-atacante ao posto mais alto nas esperanças dos torcedores.

O tempo, porém, se encarregou de transformar a idolatria em desconfiança. Douglas sofreu com repetidas lesões, teve rendimento em campo aquém do esperado, não conseguiu assumir liderança no elenco e se envolveu em uma série de polêmicas. Além de reclamar sobre a postura do time, insistiu em liberação para realizar sua festa de casamento e acumulou relação turbulenta com os aficionados.

A reportagem do UOL Esporte enumerou, já neste ano, a série de polêmicas que tiveram Douglas como protagonista. A última delas se arrastou até os últimos dias e se encerra com o rompimento do contrato.