;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Futuros do minério de ferro na China têm máxima em quase 17 meses após cortes da Vale

Enrico Dela Cruz

30/01/2019 07h49

Por Enrico Dela Cruz

MANILA (Reuters) - Os futuros do minério de ferro na China subiram fortemente para o maior nível em quase 17 meses nesta quarta-feira, após a mineradora brasileira Vale anunciar que terá uma redução na produção devido à decisão de fechar mais barragens similares a uma unidade da empresa que rompeu na semana ada.

A maior produtora de minério de ferro do mundo disse que terá de parar até 10 por cento de sua produção para descomissionar mais 10 barragens, após uma barragem de rejeitos ter rompido na sexta-feira ada em Brumadinho (MG), destruindo instalações da companhia, matando dezenas de pessoas e deixando centenas de desaparecidos.

O contrato mais negociado do minério de ferro na bolsa de Dalian fechou a 587 iuanes (87,42 dólares) por tonelada, alta de 5,6 por cento, após tocar o limite diário de alta de 589 iuanes por tonelada mais cedo na sessão, maior nível desde o início de setembro de 2017.

O desastre gerou incertezas para o mercado de minério de ferro na China, maior importador global da commodity, segundo operadores.

A Vale é a principal fornecedora mundial de minério de ferro de baixo teor de alumínio, preferido pelas usinas siderúrgicas chinesas devido a seu baixo nível de impurezas, uma vez que a China está em meio a uma campanha contra a poluição.

Levando em consideração a redução na produção da Vale, a empresa de análise de dados de aço e minério de ferro Tivlon Technologies, em Cingapura, projetou que os preços do minério de ferro devem atingir 120 dólares por tonelada em agosto.

O desastre no Brasil também pode levar a regulamentações mais duras para a indústria de mineração também em outros países, como a Austrália, o que poderia desacelerar ou até reduzir a produção global, disse o cientista de dados da Tivlon, Darren Toth.

"Mineradoras de minério de ferro de todo o mundo estiveram ocupadas aumentando sua produção nos últimos cinco anos. Os reguladores vão querer começar a avaliar mais de perto todas essas minas para prevenir acidentes".

O contrato mais ativo do vergalhão de aço na bolsa de Xangai ficou praticamente estável, com alta de 0,1 por cento, a 3.677 iuanes por tonelada, após chegar a subir 2,6 por cento na sessão.