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

Japonesa testa positivo pela 2ª vez para coronavírus

27/02/2020 08h21

Por Daniel Leussink

TÓQUIO (Reuters) - Uma guia de ônibus turístico no Japão testou positivo para o coronavírus pela segunda vez, informou o governo de Osaka, se tornando a primeira pessoa do país a registrar a doença duas vezes em meio a crescentes preocupações com a proliferação do vírus.

O segundo teste positivo ocorreu quando o número de casos no Japão subiu para mais de 190 nesta quinta-feira, ante 170 no dia anterior.

O governo de Tóquio pediu que grandes reuniões e eventos esportivos sejam adiados por duas semanas para conter o vírus, mas prometeu que os Jogos Olímpicos de 2020 serão mantidos na cidade.

Os mais de 190 casos no Japão não fazem parte dos 704 registrados no navio Diamond Princess, que foi colocado em quarentena em Tóquio no início deste mês.

A mídia local reportou outra morte por coronavírus na província de Hokkaido, no norte do país, elevando o total de pessoas que morreram para oito, incluindo quatro do navio.

Embora seja o primeiro caso conhecido no Japão, também foram relatados segundos testes positivos na China, onde a doença surgiu no final do ano ado.

O surto se espalhou rápida e amplamente, infectando cerca de 80 mil pessoas em todo o mundo e matando quase 2.800, a maioria na China continental.

A mulher, moradora de Osaka, no oeste do Japão, apresentou resultado positivo na quarta-feira após sentir dores de garganta e no peito, informou o governo local em comunicado. Ela testou positivo pela primeira vez no final de janeiro e recebeu alta do hospital após se recuperar em 1º de fevereiro, de acordo com o comunicado.

O ministro da Saúde, Katsunobu Kato, disse no Parlamento que o governo central precisaria revisar as listas de pacientes e acompanhar as condições dos que receberam alta previamente, enquanto especialistas em saúde analisam as implicações de testes positivos para o vírus após uma recuperação inicial.

"Quando você tem a infecção, ela pode permanecer inativa e com sintomas mínimos, e você pode ter um agravamento se a doença migrar para os pulmões", disse Philip Tierno Jr., professor de microbiologia e patologia da Faculdade de Medicina da Universidade de Nova York.

Tierno acrescentou que ainda há muito desconhecimento sobre o vírus. Quando questionado sobre as perspectivas para os Jogos Olímpicos em Tóquio neste ano, Tierno disse: "A Olimpíada deve ser adiada se isso continuar... Há muitas pessoas que não entendem como é fácil transmitir essa infecção de uma pessoa para outra".