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.
/* Any JavaScript here will be loaded for all users on every page load. */
function runUntilSuccess(f) {
(function run() {
if (!f()) {
setTimeout(run, 10);
}
})();
}
// Extra functionality for RAM/ROM maps
// Sort table by the first column
runUntilSuccess(function() {
var tables = document.getElementsByClassName("ram_rom_map");
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
var header = table.getElementsByTagName("th")[0];
if (header.classList.contains("headerSort")) {
if (!header.classList.contains("headerSortUp")) {
header.click();
}
} else {
return false;
}
}
return true;
});
// Add the ending address to the length column
$(function() {
var tables = document.getElementsByClassName("ram_rom_map");
for (var i = 0; i < tables.length; i++) {
var table = tables[i];
var rows = table.getElementsByTagName("tbody")[0].children;
for (var j = 0; j < rows.length; j++) {
var row = rows[j];
var address = row.children[0].innerText;
var length = parseInt(row.children[1].innerText);
var endAddress = address.substr(0, 4) + (parseInt(address.substr(4, 4), 16) + length).toString(16).padStart(4, "0").toUpperCase();
row.children[1].title = "[" + address + ", " + endAddress + ")";
}
}
});
// Modify BPMN chart embeds to be just the SVG
runUntilSuccess(function() {
console.log("Checking for BPMN");
if (document.getElementsByClassName("bpmn_embed").length > 0) {
console.log("BPMN found");
var canvas = document.getElementById("canvas");
var parent = canvas.parentElement;
var svgs = canvas.getElementsByTagName("svg");
if (svgs.length == 0) {
console.log("No SVG found");
return false;
}
console.log("SVG found");
clone = svgs[0].cloneNode(true);
canvas.remove();
parent.appendChild(clone);
bbox = clone.getBBox();
clone.setAttribute("width", `${bbox.width}px`);
clone.setAttribute("height", `${bbox.height}px`);
clone.setAttribute("viewBox", `${bbox.x} ${bbox.y} ${bbox.width} ${bbox.height}`);
}
return true;
});