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

Gabriel Vaquer

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.

Globo define equipe da Olimpíada 50% menor e sem narradores em Tóquio

Colunista do UOL

26/04/2021 20h04

Detentora dos direitos de transmissão dos Jogos Olímpicos de Tóquio, a Rede Globo divulgou hoje (26) a lista de profissionais que farão a cobertura in-loco do evento. A relação final de profissionais sofreu um corte de 50% do número de 102 profissionais inicialmente programado. Com a mudança, os narradores escalados para o evento não viajarão para a capital japonesa e farão o trabalho dos estúdios no Brasil.

A coluna teve o a lista em primeira mão. Ao todo, serão 50 nomes enviados ao Japão. A redução no número de pessoal atende a um pedido do Comitê Olímpico Internacional (COI), conforme disse no comunicado interno o diretor do núcleo esportivo da Globo, Renato Ribeiro.

Narradores estão vetados e ficarão no Brasil. Além disso, executivos também não serão enviados. Apenas produtores e repórteres irão ao Japão.

"Como já anunciamos, no caso das Olimpíadas, atendemos a um pedido do COI e do Comitê Organizador e reduzimos a nossa equipe no local a um do terço do que havíamos anunciado em 2020. Nosso estúdio olímpico não será mais na Baía de Tóquio. Nossa casa será nos Estúdios Globo, onde com a ajuda da Tecnologia, vamos nos transportar para Tóquio, na nossa 'Caixa Mágica', num conceito parecido com o que tivemos na Copa da Rússia", diz Ribeiro.

"Todas as transmissões dos eventos serão feitas dos Estúdios Globo, do Íon e do Jardim Botânico, no Rio de Janeiro. Com isso, conseguimos reduzir o tamanho da nossa delegação em Tóquio. A edição também será toda feita da retaguarda. Mandaremos as equipes que contarão as histórias das Olimpíadas. Por isso, mais do que em outros grandes eventos será ainda mais importante nossa operação no Brasil. Nenhum diretor irá a Tóquio", concluiu o executivo no comunicado.

A Olimpíada de Tóquio será realizada de 23 de julho a 8 de agosto. Programado para ter sido realizado em 2020, o evento foi adiado em um ano por causa da pandemia do novo coronavírus.

Confira a lista

Gerente de grandes eventos
Marcela Zaiden

Chefia da cobertura
Ricardo Bereicoa

Chefia de reportagem
José Gonzalez
Thiago Lavinas

Apresentadores/flasheiros
Bárbara Coelho
Carol Barcellos
Karine Alves
Tiago Medeiros

Repórteres
André Gallindo
Carlos Gil
Diego Moraes
Edgar Alencar
Eric Faria (fut masc)
Felipe Brisolla
Guilherme Pereira
Guilherme Roseguini
Kiko Menezes
Lizandra Trindade (fut fem)
Marcelo Courrege
Pedro Bassan

Repcines
Augusto Camara
Beto Kaulino (fut fem)
Edu Bernardes
Emanuel da Ros
José dos Santos Júnior
Júlio Aguiar
Leandro Pacheco
Luciano Tsuda
Luis Soncini
Marcelo Bastos (fut masc)
Mikael Fox
Rafael Carneiro
Rogério Romera
Ronaldo Gonçalo
Thalysson Araújo
Ulisses Mendes

Produtores
Amanda Kestelman (fut fem)
Ana Carolina Oliveira
Breno Dines
Fábio Grijó
Guilherme Costa
Helena Rebello
João Gabriel Rodrigues
Lorena Dillon
Marcel Merguizo
Marcio Iannacca (fut masc)
Paulo Roberto Conde
Thiago Fernandes

Produtoras executivas
Anna Olivia Wermelinger
Margarida Rodrigues