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

Rodolfo Rodrigues

OPINIÃO

Texto em que o autor apresenta e defende suas ideias e opiniões, a partir da interpretação de fatos e dados.

Já virou rotina: Galo campeão com Hulk artilheiro pela 3ª vez

Hulk comemora o primeiro gol pelo Atlético-MG na final do Campeonato Mineiro 2022 contra o Cruzeiro - Alessandra Torres/AGIF
Hulk comemora o primeiro gol pelo Atlético-MG na final do Campeonato Mineiro 2022 contra o Cruzeiro Imagem: Alessandra Torres/AGIF

Colunista do UOL

02/04/2022 18h30

Deu a lógica na final do Campeonato Mineiro. O Galo venceu o Cruzeiro por 3 x 1 neste sábado (e conquistou o tricampeonato estadual. O atacante Hulk, autor de dois gols, e garantiu a artilharia da competição com 10 gols em 8 jogos. E pela terceira vez o jogador conquista um título pelo Galo sendo artilheiro do campeonato. Em 2021, venceu o Brasileirão e a Copa do Brasil sendo artilheiro com 19 e 9 gols, respectivamente.

Campeão também do Mineiro em 2021 e da Supercopa do Brasil em 2022, Hulk já soma cinco títulos pelo Galo e chega agora a 47 gols em 77 jogos pelo Galo. No século 21, o atacante de 35 anos já é o 5º maior artilheiro do Atlético, atrás apenas de Diego Tardelli (112 gols em 230 jogos), Guilherme (75 gols em 122 jogos), Marques (59 gols em 189 jogos) e Luan (49 gols em 305 jogos). Desde sua chegada, no começo de 2021, Hulk só não conquistou o título da Libertadores, onde o Galo foi eliminado invicto, na semifinal, com o atacante terminando como vice-artilheiro da competição.

Em ótima fase, Hulk tem agora 11 gols em 9 jogos na temporada 2022, onde se tornou ainda o maior artilheiro do novo Mineirão — agora com 34 gols, três a mais que o uruguaio Arrascaeta. Em 2021, Hulk terminou o ano como o jogador com mais gols por um único clube no futebol brasileiro. Foram 36 gols em 68 jogos. Agora, em 2022, já está entre os jogadores com mais gols no Brasil na temporada. Nos últimos 16 jogos pelo Galo, entre 2021 e 2022, Hulk marcou gols em 15 jogos e anotou 20 gols.

Números impressionantes que podem até fazer com o que o técnico Tite volte a pensar em convocá-lo para a seleção.

Siga Rodolfo Rodrigues no Instagram

Siga Rodolfo Rodrigues no Twitter