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

Ex-bunker nazista em Hamburgo será transformado em hotel de luxo

Projeto da NH Hotel Group vai transformar topo de bunker nazista em hotel em Hamburgo - Divulgação/NH Hotel Group
Projeto da NH Hotel Group vai transformar topo de bunker nazista em hotel em Hamburgo Imagem: Divulgação/NH Hotel Group

Do UOL

24/10/2019 10h04

O ex-bunker nazista Flakturm IV Hochbunker, em Hamburgo (Alemanha), será transformado em um hotel de luxo com um imenso jardim no topo. A iniciativa foi anunciada pela empresa espanhola NH Hotel Group, que ganhou a licitação para operar o hotel.

Construído em 1942, durante a Segunda Guerra Mundial, o local agora será rebatizado como nhow Hamburg e contará com 136 quartos divididos em 5 andares, bar, café e restaurante. Programado para abrir em 2021, terá o preço médio programado para as diárias de 100 euros.

Outro destaque é o projeto paisagístico, com jardim no cume do grande prédio, que incluirá um memorial dedicado às vítimas da Alemanha nazista e um espaço para exposições.

O ado do bunker

Mais de mil bunkers foram construídos em Hamburgo na época e o Flakturm IV Hochbunker era um dos maiores da Alemanha.

O local foi projetado para abrigar 18 mil pessoas, mas cerca de 30 mil procuraram abrigo durante ataques aéreos naquele período. Três anos após a construção, os nazistas foram derrotados e o governo alemão considerou demolir o bunker, mas o plano foi descartado pois a quantidade de dinamite a ser utilizada na ação seria muito grande.

Logo após o fim da guerra, civis foram abrigados durante a crise habitacional pós-guerra.

O local foi alugado e foi ali que, em 1950, a empresa NWDR transmitiu as primeiras imagens de televisão na Alemanha. Na década de 90, o ex-bunker ficou conhecido como o "bunker da mídia" pois ou a abrigar inúmeros estúdios e estações de rádio no local.

Hoje conhecido St Pauli Bunker, funciona como um grande prédio comercial, como espaço de escritório para cerca de 40 empresas. Elas continuarão operando no local após a construção do hotel.