MediaWiki:Common.js: Difference between revisions
No edit summary |
No edit summary |
||
| (6 intermediate revisions by the same user not shown) | |||
| Line 36: | Line 36: | ||
mw.loader.load('/maps/elemara/elemara-map.js'); | mw.loader.load('/maps/elemara/elemara-map.js'); | ||
document.addEventListener(" | mw.loader.using([], function () { | ||
const container = document.getElementById( | $(function () { | ||
var container = document.getElementById("pixel-area-calculator"); | |||
if (!container) { | |||
return; | |||
} | |||
container.innerHTML = | |||
'<div class="pixel-area-tool">' + | |||
'<h3>Pixel to Square Miles Calculator</h3>' + | |||
'<label>Width in pixels:' + | |||
'<input id="pixel-width" type="number" min="0" step="any" placeholder="Width">' + | |||
'</label>' + | |||
'<label>Height in pixels:' + | |||
'<input id="pixel-height" type="number" min="0" step="any" placeholder="Height">' + | |||
'</label>' + | |||
'<button id="pixel-area-button" type="button">Calculate</button>' + | |||
'<div id="pixel-area-result"></div>' + | |||
'</div>'; | |||
document.getElementById("pixel-area-button").addEventListener("click", function () { | |||
var widthPixels = parseFloat(document.getElementById("pixel-width").value); | |||
var heightPixels = parseFloat(document.getElementById("pixel-height").value); | |||
var result = document.getElementById("pixel-area-result"); | |||
if (isNaN(widthPixels) || isNaN(heightPixels)) { | |||
result.textContent = "Please enter both pixel values."; | |||
return; | |||
} | |||
var widthMiles = (widthPixels / 1000) * 50; | |||
var heightMiles = (heightPixels / 1000) * 50; | |||
var squareMiles = widthMiles * heightMiles; | |||
result.innerHTML = | |||
"<strong>" + widthMiles.toLocaleString(undefined, { maximumFractionDigits: 0 }) + " miles</strong>" + | |||
" × " + | |||
"<strong>" + heightMiles.toLocaleString(undefined, { maximumFractionDigits: 0 }) + " miles</strong>" + | |||
" = " + | |||
"<strong>" + squareMiles.toLocaleString(undefined, { maximumFractionDigits: 0 }) + " mi²</strong>"; | |||
}); | |||
}); | |||
}); | |||
(function () { | |||
function stripHeaderLines(text) { | |||
return text | |||
// Remove standalone short lines that look like section headers | |||
.replace(/(?:^|\n)\s*[A-Z][A-Za-z0-9'’\- ,()]{0,50}\s*(?=\n)/g, '\n') | |||
// Clean up excess blank lines | |||
.replace(/\n{2,}/g, '\n') | |||
.trim(); | |||
} | |||
function cleanAdarisPopups() { | |||
document.querySelectorAll( | |||
'.mwe-popups-extract, .mwe-popups-extract p, .mwe-popups .extract, .mwe-popups .mwe-popups-extract' | |||
).forEach(function (el) { | |||
if (!el || el.dataset.adarisCleaned === '1') { | |||
return; | |||
} | |||
el.textContent = stripHeaderLines(el.textContent); | |||
el.dataset.adarisCleaned = '1'; | |||
}); | |||
} | |||
const observer = new MutationObserver(function () { | |||
cleanAdarisPopups(); | |||
setTimeout(cleanAdarisPopups, 100); | |||
setTimeout(cleanAdarisPopups, 300); | |||
}); | |||
observer.observe(document.body, { | |||
childList: true, | |||
subtree: true, | |||
characterData: true | |||
}); | |||
cleanAdarisPopups(); | |||
})(); | |||
mw.loader.using('mediawiki.util', function () { | |||
$(function () { | |||
var input = document.getElementById('pixelToMileInput'); | |||
var output = document.getElementById('pixelToMileOutput'); | |||
if (!input || !output) { | |||
return; | |||
} | |||
input.addEventListener('input', function () { | |||
var pixels = parseFloat(input.value); | |||
if (isNaN(pixels)) { | |||
output.textContent = '0 mi'; | |||
return; | |||
} | |||
var miles = (pixels / 1000) * 50; | |||
output.textContent = Math.round(miles) + ' mi'; | |||
}); | |||
}); | |||
}); | |||
$(function () { | |||
var container = document.getElementById('pixel-to-mile-calculator'); | |||
if (!container) { | if (!container) { | ||
| Line 43: | Line 154: | ||
} | } | ||
container. | container.className = 'adaris-tool-box'; | ||
container.innerHTML = | |||
</ | '<label for="pixelToMileInput"><strong>Pixels:</strong></label><br>' + | ||
'<input id="pixelToMileInput" type="number" placeholder="Enter pixels">' + | |||
'<p><strong>Distance:</strong> <span id="pixelToMileOutput">0 mi</span></p>'; | |||
var input = document.getElementById('pixelToMileInput'); | |||
var output = document.getElementById('pixelToMileOutput'); | |||
input.addEventListener('input', function () { | |||
var pixels = parseFloat(input.value); | |||
if (isNaN( | if (isNaN(pixels)) { | ||
output.textContent = '0 mi'; | |||
return; | return; | ||
} | } | ||
var miles = (pixels / 1000) * 50; | |||
output.textContent = Math.round(miles) + ' mi'; | |||
}); | }); | ||
}); | }); | ||