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

Cruzeiro

Após reunião, diretor garante que Ceni terá carta branca no Cruzeiro

Treinador falou em mudanças no Cruzeiro e diretoria deu aval para qualquer modificação do interesse de Rogério - Bruno Haddad/Cruzeiro
Treinador falou em mudanças no Cruzeiro e diretoria deu aval para qualquer modificação do interesse de Rogério Imagem: Bruno Haddad/Cruzeiro

Enrico Bruno

Do UOL, em Belo Horizonte

10/09/2019 16h32

Marcelo Djian, diretor de futebol do Cruzeiro, esteve hoje na Toca da Raposa II para conceder uma entrevista coletiva. O dirigente afirmou que uma reunião foi feita com o técnico Rogério Ceni, e que nela foi reforçado que o treinador tem o respaldo da cúpula celeste para mudar o que for preciso no elenco. No último domingo, o comandante foi sincero ao dizer que a situação do clube é delicada e que mudanças drásticas precisam ser feitas.

"Tivemos uma conversa com o Rogério, é lógico que a decepção é grande depois de dois resultados negativos. Desde que foi contratado, eu disse a ele que ele teria o respaldo da diretoria. Nunca opinamos em nada com o Mano (Menezes) aqui no comando, não será agora que isso será feito. Ele tem nosso total apoio, poderá fazer as modificações que quiser, se achar que tem que ser feito. Tem nosso apoio", iniciou Marcelo.

Um dos assuntos levantados por Ceni no último final de semana é que alguns atletas precisavam fazer um tipo de pré-temporada para recuperar o ritmo de jogo. Djian negou que qualquer atleta será afastado do clube, mas alegou que alguns poderão ficar após os treinamentos do grupo para realizar trabalhos específicos. A tendência é que esses jogadores sequer estejam na partida contra o Palmeiras, neste sábado.

"Conversamos hoje, ele não ou nome de jogadores, disse que alguns atletas estarão treinando normalmente, mas que quem ele achar que tem que ter um complemento, será feito um complemento após os treinamentos", acrescentou, Djian.

Protestos do lado de fora

Antes de o treinamento começar, membros da Máfia Azul, principal organizada do clube, deram continuidade aos protestos dos últimos dias e marcaram presença na porta da Toca da Raposa II para cobrar dos jogadores antes da reapresentação do elenco. Seguranças do clube e a Polícia Militar estiveram no local para impedir que qualquer invasão ao CT fosse feita. Alguns jogadores chegaram a utilizar uma entrada alternativa da Toca para evitar o contato com os torcedores.

Veja outros trechos da entrevista de Marcelo Djian

Crise institucional: eu disse que seria muito fácil dizer que está influenciando, estaria tirando toda a minha responsabilidade. Mas acredito que não, o Cruzeiro dá toda a condição ao atleta de treinar, se condicionar bem. Sabemos que existe esse problema, mas a Toca II está bem blindada em relação aos problemas políticos.

Salários atrasados: os jogadores estão conscientes em relação ao atraso. Nessa semana, vamos quitar o restante do mês de julho e estamos trabalhando para quitar o mês de agosto na próxima semana. Os jogadores sabem que o Cruzeiro sempre honrou com os salários, então eles não ficam tão desesperados quando acontecem pequenos atrasos. Claro que não é normal, mas não é isso que está influenciando o desempenho nos jogos.

Manifestações da torcida: temos acompanhado as manifestações, quando time grande vive um momento como esse é normal. O que não é normal é acontecer na casa das pessoas, como foi feito. Isso é um caso gravíssimo que a gente repudia bastante.

Cruzeiro