MediaWiki:Common.js: Difference between revisions

From SWCCG Wiki
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]);
    }
  });
})();