Difference between revisions of "MediaWiki:Common.js"

Line 15: Line 15:
 
d.textContent = (text || "");
 
d.textContent = (text || "");
 
return d;
 
return d;
};
+
},
 
// Function to streamline getElementById
 
// Function to streamline getElementById
var $i = function (id, top) {
+
$i = function (id, top) {
 
if(top === undefined) {
 
if(top === undefined) {
 
top = document;
 
top = document;

Revision as of 05:43, 28 November 2019

/* Any JavaScript here will be loaded for all users on every page load. */

// Function to streamline element creation
var $e = function (tag, text, classes, id) {
	var d = document.createElement(tag),
		cl = d.classList;
	if (classes !== undefined) {
		classes.forEach( function(c) {
			cl.add(c);
		});
	}
	if(id) {
		d.id = id;
	}
	d.textContent = (text || "");
	return d;
},
// Function to streamline getElementById
$i = function (id, top) {
	if(top === undefined) {
		top = document;
	}
	return top.getElementById(id);
};
// Function to streamline querySelector
var $q = function (query, top) {
	if(top === undefined) {
		top = document;
	}
	return top.querySelector(query);
};
// Function to streamline querySelectorAll
var $a = function (query, top) {
	if(top === undefined) {
		top = document;
	}
	return top.querySelectorAll(query);
};
// Function to look up a CSS variable (not needed)
/*var $v = function (variable) {
	return window.getComputedStyle(document.documentElement).getPropertyValue(variable).trim();
};*/
// Function to set CSS variables
var $sv = function (variable, value) {
	document.documentElement.style.setProperty(variable, value);
};

// Look for a Div that indicates we're a lexicon page
var lexiconInfo = $i("lexiconInfo");
// Swappers have these two attributes.
var swapperNexus = $a("input[data-swapper][data-swap-interval]");

//
// TEXT SWAP-OUT ANIMATION
//
if(swapperNexus.length) {
	// Check each swapper separately.
	swapperNexus.forEach(function(nex) {
		// Define variables inside here to hold stuff for the setInterval loop.
		var overlord = $i("swap-override");  // A checkbox to pause ALL swapping on a page
		var inverter = $i("swap-inverter");  // A checkbox to invert ALL animations (check to animate)
		var ds = nex.dataset;
		var ident = ds.swapper;     // Name
		var rep = parseInt(ds.swapInterval); // Duration (in milliseconds)
		setInterval(function(){
			var x = nex.checked;
			if(!overlord.checked &&	(inverter.checked ? x : !x) ) { // Pause when checked
				$a("[data-swap-nexus=\"" + ident + "\"]").forEach(function(d) {
					// Rotate out the text!
					var swap = d.dataset.swap.split(" ");
					var newText = swap.shift();
					swap.push(newText);
					d.textContent = newText;
					d.dataset.swap = swap.join(" ");
				});
			}
		}, rep);
	});
}