diff --git a/docker/puppeteer/src/server.js b/docker/puppeteer/src/server.js index ae11ec93..d19c056e 100644 --- a/docker/puppeteer/src/server.js +++ b/docker/puppeteer/src/server.js @@ -44,6 +44,9 @@ await cluster.task(async ({ page, data: url }) => { // console.error('PAGE ERROR:', error.message); // }); + // Emulate print media for @media print CSS + await page.emulateMediaType('print'); + // Navigate to the page const response = await page.goto(url, { waitUntil: 'networkidle0', @@ -67,11 +70,6 @@ await cluster.task(async ({ page, data: url }) => { console.log(`Map rendering timeout for ${url}, continuing with PDF generation`); } - - - // Emulate print media for @media print CSS - await page.emulateMediaType('print'); - // Generate PDF return page.pdf({ format: 'A4', diff --git a/thinkhazard/static/js/report.js b/thinkhazard/static/js/report.js index b39d70ff..8dfba25e 100644 --- a/thinkhazard/static/js/report.js +++ b/thinkhazard/static/js/report.js @@ -4,8 +4,10 @@ // Tells whether all the background layer tiles are loaded var tilesLoaded = false; - // Tells whether the vector layer is displayed - var vectorLoaded = false; + // Tells whether the vector layers is displayed + var levelLayerLoaded = false; + var adminLayerLoaded = false; + var disputedAreaLayerLoaded = false; // // Main @@ -196,7 +198,7 @@ source.on('addfeature', function() { map.on('postcompose', function(event) { if (window.mapRenderingComplete === true) { return; } - vectorLoaded = true; + adminLayerLoaded = true; checkFinished(); }); }); @@ -243,7 +245,8 @@ map.addLayer(layer); source.on('addfeature', function() { map.on('postcompose', function(event) { - vectorLoaded = true; + if (window.mapRenderingComplete === true) { return; } + levelLayerLoaded = true; checkFinished(); }); }); @@ -325,6 +328,13 @@ }); map.addLayer(layer); + source.on('addfeature', function() { + map.on('postcompose', function(event) { + if (window.mapRenderingComplete === true) { return; } + disputedAreaLayerLoaded = true; + checkFinished(); + }); + }); return layer; } @@ -450,16 +460,22 @@ tilesLoaded++; update(); }); + source.on('tileloaderror', function() { + tilesLoaded++; + update(); + }); }); } function onTilesLoaded() { - tilesLoaded = true; - checkFinished(); + map.once('postcompose', function() { + tilesLoaded = true; + checkFinished(); + }); } function checkFinished() { - if (vectorLoaded && tilesLoaded) { + if (tilesLoaded && levelLayerLoaded && adminLayerLoaded && disputedAreaLayerLoaded) { window.mapRenderingComplete = true; $('#map').addClass('finished');