From 6b1e2400b99db1fc94cc0f35c95aa039ea21968a Mon Sep 17 00:00:00 2001 From: Justin Georgi Date: Mon, 21 Oct 2024 19:32:32 -0700 Subject: [PATCH] Improve formatting of file page inclusion Signed-off-by: Justin Georgi --- modules/glmv.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/glmv.js b/modules/glmv.js index d28993c..2ef6aa5 100644 --- a/modules/glmv.js +++ b/modules/glmv.js @@ -1,20 +1,24 @@ -console.log('GLMV JS loaded!') - let modelLoad = document.createElement('script') modelLoad.setAttribute('type','module') modelLoad.setAttribute('src','https://ajax.googleapis.com/ajax/libs/model-viewer/3.5.0/model-viewer.min.js') let headElem = document.getElementsByTagName('head')[0] headElem.appendChild(modelLoad) let urlProm, dataProm +let isFilePageImage = false let glbElems = document.querySelectorAll('.mw-body-content [href$=".glb"][title$=".glb"') if (glbElems.length > 0) { - [...glbElems].forEach(ge => { + [...glbElems].forEach((ge, idx) => { console.log(ge) const modelRef = ge.href const modelTitle = ge.title + isFilePageImage = false + if (idx == 0 + && $('.mw-page-title-namespace').text() == 'File' + && $('.mw-page-title-main').text() == modelTitle) { + isFilePageImage = true + } if (modelRef.indexOf('File:') >= 0) { - console.log(`Getting true url of ${modelTitle}`) urlProm = getModelUrl(modelTitle) dataProm = getModelMeta(modelTitle) } else { @@ -31,30 +35,34 @@ if (glbElems.length > 0) { newModel.toggleAttribute('ar') newModel.style.width='800px' newModel.style.height='600px' - ge.parentElement.replaceChild(newModel, ge) - console.log(`Replacing ${ge}...`) + if (isFilePageImage) { + ge.parentElement.insertBefore(newModel, ge) + $('.mediaWarning').remove() + } else { + ge.parentElement.replaceChild(newModel, ge) + } console.log(modelInfo[1]) }) }) } -async function getModelUrl(modelTitle) { +async function getModelUrl(getTitle) { const urlApi = new mw.Api; let urlApiResp = await urlApi.get({ "action": "query", "format": "json", "prop": "imageinfo", - "titles": modelTitle, + "titles": getTitle, "iiprop": "url" }); return urlApiResp.query.pages[Object.keys(urlApiResp.query.pages)[0]].imageinfo[0].url } -async function getModelMeta(modelTitle) { +async function getModelMeta(getTitle) { const metaApi = new mw.Api; let metaApiResp = await metaApi.get({ "action": "parse", - "page": modelTitle + "page": getTitle }); return JSON.parse($(metaApiResp.parse.text['*']).find('pre').text() || '{}') } \ No newline at end of file