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

Paralisação atrasa exportação de soja por falta de estoque nos portos, diz Abiove

Leticia Pakulski

São Paulo

25/05/2018 14h15

O secretário executivo da Associação Brasileira das Indústrias de Óleos Vegetais (Abiove), Fábio Trigueirinho, disse ao Broadcast Agro (serviço de notícias em tempo real do Grupo Estado) que há atrasos em embarques do complexo soja nos portos brasileiros devido à paralisação dos caminhoneiros. Contudo, a associação ainda não tem estimativa de prejuízos provocados pela greve.

"Certamente tem atraso. No início tinha estoque no porto, mas o estoque já foi. Agora entra na fase crítica em que não tem estoque para embarcar. Não vai chegar produto lá", disse Trigueirinho.

Segundo ele, quando acabar a greve, acontecerá o contrário: "todo mundo vai querer mandar com rapidez para retomar o fluxo normal e atender os clientes". Ele ressaltou que paralisações criam problemas "de todo lado". "Com o atraso, as empresas ficam sujeitas a multa de navios. E isso cria um problema de imagem para o País como fornecedor confiável."

Os estoques de derivados que não saem das fábricas também preocupam a associação. "A gente não consegue mais mandar nada para o porto, está tudo obstruído", disse o representante. "A capacidade de armazenagem de farelo e tancagem de óleo chegou no limite. Normalmente temos armazéns maiores para a soja, porque a gente compra e, em alguns momentos, recebe muita coisa, tem muita sazonalidade. Agora, de farelo e óleo, a gente vai produzindo e já mandando para os clientes e para o porto, então não tem um pulmão tão grande."

Segundo Trigueirinho, isso tem causado grande transtorno para as esmagadoras. "É a época em que tem que estar rodando, tem que cumprir os compromissos. No curto prazo a situação precisa ser resolvida."

O executivo ressaltou, ainda, o temor quanto ao abastecimento de ração. "Tem ainda o aspecto da alimentação animal no mercado interno, porque está se agravando a cada dia que a o suprimento para o setor de aves e suínos, e isso é extremamente complicado", disse.

No exterior, criadores de animais também aguardam a chegada do farelo brasileiro. "Se atrasa, começa a complicar. Uma coisa é atrasar um volume menor, agora está começando a ficar crítico. Tira a credibilidade do sistema."

Ele ressaltou que o setor está em contato com o governo para pressionar pela normalização da situação. "O setor privado inteiro está todo dia alimentando o governo, e certamente ele tem todas as informações para saber que o País está um caos. O governo tem que agir rápido e chegar a um entendimento para que a paralisação não se prolongue mais."