User:Erutuon/scripts/missingEntries.js

/* * Script for more quickly hiding lists of entries in the "Sources" column of *  pages linked from User:Jberkel/lists/missing/20190401. * * Replacement for jQuery.makeCollapsible (mw:Manual:Collapsible elements), * which is very slow. */ $(function {	const linkedFrom = document.querySelectorAll('.redlink-list .linked-from');	if (linkedFrom.length === 0)		return;	const collapseText = '[Collapse]', expandText = '[Expand]';	const initiallyShown = window.showMissingEntries;	function makeButton (collapsible) {		const button = document.createElement('div');		button.style.float = 'right';		button.style.cursor = 'pointer';		button.style.color = 'blue';		button.style.display = 'inline-block';		let shown = typeof initiallyShown == 'boolean' ? initiallyShown : false;		button.textContent = shown ? collapseText : expandText;		collapsible.style.display = shown ? null : 'none';		button.addEventListener('click',  => { shown = !shown; collapsible.style.display = shown ? null : 'none'; button.textContent = shown ? collapseText : expandText; });		return button;	}	function moveChildNodes (origin, destination) {		const childNodes = origin.childNodes;		let child;		while ((child = childNodes[0]))			destination.appendChild(child);	}	function collapsify (parent) {		const collapsible = document.createElement("div");		moveChildNodes(parent, collapsible);		button = makeButton(collapsible);		parent.appendChild(button);		parent.appendChild(collapsible);	}	Array.from(linkedFrom).forEach(collapsify); });