Difference between revisions of "MediaWiki:Common.js"

From Medivia Online Wiki
Line 3: Line 3:
   if (!maps.length) return;
   if (!maps.length) return;


   // Load Leaflet CSS
   const script = document.createElement('script');
  mw.loader.load('https://unpkg.com/[email protected]/dist/leaflet.css', 'text/css');
   script.src = 'https://tafonath.github.io/medivia-mapper/medivia-mapper.js';
 
  script.onload = () => {
  // Load Leaflet JS
     maps.forEach(el => {
   $.getScript('https://unpkg.com/leaflet@1.7.1/dist/leaflet.js', function () {
     maps.forEach(function (el) {
       const x = parseInt(el.dataset.x || 2048, 10);
       const x = parseInt(el.dataset.x || 2048, 10);
       const y = parseInt(el.dataset.y || -2047, 10);
       const y = parseInt(el.dataset.y || -2047, 10);
       const z = parseInt(el.dataset.z || 7, 10);
       const z = parseInt(el.dataset.z || 7, 10);
       const zoom = parseInt(el.dataset.zoom || 2, 10);
       const zoom = parseInt(el.dataset.zoom || 2, 10);
      const initUrl = `?x=${x}&y=${y}&z=${z}&zoom=${zoom}`;


       const map = L.map(el, {
       // Initialize the mapper in this element — requires modification to original app
        crs: L.CRS.Simple,
       MediviaMapper.init(el, initUrl); // this assumes the app is modular
        zoomSnap: 1,
        minZoom: 0,
        maxZoom: 10 // adjust if your tileset supports fewer zoom levels
       });
 
      const bounds = [[0, 0], [4096, 4096]];
      map.setView([x, y], zoom);
 
      L.tileLayer('https://tafonath.github.io/medivia-mapper/map/{z}/{x}/{y}.png', {
        tileSize: 256,
        noWrap: true,
        bounds: bounds,
        maxZoom: 10,
        minZoom: 0,
        attribution: '© Tafonath',
        errorTileUrl: 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' // transparent fallback
      }).addTo(map);
     });
     });
   });
   };
  document.body.appendChild(script);
});
});

Revision as of 11:07, 5 July 2025

$(document).ready(function () {
  const maps = document.querySelectorAll('.medivia-map');
  if (!maps.length) return;

  const script = document.createElement('script');
  script.src = 'https://tafonath.github.io/medivia-mapper/medivia-mapper.js';
  script.onload = () => {
    maps.forEach(el => {
      const x = parseInt(el.dataset.x || 2048, 10);
      const y = parseInt(el.dataset.y || -2047, 10);
      const z = parseInt(el.dataset.z || 7, 10);
      const zoom = parseInt(el.dataset.zoom || 2, 10);
      const initUrl = `?x=${x}&y=${y}&z=${z}&zoom=${zoom}`;

      // Initialize the mapper in this element — requires modification to original app
      MediviaMapper.init(el, initUrl); // this assumes the app is modular
    });
  };
  document.body.appendChild(script);
});