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

Corinthians

Corinthians anuncia a saída do diretor de futebol Roberto de Andrade

Do UOL, em São Paulo

21/03/2023 14h38

Roberto de Andrade não é mais diretor de futebol do Corinthians. O anúncio foi feito hoje pelo presidente Duilio Monteiro Alves.

O que aconteceu

  • Roberto de Andrade pediu demissão do cargo de diretor de futebol do Corinthians. Sua saída tinha sido pedida após uma invasão de torcedores ao CT do clube, na semana ada.
  • "O Roberto acha melhor se retirar, pelo bem do Corinthians", disse Duilio. "Tentei demovê-lo desta ideia para terminarmos o mandato juntos, mas ele preferiu assim por questões pessoais, de família".
  • Duílio vai acumular as funções e o cargo de diretor de futebol fica vago. Ele vai dividir as tarefas com o gerente de futebol Alessandro Nunes, que foi muito elogiado pelo presidente.

O que ele falou

"O Roberto de Andrade é uma pessoa da minha confiança, é o diretor que escolhi e por mim ele não sairia do Corinthians até o final do meu mandato. Mas o Roberto acha melhor se retirar, pelo bem do Corinthians."

"O Roberto tem grandes méritos nestes dois anos de trabalho. Temos que ser sinceros e dividir os méritos com ele e com Alessandro. Esta melhora do clube e do futebol tem a ver com ele. Antes, a discussão era se o Corinthians cairia ou não, hoje é se o Corinthians pode brigar pelo título. Hoje temos um time que briga, e o Roberto fez parte disso."

"Não terá substituto até o fim do mandato. Qualquer pessoa que eu colocar aqui, vão achar que é por causa da eleição, por uso político, que será candidato. Então ficamos eu e Alessandro."

"Sobre um profissional na diretoria de futebol, para mim tenho o melhor do Brasil aqui, que é o Alessandro. Confio e tenho respeito por ele. É inegável a diferença entre o que o Corinthians tinha há alguns anos e o que tem hoje. Fico contente porque, por onde eu ando, os corintianos estão satisfeitos com o que tem sido feito."

Críticas e invasão

Roberto de Andrade foi o principal alvo de críticas na invasão de torcedores ao CT, na última sexta-feira (17). Dias antes, a principal torcida organizada do clube exigiu sua saída. "É ele ou você, presidente", dizia uma nota oficial da Gaviões da Fiel.

Na invasão, os envolvidos fizeram um buraco em uma cerca para forçar a entrada. Eles exigiram uma conversa com os jogadores. Também estenderam faixas com críticas ao elenco e ao diretor de futebol. Não houve feridos.

Corinthians