MediaWiki:Common.js: Difference between revisions

From ZAMN Hacking
Content added Content deleted
No edit summary
No edit summary
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* 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
// 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() {
$(function() {
const tables = document.getElementsByClassName("ram_rom_map");
var tables = document.getElementsByClassName("ram_rom_map");
for (let i = 0; i < tables.length; i++) {
for (var i = 0; i < tables.length; i++) {
const table = tables[i];
var table = tables[i];
// Sort table by the first column
table.getElementsByTagName("th")[0].click();
var rows = table.getElementsByTagName("tbody")[0].children;
// Add the ending address to the length column
for (var j = 0; j < rows.length; j++) {
const rows = table.getElementsByTagName("tbody")[0].children;
var row = rows[j];
for (let j = 0; j < rows.length; j++) {
const row = rows[j];
var address = row.children[0].innerText;
const 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();
const length = parseInt(row.children[1].innerText);
const endAddress = address.substr(0, 4) + (parseInt(address.substr(4, 4), 16) + length).toString(16).padStart(4, "0");
row.children[1].title = "[" + address + ", " + endAddress + ")";
row.children[1].title = "[" + address + ", " + endAddress + ")";
}
}
}
}
});

// Modify BPMN chart embeds to be just the SVG
runUntilSuccess(function() {
if (document.getElementsByClassName("bpmn_embed").length > 0) {
var canvas = document.getElementById("canvas");
var parent = canvas.parentElement;
var svgs = canvas.getElementsByTagName("svg");
if (svgs.length == 0 || svgs[0].getAttribute("data-element-id") == null) {
return false;
}
var clone = svgs[0].cloneNode(true);
canvas.remove();
parent.appendChild(clone);
var 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;
});
});

Latest revision as of 01:15, 29 June 2024

/* 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() {
	if (document.getElementsByClassName("bpmn_embed").length > 0) {
		var canvas = document.getElementById("canvas");
		var parent = canvas.parentElement;
		var svgs = canvas.getElementsByTagName("svg");
		if (svgs.length == 0 || svgs[0].getAttribute("data-element-id") == null) {
			return false;
		}
		
		var clone = svgs[0].cloneNode(true);
		canvas.remove();
		parent.appendChild(clone);
		
		var 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;
});