|
|
| (60 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| | | mw.loader.load('/index.php?title=MediaWiki:DropCalc.js&action=raw&ctype=text/javascript'); |
| | | mw.loader.load('/index.php?title=MediaWiki:SlayerPointsCalc.js&action=raw&ctype=text/javascript'); |
| // --- DISABLED FANDOM DARK THEME BLOCK (INVALID JS) ---
| | mw.loader.load('/index.php?title=MediaWiki:BingoSheet.js&action=raw&ctype=text/javascript'); |
| /*
| |
| 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;
| |
| });
| |
| });
| |