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

Marcel Rizzo

REPORTAGEM

Texto que relata acontecimentos, baseado em fatos e dados observados ou verificados diretamente pelo jornalista ou obtidos pelo o a fontes jornalísticas reconhecidas e confiáveis.

Clubes, TVs e federações têm pacto para manter jogos e 'zerar' o calendário

Mateus Vital e Breno Lopes em disputa durante o Dérbi na Neo Química Arena. FPF não quis adiar a partida pelo Paulistão - Marcello Zambrana/AGIF
Mateus Vital e Breno Lopes em disputa durante o Dérbi na Neo Química Arena. FPF não quis adiar a partida pelo Paulistão Imagem: Marcello Zambrana/AGIF

Colunista do UOL

04/03/2021 12h00

Há um acordo informal entre clubes, federações, CBF e detentores de direito de transmissão para evitar que a temporada 2021 do futebol brasileiro avance para 2022 como ocorreu com a de 2020, que entrou por 2021. Só haverá adiamentos se os governos proibirem jogos — por enquanto isso ocorreu apenas no Paraná, em Santa Catarina e parcialmente no Ceará (que liberou Copa do Brasil e Copa do Nordeste, mas proibiu o Estadual).

O principal ponto desse acordo é justamente evitar o adiamento de jogos de qualquer uma das competições, nacionais ou internacionais (organizadas pela Conmebol). A ideia é: se tem o aval governamental para a partida ocorrer, que ela ocorra mesmo se um dos times, por exemplo, tiver casos de Covid-19.

O protocolo de 2021 é o mesmo de 2020: clubes realizam até dois exames por semana em todas as pessoas ligadas ao departamento de futebol e se houver contaminação o profissional é isolado. Os demais jogadores, membros da comissão, etc. se tiverem seus exames negativados se mantêm aptos a treinar e jogar, mesmo que tenham tido contato com os companheiros doentes.

O pedido do Palmeiras para adiar o jogo contra o Corinthians pelo Paulistão nesta quarta (3), porque seria realizado entre os confrontos da final da Copa do Brasil contra o Grêmio, foi mal recebido dentro da Federação Paulista de Futebol (FPF) justamente por esse pacto por não adiamentos.

A diretoria da FPF argumentou ao clube que estava cumprindo o mínimo de horas de descanso entre dois jogos, que por causa da pandemia caiu de 66 para 48 (nesse caso foram 70 horas entre a final da Copa do Brasil no domingo e o Dérbi), e que já havia adiado a estreia palmeirense, contra o São Caetano, por causa da decisão do torneio da CBF.

Por isso, também, não se cogitou adiar o Dérbi devido ao surto de Covid-19 no elenco corintiano, que teve oito atletas contaminados fora da partida desta quarta-feira, entre eles jogadores importantes como Cássio, Fábio Santos e Fagner. No Paulistão a FPF manteve uma lista B de inscritos para que os clubes coloquem atletas da base que possam atuar em casos de emergência — só cinco podem estar em campo ao mesmo tempo.

Na visão de clubes e federações, se campeonatos pararem ou jogos forem adiados e a temporada encavalar novamente problemas econômicos que ocorreram em 2020/2021 vão se repetir. Por exemplo: atraso nos pagamentos de cotas das entidades organizadoras e de bônus a receber de patrocinadores por metas alcançadas dos campeonatos que não terminarem nas datas originais.

Também houve alguns clubes que tiveram conversas de parcerias interrompidas ou adiadas por causa da indefinição de quando uma temporada acabaria e a outra começaria.

O plano, portanto, é zerar o calendário em 2021 para voltar em 2022 ao normal. Mesmo que a pandemia esteja na pior fase no Brasil.