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

Grupo britânico Marks and Spencer anuncia corte de 7.000 empregos

Grupo britânico Marks and Spencer anuncia corte de 7.000 empregos - Toby Melville/Reuters
Grupo britânico Marks and Spencer anuncia corte de 7.000 empregos Imagem: Toby Melville/Reuters

18/08/2020 09h45

O grupo britânico de lojas Marks and Spencer anunciou hoje o corte de 7.000 postos de trabalho nos próximos três meses, uma consequência do impacto da pandemia de covid-19 e do fluxo reduzido de clientes em seus estabelecimentos.

As notícias econômicas ruins se acumulam no Reino Unido, com anúncios quase diários de demissões por grandes empresas.

O grupo, que emprega mais de 80 mil pessoas no mundo, indicou que a redução de funcionários acontecerá com aposentadorias antecipadas e pedidos de demissão voluntários.

Marks and Spencer afirmou que pretende adaptar-se aos novos hábitos de consumo dos consumidores, com a concentração das vendas pela internet.

Os cortes devem afetar especialmente as lojas no Reino Unido e a direção do grupo, que pensa em contratar funcionários para trabalhar na área de vendas online.

"Em maio anunciamos que aprenderíamos com esta crise, que íamos acelerar nossa transformação e nos tornar uma empresa mais ágil, em um mundo no qual os hábitos de consumo mudaram de maneira definitiva", lembrou Steve Rowe, diretor geral do grupo.

"Hoje anunciamos propostas para flexibilizar ainda mais nossas operações nas lojas e nossas estruturas de direção", completou.

A Marks and Spencer registrou queda de 10% nas vendas entre o início de junho e o começo de agosto.

A principal queda (-29,9%) no período foi registrada no setor de roupas e produtos para o lar, seu calcanhar de Aquiles há vários anos.

A redução foi provocada pelas medidas de confinamento e distanciamento físico, que diminuíram o número de clientes nas lojas e centros comerciais, segundo a empresa.

As vendas virtuais de roupas e produtos para casa, no entanto, aumentaram 39,2% no mesmo período, indicou a Mark and Spencer, graças principalmente aos investimentos para ampliar a capacidade de distribuição.

As vendas de alimentos aumentaram 2,5% de junho a agosto.

A empresa aposta em uma associação a partir de setembro com o distribuidor de alimentos online Ocado.

A parceria representará uma novidade para a empresa que até agora estava ausente na venda de alimentos pela internet, ao contrário de muitos concorrentes, um dos poucos setores em que a atividade aumentou desde o início do confinamento.

Para o setor de varejo, a pandemia apenas agravou as dificuldades já existentes para muitas empresas, que em alguns casos cresceram muito rápido com a abertura de lojas e foram duramente atingidas pelo avanço das vendas na internet.