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

Paulista - 2021

Pandemia avança, mas parar futebol em SP vira tabu para clubes e jogadores

Orlando Rollo, ex-presidente do Santos (segundo da esquerda para a direita), ao lado de Reinaldo Carneiro Bastos e outros dirigentes - Divulgação
Orlando Rollo, ex-presidente do Santos (segundo da esquerda para a direita), ao lado de Reinaldo Carneiro Bastos e outros dirigentes Imagem: Divulgação

Danilo Lavieri e Pedro Lopes

Do UOL, em São Paulo

04/03/2021 04h00

A pandemia se agrava e bate recordes pelo Brasil — no último registro, ontem (3), foram 1.840 mortes em 24h —, o que levou o Estado de São Paulo a retornar à fase vermelha do plano de controle, na qual só funcionam serviços essenciais. Nesta semana, o Corinthians foi atingido por um surto de Covid-19, com 19 pessoas contaminadas. Ainda assim, jogadores, clubes e entidades que participam do esporte evitam debater uma nova interrupção no calendário, e, por enquanto, o plano é seguir com as partidas, dentro dos protocolos aprovados pelas autoridades.

O UOL Esporte apurou que há enorme relutância entre clubes, tanto dos escalões mais baixo como da elite, em sequer discutir uma nova paralisação. O trauma financeiro da parada de 2020 ainda é sentido e absorvido pelos times. Vários deles, inclusive, iniciaram esse ano com a obrigação de pagar salários e direitos de imagem devidos da temporada ada, como parte de acordos de redução de pagamentos ou simplesmente atrasados.

Os clubes também se apoiam no discurso de que há autorização do governo para desenvolver suas atividades. Os protocolos utilizados para prevenção da Covid-19 foram analisados e aprovados pelo governo do estado São Paulo. Dirigentes ouvidos pela reportagem apontam que o utilizado no Campeonato Paulista é consideravelmente mais rígido do que o das competições nacionais, mesmo lembrando do surto no Corinthians. Sem uma ordem das autoridades, não deve haver qualquer movimentação no sentido de suspender o futebol.

Entre os jogadores, a postura é semelhante. Se os clubes sofreram para pagar salários em 2020, os atletas foram quem ficaram sem receber. Há um grande movimento entre eles pela continuidade do futebol, que fica ainda maior nas divisões inferiores. As entidades sindicais que representam os atletas monitoram o assunto, mas não existe qualquer tipo de oposição organizada.

O termo "modelo europeu", utilizado ontem pelo governador João Doria (PSDB) ao falar sobre o futebol, é repetido por dirigentes de clubes e ligados à Federação Paulista de Futebol (FPF). O exemplo a ser seguido é o da Inglaterra, que manteve a Premier League com protocolos, mesmo com o país sob lockdown mais rígido.

Há também outros fatores a serem considerados na equação. A ideia da Confederação Brasileira de Futebol (CBF), das federações e da Globo é de normalizar o calendário brasileiro a partir de 2022. Para que esse objetivo seja atingido, é necessário que este ano transcorra sem nenhum tipo de parada prolongada. Interrupções, nesse cenário, podem provocar invasões não planejadas no calendário da próxima temporada.