MediaWiki:Common.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
// --- DISABLED FANDOM DARK THEME BLOCK (INVALID JS) ---
/*
mw.loader.implement("wgl.theme.dark@zm8jm", null, {
"css": ["html:has(body.wgl-theme-dark){color-scheme:dark}body.wgl-theme-dark{...}"]
});
*/
// --- END DISABLED BLOCK ---
// Dropdown-based Tier Assignment
mw.loader.using('jquery').then(function () {
console.log("✅ Dropdown-based Tier Assignment is running");
document.addEventListener('DOMContentLoaded', function () {
function moveItemToTier(itemId, tierId) {
var item = document.getElementById(itemId);
var targetTier = document.getElementById(tierId);
if (item && targetTier) {
targetTier.appendChild(item);
}
}
var selectors = document.querySelectorAll('.tier-selector');
for (var i = 0; i < selectors.length; i++) {
selectors[i].addEventListener('change', function () {
var selectedTier = this.value;
var itemId = this.id;
moveItemToTier(itemId, selectedTier);
});
}
});
});
// Bingo JS
mw.loader.using('mediawiki.util', function () {
document.addEventListener("DOMContentLoaded", function () {
console.log("✅ Bingo JS Loaded");
var tiles = document.querySelectorAll(".bingo-table td .lighttable-cell");
for (var i = 0; i < tiles.length; i++) {
(function(tile){
var id = tile.dataset.key || tile.id;
if (!id) return;
if (localStorage.getItem(id) === "selected") {
tile.classList.add("bingo-selected");
}
tile.addEventListener("click", function () {
tile.classList.toggle("bingo-selected");
if (tile.classList.contains("bingo-selected")) {
localStorage.setItem(id, "selected");
} else {
localStorage.removeItem(id);
}
});
})(tiles[i]);
}
});
});
// Skill XP calculator
document.addEventListener("DOMContentLoaded", function() {
var tables = document.querySelectorAll(".skill-info-calc");
for (var i = 0; i < tables.length; i++) {
(function(table){
var xpPerAction = parseInt(table.querySelector("span.total-xp").textContent);
var numActionsElem = table.querySelector(".num-actions");
var totalXPElem = table.querySelector(".total-xp");
table.querySelector(".increase").addEventListener("click", function() {
var actions = parseInt(numActionsElem.textContent) + 1;
numActionsElem.textContent = actions;
totalXPElem.textContent = actions * xpPerAction;
});
table.querySelector(".decrease").addEventListener("click", function() {
var actions = parseInt(numActionsElem.textContent) - 1;
if (actions < 0) actions = 0;
numActionsElem.textContent = actions;
totalXPElem.textContent = actions * xpPerAction;
});
})(tables[i]);
}
});
// Simple calculator
document.addEventListener("DOMContentLoaded", function() {
var calc = document.getElementById("calc");
if (!calc) return;
var btn = document.getElementById("calcButton");
btn.addEventListener("click", function() {
var a = parseFloat(document.getElementById("num1").value);
var b = parseFloat(document.getElementById("num2").value);
var op = document.getElementById("op").value;
var result;
if (isNaN(a) || isNaN(b)) {
result = "Enter valid numbers";
} else {
switch (op) {
case "+": result = a + b; break;
case "-": result = a - b; break;
case "*": result = a * b; break;
case "/": result = b !== 0 ? a / b : "∞"; break;
default: result = "Error";
}
}
document.getElementById("result").textContent = " " + result;
});
});
document.addEventListener("DOMContentLoaded", function() {
const btn = document.getElementById("calcButton");
if (!btn) return;
btn.addEventListener("click", function() {
const a = parseFloat(document.getElementById("num1").textContent);
const b = parseFloat(document.getElementById("num2").textContent);
const op = document.getElementById("op").textContent;
let result;
if (isNaN(a) || isNaN(b)) {
result = "Enter valid numbers";
} else {
switch(op) {
case "+": result = a + b; break;
case "-": result = a - b; break;
case "*": result = a * b; break;
case "/": result = b !== 0 ? a / b : "∞"; break;
default: result = "Error";
}
}
document.getElementById("result").textContent = result;
});
});
document.addEventListener("DOMContentLoaded", function() {
const btn = document.getElementById("calcButton");
if (!btn) return;
btn.addEventListener("click", function() {
const a = parseFloat(document.getElementById("num1").textContent);
const b = parseFloat(document.getElementById("num2").textContent);
const op = document.getElementById("op").textContent.trim();
let result;
if (isNaN(a) || isNaN(b)) {
result = "Enter valid numbers";
} else {
switch(op) {
case "+": result = a + b; break;
case "-": result = a - b; break;
case "*": result = a * b; break;
case "/": result = b !== 0 ? a / b : "∞"; break;
default: result = "Invalid operation";
}
}
document.getElementById("result").textContent = result;
});
});
document.addEventListener("DOMContentLoaded", function() {
const num1 = document.getElementById("num1");
const num2 = document.getElementById("num2");
const op = document.getElementById("op");
const result = document.getElementById("result");
const btn = document.getElementById("calcButton");
// Click handlers for number buttons
document.querySelectorAll("[data-num1]").forEach(b => {
b.addEventListener("click", () => num1.textContent = b.dataset.num1);
});
document.querySelectorAll("[data-num2]").forEach(b => {
b.addEventListener("click", () => num2.textContent = b.dataset.num2);
});
document.querySelectorAll("[data-op]").forEach(b => {
b.addEventListener("click", () => op.textContent = b.dataset.op);
});
btn.addEventListener("click", () => {
const a = parseFloat(num1.textContent);
const b = parseFloat(num2.textContent);
let res;
switch(op.textContent) {
case "+": res = a + b; break;
case "-": res = a - b; break;
case "*": res = a * b; break;
case "/": res = b !== 0 ? a / b : "∞"; break;
default: res = "Error";
}
result.textContent = res;
});
});
// Runs only on pages containing #calcContainer
document.addEventListener("DOMContentLoaded", function() {
const container = document.getElementById("calcContainer");
if (!container) return;
// Build calculator HTML dynamically
container.innerHTML = `
<div style="margin:10px 0;">
<label>Num1: <input type="number" id="num1" value="0" style="width:60px;"></label>
<label>Num2: <input type="number" id="num2" value="0" style="width:60px;"></label>
<label>Operation:
<select id="op">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
</label>
<button id="calcButton">Calculate</button>
</div>
<div>Result: <span id="result">0</span></div>
`;
// Add calculator functionality
const btn = document.getElementById("calcButton");
btn.addEventListener("click", function() {
const a = parseFloat(document.getElementById("num1").value);
const b = parseFloat(document.getElementById("num2").value);
const op = document.getElementById("op").value;
let result;
if (isNaN(a) || isNaN(b)) {
result = "Enter valid numbers";
} else {
switch(op) {
case "+": result = a + b; break;
case "-": result = a - b; break;
case "*": result = a * b; break;
case "/": result = b !== 0 ? a / b : "∞"; break;
default: result = "Error";
}
}
document.getElementById("result").textContent = result;
});
});