From e207e9643110742cec3235af291c9ee318fd3588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20B=C3=B6sch-Plepelits?= Date: Fri, 1 Jan 2021 10:41:36 +0100 Subject: [PATCH] Popup Images: update dom classes when image is loaded --- src/image.js | 44 ++++++++++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/src/image.js b/src/image.js index a1494cca..38b0742c 100644 --- a/src/image.js +++ b/src/image.js @@ -3,13 +3,22 @@ var ImageLoader = require('./ImageLoader') var showTimer function showImage (image, dom) { - var div = document.createElement('div') - div.innerHTML = '' + var a = document.createElement('a') + a.target = '_blank' + a.href = image.id - dom.appendChild(div) + let img = document.createElement('img') + img.src = image.id + a.appendChild(img) + + dom.appendChild(a) + + return img } function showWikimediaImage (image, options, dom) { + let img = document.createElement('img') + if (!options.size) { options.size = 800 } @@ -31,13 +40,20 @@ function showWikimediaImage (image, options, dom) { m[1] + Math.ceil(options.size * 1.5) + m[3] + ' 1.5x, ' + m[1] + Math.ceil(options.size * 2) + m[3] + ' 2x' - var div = document.createElement('div') - div.innerHTML = '' + let a = document.createElement('a') + a.target = '_blank' + a.href = 'https://commons.wikimedia.org/wiki/File:' + encodeURIComponent(image.id) + + img.src = src + img.srcset = srcset + a.appendChild(img) - dom.appendChild(div) + dom.appendChild(a) } } ) + + return img } // feature: { id: 'File:xxx.jpg', type: 'wikimedia|url', url: 'https://...' } @@ -46,10 +62,10 @@ function show (img, options, div) { switch (img.type) { case 'wikimedia': - showWikimediaImage(img, options, div) + return showWikimediaImage(img, options, div) break case 'url': - showImage(img, div) + return showImage(img, div) break default: } @@ -157,10 +173,10 @@ register_hook('show-popup', function (data, category, dom, callback) { currentLoader.first({ counter: data.popupImageCounter - }, function (err, img) { + }, function (err, data) { div.classList.remove('loading') - if (!img) { + if (!data) { return callback(err) } @@ -172,8 +188,12 @@ register_hook('show-popup', function (data, category, dom, callback) { size: 150 } - show(img, options, imageWrapper) - dom.classList.add('hasImage') + let img = show(data, options, imageWrapper) + if (img) { + img.onload = () => { + dom.classList.add('hasImage') + } + } callback(null) })