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

Ricardo Feltrin

OPINIÃO

Demissões na Globo unificam funções e atingem os bastidores

Fabio Turci, Giuliana Morrone e Eduardo Tchao estão entre os demitidos pela Globo - Reprodução / Instagram
Fabio Turci, Giuliana Morrone e Eduardo Tchao estão entre os demitidos pela Globo Imagem: Reprodução / Instagram

Colunista do UOL

07/04/2023 15h12

A TV brasileira foi chacoalhada esta semana por uma demissão em massa de jornalistas e âncoras da TV Globo e da GloboNews.

Por dois dias, o colunista Lucas Pasin, de Splash, mostrou os bastidores das demissões quase que em tempo real. O corte atingiu cerca de 40 jornalistas até o momento.

Tristeza, lágrimas, perplexidade foram alguns dos sentimentos que invadiram as redações do Grupo Globo.

A má notícia é que ainda não acabou. O pior é que ainda não está nem perto de acabar. Foi assim na dramaturgia e será assim também no jornalismo. Os cortes e enxugamentos secundários poderão levar meses.

Muito mais gente afetada

O problema é que nós, da imprensa, só estamos notando as demissões porque elas atingiram os chamados "medalhões" do jornalismo brasileiro.

Mas, não notamos que, para cada jornalista renomado que disse adeus à Globo esta semana, outras pessoas já estão perdendo ou vão perder seus empregos igualmente.

Esquece-se que produtores, câmeras, iluminadores, assistentes e motoristas também são profissionais do jornalismo.

Só que, ao contrário de parte dos demitidos famosos, essas pessoas não estão saindo com "colchão" proporcionado por um salário de cinco ou seis dígitos recebido por anos e anos; quiçá, décadas.

Enxugamento geral

O que aconteceu é só mais um o do projeto que a empresa Globo, muito mais que só a TV, tem implantado há pelo menos quatro anos.

Departamentos estão sendo fundidos. Cargos estão sendo eliminados. Funções sobrepostas estão desaparecendo. Salários nababescos do ado serão só uma lembrança a partir de agora.

Não faz sentido nenhum a uma empresa ter vários funcionários fazendo o mesmo trabalho, ainda mais quando um deles tem um salário enorme.

Cortar pela metade

Além disso, vale ponderar que não há sentido em um mesmo veículo de mídia noticiosa ter redações separadas.

Afinal, de uma forma ou de outra, elas acabam produzindo (ou reproduzindo) basicamente as mesmas coberturas e os mesmos conteúdos, que apenas serão exibidos em duas marcas diferentes, a TV Globo e a GloboNews.

O resultado para o telespectador? Ele verá novos rostos do jornalismo da Globo. O que também é bom.

Ricardo Feltrin no Twitter, Facebook, Instagram, site Ooops e YouTube