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

Palmeiras fora do Allianz Parque em caso de final? Veja o que está em jogo

Jogadores de Palmeiras e Ituano no aquecimento no Allianz Parque - Diego Iwata/UOL Esporte
Jogadores de Palmeiras e Ituano no aquecimento no Allianz Parque Imagem: Diego Iwata/UOL Esporte

Diego Iwata Lima

Do UOL, em São Paulo

24/03/2022 13h39

Com o fim das restrições devido à pandemia, também chegam ao fim as restrições a shows e concertos em estádios, modalidade em que o Allianz Parque é líder nacional. Em 5 de abril, a banda Maroon 5, dos EUA, tem show na casa palmeirense, dois dias depois de uma possível final de Campeonato Paulista no mesmo local. Haverá tempo de fazer os dois eventos? Ou o Palmeiras ficará sem estádio?

A questão ainda está indefinida, até porque o Palmeiras nem jogou a semifinal (com adversário e data ainda a definir). Mas como a logística precisa ser prévia, Allianz Parque e o clube alviverde já têm tratado do assunto de um modo um pouco além do preliminar.

O UOL Esporte apurou que a istração do estádio não quer desalojar o Palmeiras em um dia possivelmente tão importante por conta da montagem de um show dois dias depois. Afinal, o estádio foi construído de modo a otimizar os processos de montagem e desmontagem. E a grama sintética colocada no local torna o processo ainda mais fácil.

Pesam contra a saída do jogo do local, o fato de o Pacaembu estar em processo de reforma, praticamente uma desconstrução, devido ao seu processo de concessão à iniciativa privada, que já colocou o tobogã no chão. O que mandaria o jogo para o interior ou para a Grande São Paulo, na Arena Barueri. O Morumbi também poderia ser uma opção, mas não se o São Paulo for à final.

Por fim, entra na conta também a questão transmissão. Está nos planos da Record, detentora dos direitos em TV aberta, realizar o jogo no domingo, às 18h30, na sequência da final do Campeonato Carioca. Isso já impediria, por exemplo, que a partida viesse para o sábado (2).

Uma decisão deve sair até o início da próxima semana.

O técnico Abel Ferreira foi questionado ontem (23), após a vitória sobre o Ituano pelas quartas de final, sobre a possibilidade de decidir o Paulistão fora de casa. O português tergiversou, até pelo fato de o time ainda ter um jogo pela frente antes de pensar nesse dilema.

"Não penso nisso. Ainda não estamos lá, temos um jogo e nisso que penso. É um assunto que não é problema meu. Não sou eu que marco shows, que vendo o estádio, não é problema meu. Seja onde for, vamos jogar para os nossos torcedores. Temos que estar em peso em qualquer jogo, quanto mais tivermos é melhor", afirmou.