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

CBF pode pedir ajuda à Fifa por melhora na arbitragem do futebol brasileiro

Colunista do UOL

12/11/2021 11h00Atualizada em 12/11/2021 19h15

A direção da CBF busca soluções para reduzir os problemas de arbitragem. Numa delas seria pedida ajuda à Fifa para capacitação dos profissionais, mas não somente por meio de seminários e vídeos de instrução, o que já é feito, mas também com a integração entre árbitros de outros países e os brasileiros. Nesta sexta-feira (12) a confederação anunciou a demissão do chefe da comissão de arbitragem, Leonardo Gaciba — assume interinamente o número 2, Alício Pena Jr.

No cenário imaginado viajariam ao Brasil equipes completas de arbitragem estrangeiras (europeus principalmente), inclusive do VAR, para atuar em jogos nacionais, com a participação de profissionais brasileiros em todo o processo, desde a preparação pré-confronto até a observação in loco do trabalho. Não é descartado também que um profissional estrangeiro seja contratado, não como número 1, mas com autonomia para modificar o departamento.

No momento, aperfeiçoar a utilização do árbitro de vídeo é prioridade. Há avaliação de que o protocolo elaborado para o VAR não é seguido e os árbitros têm usado a ferramenta com uma segunda chance para rever uma marcação, o que é proibido — ele só deve ser chamado ao monitor que fica na beira do gramado em casos de erros claros e óbvios.

Ainda na avaliação interna, como o profissional que está comandando a cabine de vídeo chama o árbitro excessivamente, ele acaba induzindo aquele que está no campo a mudar decisões sempre que vai até a beira do gramado ver o monitor (permitido em casos de lances subjetivos, como toques de mão). Mas a situação está tão confusa que até chamadas corretas para ver a imagem e corrigir falha não dão certo.

Nesta quinta-feira, na vitória de 3 a 0 do Flamengo sobre o Bahia, acabou ocorrendo um lance inverso do que preocupa a cartolagem. Vinicius Gonçalves Dias foi chamado para ver o lance do pênalti que marcou para o clube carioca, um toque no braço de Conti, do Bahia. A imagem mostra a bola batendo no peito do atleta, mas mesmo vendo a imagem Dias manteve sua decisão (provavelmente usando o protocolo do VAR que diz que, na dúvida, deve se manter a marcação de campo).

A CBF vem tentando encontrar soluções. Uma delas foi liberar o áudio do que é falado entre o árbitro de campo e o profissional que está na cabine (como a Conmebol já faz há algum tempo). A coluna apurou que a iniciativa não teve como objetivo apenas a transparência pedida pelos clubes, mas também tentar diminuir as chamadas para rever lances subjetivos — menos conversas, menos áudios liberados e possível exposição de erros.

Também foi criada uma ferramenta chamada Radar (Relatório de Análise de Desempenho da Arbitragem), que junta todos os relatórios feitos pelos analistas nas partidas para que os árbitros sejam avaliados. A direção da CBF, entretanto, quer mais prática e menos teoria na melhora da arbitragem.