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

Rodrigo Mattos

OPINIÃO

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

Sob nova direção, CBF volta a boicotar o Brasileiro em Palmeiras x Galo

Danilo, volante do Palmeiras e da seleção brasileira, em ação durante treinamento comandado por Tite - Reprodução/Instagram
Danilo, volante do Palmeiras e da seleção brasileira, em ação durante treinamento comandado por Tite Imagem: Reprodução/Instagram

05/06/2022 04h00

Receba os novos posts desta coluna no seu e-mail

Email inválido

Palmeiras e Atlético-MG abriram a rodada como líder e vice-líder do Brasileiro, fazem o principal jogo da 9ª rodada do campeonato, um confronto com ingredientes extras como os elencos recheados e o histórico de 2021. Mas os times terão sete desfalques na partida por conta do calendário, que não paralisa o campeonato para datas Fifa.

O time alviverde é mais prejudicado por não contar com Weverton e Danilo (seleção brasileira), Gustavo Gomez (Paraguai), Atuesta (Colômbia) e Kuscevic (Chile). Perde três de seus principais jogadores. E ainda pior: no último amistoso, o volante Danilo sequer estava no banco da seleção. Por enquanto, foi a Ásia para conhecer hotéis.

Do lado do Galo, não estará no seu lado esquerdo Guilherme Arana. O lateral, pelo menos, teve a chance de ficar no banco diante da Coreia do Sul, embora sem entrar. Ou seja, Tite convocou ambos, não os utilizou no primeiro jogo e desfalcou os times. Godín estará com o Uruguai.

Repete-se com isso a rotina do ano ado em que a CBF dilapidou os times nacionais durante o Brasileiro. Naquele campeonato, o Flamengo foi o mais prejudicado, com alguns jogadores como Gabigol fora por quase metade da Série A. Já neste ano, o rubro-negro não terá Arrascaeta hoje diante do Fortaleza. Palmeiras e Atlético-MG também foram prejudicados na ocasião em número menor de atletas.

A principal culpada é a CBF. Por estatuto, a entidade faz o calendário sozinha e, no máximo, ouve sugestões de clubes. Não há nenhuma dos clubes no calendário, uma falácia constante propagada até por jornalistas. Para este ano, o Flamengo propôs oficialmente que a entidade parasse o campeonato durante as datas Fifa e foi ignorado. Quem determina o calendário é o departamento de competições da CBF.

Ednaldo Rodrigues foi eleito presidente da CBF neste ano, mas já estava no cargo como interino em parte de 2021. Após assumir, ele trocou a chefia do departamento técnico da entidade, trocando Manuel Flores por Julio Avellar, que veio da Fifa. O novo diretor não foi o responsável pelo calendário, já feito pelo seu antecessor.

Mas até agora Ednaldo não deu nenhuma sinalização robusta de que de fato fará uma mudança no futuro no calendário do futebol brasileiro para evitar esse conflito de jogos entre Brasileiro e seleção. É uma bizarrice que, diga-se, só acontece no Brasil entre as ligas de elite do mundo. E também não fez nada para modificar a superposição de datas para esta temporada de 2022.

No total, o Brasileiro deve ter cinco datas prejudicadas por convocações de seleções. E Tite já deixou claro que não fará nenhuma concessão aos clubes brasileiros em ano de Copa do Mundo como demonstrou ao levar Weverton, Danilo e Arana para a Ásia.

Ao assumir a CBF, Ednaldo fez um discurso de virar a página da CBF e fez uma reforma geral na sua diretoria. Resta saber se a página do calendário do futebol também fará parte dessa reforma ou se viveremos mais jogos decisivos do Brasileiro deixados em segundo plano pela própria entidade organizadora.