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

Disputas políticas na CBF geram risco para união de clubes na liga

Assembleia geral da CBF reuniu federações e clubes da Série A - Lucas Figueiredo/CBF
Assembleia geral da CBF reuniu federações e clubes da Série A Imagem: Lucas Figueiredo/CBF

Igor Siqueira e Rodrigo Mattos

Do UOL, no Rio de Janeiro

15/03/2022 04h00

Os clubes das Séries A e B reúnem-se em São Paulo hoje (15) para ouvir a proposta do grupo da espanhola La Liga para organizar a liga do Brasileiro. Ao mesmo tempo, movimentos relacionados à política da CBF ameaçam atrapalhar o bloco de times da primeira divisão. Há portanto um caminho entre a profissionalização e debates políticos.

Em reunião na CBF, por ocasião da assembleia para votação do estatuto, clubes da Série A chegaram a um acordo para referendar regras eleitorais favoráveis às federações. Em troca, apoio à liga e maior influência na diretoria de competições.

Na ocasião, houve pelo menos dois clubes que se disseram favoráveis a indicar um diretor de competições se houvesse substituição do atual titular, Manoel Flores. Flamengo e Corinthians estão entre os que entendem que o departamento poderia ser gerido com maior foco nos times.

Enquanto isso, um grupo de outros 13 clubes da primeira divisão, em contraponto, assinou uma carta de apoio a Flores, enviada à CBF. O movimento foi capitaneado pelo Atlético-MG, tanto que o documento tinha papel timbrado do clube. Além dele, todos os clubes do Forte Futebol (América-MG, Atlético-GO, Athletico-PR, Avaí, Ceará, Coritiba, Cuiabá, Fortaleza, Fortaleza, Goiás e Juventude) am a carta, além de Fluminense e Internacional. Eles pedem que Flores não seja substituído, alegando que "ele atende com cordialidade e presteza". Outros sete times não am. Flu e Inter, inclusive, se aproximaram do Forte Futebol.

No final do ano ado, o departamento de competições preferiu não alterar datas de jogos da reta final do Brasileirão marcados para o período de data Fifa, ao contrário da promessa inicial da CBF. A cadeia de adiamentos começou em junho, ainda na gestão Caboclo. Mas, no fim do ano, sob nova direção, a CBF não aceitou o pedido do Flamengo de estender o campeonato até o meio de dezembro. A decisão desagradou a rubro-negros e foi defendida por atleticanos, que disputavam o título.

Ao mesmo tempo, outros clubes apontam que o departamento de competições nem sempre tem decisões padronizadas — embora a discussão, segundo fontes internas, na maioria das vezes e pelo gabinete da presidência. Por exemplo, no início da Copa do Brasil e Brasileiro, em junho, o Flamengo pôde adiar jogos por causa de atletas convocados. Outros times dizem que não tiveram a mesma prerrogativa. A leitura na CBF é que isso gerou uma reação em cadeia negativa.

A questão do departamento de competições não é o único ponto sensível na política da CBF que pode afetar os clubes. Na reunião na confederação, os times fecharam posição de apoio ao presidente da CBF, Ednaldo Rodrigues, para sua reeleição. A votação ocorrerá no próximo dia 23 de março e será secreta.

Ao mesmo tempo, há um movimento na CBF para criação de uma chapa de oposição dentro da entidade. Essa corrente é favorável ao vice-presidente Gustavo Feijó. Ao seu lado, está a Federação Mineira, que tentará convencer o Cruzeiro, América-MG, Atlético-MG e Tombense de votar com Feijó. Se a federação for bem-sucedida, isso poderia dividir o bloco dos clubes.