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

Calor de 50°C e crise de água suja: o ano de 2020 começou difícil no Rio

Alessandro Buzas - 15.jan.2020/Futura Press/Estadão Conteúdo
Imagem: Alessandro Buzas - 15.jan.2020/Futura Press/Estadão Conteúdo

Lucas Borges Teixeira

Colaboração para o UOL, em São Paulo

17/01/2020 04h00

Resumo da notícia

  • Rio começou o ano com crise na qualidade da água
  • Cidade também viu a sensação térmica ar dos 50ºC

O Rio de Janeiro não teve um dezembro fácil, com o caos na saúde pública na capital. O ano virou, mas os problemas da estrutura pública se mantiveram.

Agora, o estado a por um grave problema de abastecimento, em que moradores da cidade e da região metropolitana denunciam a saída de água turva, com gosto de tijolo, das torneiras. Enquanto isso, a Cedae (Companhia Estadual de Águas e Esgotos do Rio de Janeiro), responsável, não dá prazo de melhora. Tudo isso sob uma sensação de calor que ultraa os 54°C.

Água suja

Desde a primeira semana do mês, moradores da região metropolitana do Rio de Janeiro têm sido abastecidos com água turva, com gosto e sabor adulterados.

Não está claro quantas pessoas foram atingidas, mas a bacia do rio Guandu, de onde vem a água, abastece cerca de 9 milhões de fluminenses.

A Cedae continua a atestar a qualidade da água do Guandu. Segundo a estatal, a cor amarronzada se deve à presença, já confirmada, de uma substância orgânica produzida por algas, a geosmia.

No primeiro pronunciamento sobre a crise, na última quarta (15), o presidente do órgão, Hélio Cabral, disse que a empresa já está resolvendo o problema, mas não apresentou prazos.

Polícia realiza perícia na estação do Guandu

bandrio

Em uma cena que faz lembrar a política dos anos 1950, ele chegou a beber um gole da água, que ele diz ser potável. "Eu moro em uma casa, bebo água da bica. Confio na qualidade", declarou.

Os fluminenses, por sua vez, não têm a mesma confiança que o executivo. Moradores da Baixada têm feito estoque de água mineral em suas casas para evitar consumir a água fornecida pela Cedae.

água - Ricardo Cassiano - 15.jan.2020/Agência O Dia - Ricardo Cassiano - 15.jan.2020/Agência O Dia
Presidente da Cedae bebê copo de água no Rio
Imagem: Ricardo Cassiano - 15.jan.2020/Agência O Dia

A demanda tem sido tão alta que supermercados da região estão ficando sem o produto. Em uma unidade da Tijuca, o UOL registrou que um novo carregamento de garrafas acabou em 5 minutos.


Não é de surpreender. Os fluminenses têm recorrido às redes sociais para exibir a água que recebem em casa. No Complexo do Alemão, na zona norte da capital, há registro de caixas d'água que parecem poços de lama.


Se um vídeo não vale mais do que mil palavras, há pelo menos um punhado delas que também atestam para os perigos da água.

A UFRJ (Universidade Federal do Rio de Janeiro) emitiu uma nota na última quarta (15) em que atesta que a uma "evidente degradação ambiental" dos mananciais utilizados para o abastecimento no Rio "compromete a qualidade da água, dificulta seu tratamento e pode colocar em risco a população".

O UOL não consegue dizer se a água tomada por Cabral veio de uma bica, mas certamente não veio da torneira desta moradora do Cordovil, também na zona norte, que gravou a água da torneira da sua casa, supostamente potável, nesta quinta-feira (16).

Sensação térmica no Rio de Janeiro a dos 50ºC

bandrio