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

Kannemann diz que Grêmio perdeu a cabeça e define queda: "golpe duro"

Lucas Uebel/Grêmio FBPA
Imagem: Lucas Uebel/Grêmio FBPA

Jeremias Wernek

Do UOL, em Porto Alegre

14/04/2021 22h48

Walter Kannemann, zagueiro do Grêmio, definiu a eliminação na fase preliminar da Copa Libertadores como um "golpe duro". Hoje (14), depois de nova derrota por 2 a 1 para o Independiente Del Valle, do Equador, o camisa 4 lembrou chances de gol perdidas, falou em gols anulados e contestou até expulsão na partida de ida. Por fim, o argentino também disse que o time perdeu a cabeça ao longo do segundo tempo.

Jean Pyerre, na etapa inicial, abriu o placar. Cristian Ortiz, pouco antes do intervalo, empatou. E o próprio camisa 20, três minutos após expulsão de Maicon, virou o jogo.

"Claro que é um golpe forte, ninguém queria ser eliminado agora, mas temos Copa Sul-Americana, sexta um novo jogo. Ninguém está feliz, posso imaginar a tristeza do torcedor, mas bola para frente", disse Kannemann, em entrevista coletiva.

A tentativa de olhar para adiante durou pouco. Na resposta seguinte, o zagueiro falou mais.

"O primeiro tempo lá [no jogo de ida, que também terminou em 2 a 1 para o Del Valle] foi muito bom, conseguimos um gol e tivemos um gol anulado erroneamente. Depois, sofremos pênalti, houve expulsão duvidosa [Ruan levou vermelho e na cobrança, o placar mudou]. Temos nossa culpa, sim, mas temos que botar tudo em cima da mesa. Hoje, fizemos um primeiro tempo muito bom. Com três ou quatro chances claras, que se tivessem entrado seria diferente. Eles têm time forte, cabeça boa. A gente também, mas, no segundo tempo, talvez a gente tenha perdido a cabeça, e isso pode ter sido determinante", comentou.

A referência pode ter sido a Maicon, que levou cartão amarelo por falta cometida no meio-campo. O volante já havia sido advertido no início do duelo, ao reclamar com a arbitragem. Com um a menos, o Grêmio levou a virada e nunca mais ficou perto do gol.

"Pode ser um ponto a corrigir, a mentalidade. Não só dos experientes, mas de todo o time. Temos que fazer uma autocrítica e ver quem está certo ou errado", disse Kannemann.

O Grêmio, agora, a a disputar a Copa Sul-Americana. O clube gaúcho entra no grupo H, ao lado de Lanús-ARG, La Equidad-COL e Aragua-VEN.