Jump to content

MediaWiki:Common.js: Difference between revisions

From Adaris
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("DOMContentLoaded", function () {
mw.loader.using([], function () {
   const container = document.getElementById("pixel-area-calculator");
  $(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.innerHTML = `
   container.className = 'adaris-tool-box';
    <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>
  container.innerHTML =
     </div>
    '<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>';


   const button = document.getElementById("pixel-area-button");
   var input = document.getElementById('pixelToMileInput');
  var output = document.getElementById('pixelToMileOutput');


   button.addEventListener("click", function () {
   input.addEventListener('input', function () {
     const widthPixels = parseFloat(document.getElementById("pixel-width").value);
     var pixels = parseFloat(input.value);
    const heightPixels = parseFloat(document.getElementById("pixel-height").value);
    const result = document.getElementById("pixel-area-result");


     if (isNaN(widthPixels) || isNaN(heightPixels)) {
     if (isNaN(pixels)) {
       result.textContent = "Please enter both pixel values.";
       output.textContent = '0 mi';
       return;
       return;
     }
     }


     const widthMiles = (widthPixels / 1000) * 50;
     var miles = (pixels / 1000) * 50;
    const heightMiles = (heightPixels / 1000) * 50;
    const squareMiles = widthMiles * heightMiles;


     result.innerHTML = `
     output.textContent = Math.round(miles) + ' mi';
      <strong>${widthMiles.toLocaleString(undefined, { maximumFractionDigits: 2 })} miles</strong>
      ×
      <strong>${heightMiles.toLocaleString(undefined, { maximumFractionDigits: 2 })} miles</strong>
      =
      <strong>${squareMiles.toLocaleString(undefined, { maximumFractionDigits: 2 })} mi²</strong>
    `;
   });
   });
});
});

Latest revision as of 18:40, 7 May 2026

// -------------------------
// Infobox cleanup
// -------------------------
$(document).ready(function() {
    $('.infoboxTable th').each(function() {
        if ($(this).text().trim() === "Image") {
            $(this).text("");
        }
    });
});

// -------------------------
// Remove unwanted Introduction headers
// -------------------------
$(document).ready(function() {
    $('h2').each(function() {
        if ($(this).text().trim() === "Introduction") {
            $(this).remove();
        }
    });
});

// -------------------------
// Remove first empty paragraph
// -------------------------
$(document).ready(function() {
    $('p').first().each(function() {
        if ($(this).html().trim() === "<br>") {
            $(this).remove();
        }
    });
});


mw.loader.load('https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@main/dist/en/v7.0.0/legacy/ol.js');
mw.loader.load('/maps/elemara/elemara-map.js');

mw.loader.using([], function () {
  $(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) {
    return;
  }

  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(pixels)) {
      output.textContent = '0 mi';
      return;
    }

    var miles = (pixels / 1000) * 50;

    output.textContent = Math.round(miles) + ' mi';
  });
});