MediaWiki:Common.js: Difference between revisions
Jump to navigation
Jump to search
logo stays in sidebar |
hover hires |
||
| Line 1: | Line 1: | ||
/* Keep the logo in the sidebar. Park search at the left of the header (right of the logo). */ | /* Keep the logo in the sidebar. Park search at the left of the header (right of the logo). | ||
Card thumbs: show 88px for page load; on hover swap to the full GEMP/holotable image. */ | |||
(function () { | (function () { | ||
function ready(fn) { | function ready(fn) { | ||
| Line 8: | Line 9: | ||
} | } | ||
} | } | ||
function originalFromThumb(src) { | |||
var m = src.match(/\/images\/thumb\/([^/]+\/[^/]+\/[^/]+)\/\d+px-/); | |||
if (m) { | |||
return '/images/' + m[1]; | |||
} | |||
return src; | |||
} | |||
function hiresFromFile(src) { | |||
var m = src.match(/Premiere-(L|D)-([^/?#]+)\.(?:gif|png)/i); | |||
if (!m) { | |||
return null; | |||
} | |||
var side = m[1].toUpperCase() === 'L' ? 'Light' : 'Dark'; | |||
var base = m[2].replace(/\.gif$/i, '').replace(/\.png$/i, ''); | |||
return 'https://res.starwarsccg.org/cards/Premiere-' + side + '/hires/' + base + '.png'; | |||
} | |||
ready(function () { | ready(function () { | ||
var search = document.getElementById('p-search'); | var search = document.getElementById('p-search'); | ||
| Line 13: | Line 33: | ||
if (search && head && search.parentNode !== head) { | if (search && head && search.parentNode !== head) { | ||
head.insertBefore(search, head.firstChild); | head.insertBefore(search, head.firstChild); | ||
} | |||
var imgs = document.querySelectorAll('table.card-thumbs img'); | |||
for (var i = 0; i < imgs.length; i++) { | |||
(function (img) { | |||
var thumb = img.currentSrc || img.src; | |||
var full = hiresFromFile(thumb) || originalFromThumb(thumb); | |||
img.addEventListener('mouseenter', function () { | |||
if (img.src !== full) { | |||
img.setAttribute('data-thumb', thumb); | |||
img.src = full; | |||
img.classList.add('zoomed'); | |||
} | |||
}); | |||
img.addEventListener('mouseleave', function () { | |||
var t = img.getAttribute('data-thumb'); | |||
if (t) { | |||
img.src = t; | |||
} | |||
img.classList.remove('zoomed'); | |||
}); | |||
})(imgs[i]); | |||
} | } | ||
}); | }); | ||
})(); | })(); | ||
Revision as of 01:20, 21 September 2026
/* Keep the logo in the sidebar. Park search at the left of the header (right of the logo).
Card thumbs: show 88px for page load; on hover swap to the full GEMP/holotable image. */
(function () {
function ready(fn) {
if (document.readyState !== 'loading') {
fn();
} else {
document.addEventListener('DOMContentLoaded', fn);
}
}
function originalFromThumb(src) {
var m = src.match(/\/images\/thumb\/([^/]+\/[^/]+\/[^/]+)\/\d+px-/);
if (m) {
return '/images/' + m[1];
}
return src;
}
function hiresFromFile(src) {
var m = src.match(/Premiere-(L|D)-([^/?#]+)\.(?:gif|png)/i);
if (!m) {
return null;
}
var side = m[1].toUpperCase() === 'L' ? 'Light' : 'Dark';
var base = m[2].replace(/\.gif$/i, '').replace(/\.png$/i, '');
return 'https://res.starwarsccg.org/cards/Premiere-' + side + '/hires/' + base + '.png';
}
ready(function () {
var search = document.getElementById('p-search');
var head = document.getElementById('mw-head');
if (search && head && search.parentNode !== head) {
head.insertBefore(search, head.firstChild);
}
var imgs = document.querySelectorAll('table.card-thumbs img');
for (var i = 0; i < imgs.length; i++) {
(function (img) {
var thumb = img.currentSrc || img.src;
var full = hiresFromFile(thumb) || originalFromThumb(thumb);
img.addEventListener('mouseenter', function () {
if (img.src !== full) {
img.setAttribute('data-thumb', thumb);
img.src = full;
img.classList.add('zoomed');
}
});
img.addEventListener('mouseleave', function () {
var t = img.getAttribute('data-thumb');
if (t) {
img.src = t;
}
img.classList.remove('zoomed');
});
})(imgs[i]);
}
});
})();