MediaWiki:Common.js: Difference between revisions
From Business Heroes Food Truck Simulation
			Wikiworks743 (talk | contribs) No edit summary  | 
				Wikiworks743 (talk | contribs)  No edit summary  | 
				||
| (89 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. */  | ||
$('#p-contentnavigation').append($('#editor-menu'));  | |||
const server     = mw.config.get ( 'wgServer' );  | |||
const path       = mw.config.get ( 'wgScriptPath' );  | |||
const categories = mw.config.get ( 'wgCategories' );  | |||
const curpage    = mw.config.get( 'wgTitle' );  | |||
// const manpage    = window.location.pathname.replace(/\/index\.php\//, '');  | |||
const areas      = ['Marketing', 'Finance', 'Operations', 'Planning', 'HR', 'Accounting'];  | |||
const contentWrapper = document.querySelector('#content-wrapper');  | |||
const headings = contentWrapper.querySelectorAll('h2 > span, h3 > span');  | |||
var firstElement = [];  | |||
$('.  | $(function() {  | ||
	// add a link and click event to the dropdown togglers  | |||
	$('#top-panel .dropdown-toggle').each(function(i,v){  | |||
		var p = $(v).text();  | |||
		var url = new URL( server + path + '/index.php/' + encodeURIComponent(p));  | |||
		$(v).attr('href', url);  | |||
		$(v).on('click', function(e){  | |||
			e.stopPropagation();  | |||
			$(v).click;  | |||
		});  | |||
	});  | |||
	// on page load check its name to highlight menu items  | |||
	$('#top-panel a.dropdown-toggle').each(function(i,v){  | |||
		var p = new URL($(v).attr('href')).pathname.replace(/%20/g, ' ').replace(/\/index\.php\//, '');  | |||
		if(p === curpage){  | |||
			$(v)  | |||
			.addClass('show')  | |||
			.attr('aria-expanded','true')  | |||
			.parent()  | |||
			.addClass('position-static show')  | |||
			.find('.dropdown-menu')  | |||
			.show();  | |||
		} else {  | |||
			$(v)  | |||
			.removeClass('show')  | |||
			.attr('aria-expanded','false')  | |||
			.parent()  | |||
			.removeClass('position-static show')  | |||
			.find('.dropdown-menu')  | |||
			.hide();  | |||
		}  | 		}  | ||
	});  | 	});  | ||
	// highlight active category  | |||
	getActiveCategory();  | |||
// follow headings on scroll  | |||
var observer = new IntersectionObserver(function (entries) {  | |||
	entries.forEach(function (entry) {  | |||
		if (entry.isIntersecting) {  | |||
			var heading = entry.target;  | |||
			var headingId = heading.getAttribute('id');  | |||
			if (!(headingId === null) && !(headingId === undefined)) {  | |||
				var className = "n-" + headingId.replace(/_/g, "-");  | |||
				firstElement = document.querySelectorAll('a[class*="' + className + '" i]');  | |||
				if (!(firstElement.item(0) === null) && !(firstElement.item(0) === undefined)) {  | |||
					$('.nav-link').removeClass('active');  | |||
					firstElement.item(0).classList.add('active');  | |||
				}  | |||
			}  | |||
		}  | |||
	});  | |||
});  | |||
headings.forEach(function (heading) {  | |||
	observer.observe(heading);  | |||
});  | |||
});  | |||
function getActiveCategory(){  | |||
	for(var i = 0, j = areas.length; i < j; i++) {  | |||
		$('.im-' + areas[i].toLowerCase()).attr('title', areas[i]);  | |||
		if(categories.includes(areas[i])) {  | |||
			$('.im-' + areas[i].toLowerCase()).parent().addClass('im-active');  | |||
		} else {  | |||
			$('.im-' + areas[i].toLowerCase()).parent().removeClass('im-active');  | |||
		}  | |||
	}  | |||
}  | |||
Latest revision as of 17:23, 22 December 2022
/* Any JavaScript here will be loaded for all users on every page load. */
$('#p-contentnavigation').append($('#editor-menu'));
const server     = mw.config.get ( 'wgServer' );
const path       = mw.config.get ( 'wgScriptPath' );
const categories = mw.config.get ( 'wgCategories' );
const curpage    = mw.config.get( 'wgTitle' );
// const manpage    = window.location.pathname.replace(/\/index\.php\//, '');
const areas      = ['Marketing', 'Finance', 'Operations', 'Planning', 'HR', 'Accounting'];
const contentWrapper = document.querySelector('#content-wrapper');
const headings = contentWrapper.querySelectorAll('h2 > span, h3 > span');
var firstElement = [];
$(function() {
	
	// add a link and click event to the dropdown togglers
	$('#top-panel .dropdown-toggle').each(function(i,v){
		var p = $(v).text();
		var url = new URL( server + path + '/index.php/' + encodeURIComponent(p));
		$(v).attr('href', url);
		$(v).on('click', function(e){
			e.stopPropagation();
			$(v).click;
		});
	});
	// on page load check its name to highlight menu items
	$('#top-panel a.dropdown-toggle').each(function(i,v){
		var p = new URL($(v).attr('href')).pathname.replace(/%20/g, ' ').replace(/\/index\.php\//, '');
		if(p === curpage){
			$(v)
			.addClass('show')
			.attr('aria-expanded','true')
			.parent()
			.addClass('position-static show')
			.find('.dropdown-menu')
			.show();
		} else {
			$(v)
			.removeClass('show')
			.attr('aria-expanded','false')
			.parent()
			.removeClass('position-static show')
			.find('.dropdown-menu')
			.hide();
		}
	});
	// highlight active category
	getActiveCategory();
// follow headings on scroll
var observer = new IntersectionObserver(function (entries) {
	entries.forEach(function (entry) {
		if (entry.isIntersecting) {
			var heading = entry.target;
			var headingId = heading.getAttribute('id');
			if (!(headingId === null) && !(headingId === undefined)) {
				var className = "n-" + headingId.replace(/_/g, "-");
				firstElement = document.querySelectorAll('a[class*="' + className + '" i]');
				if (!(firstElement.item(0) === null) && !(firstElement.item(0) === undefined)) {
					$('.nav-link').removeClass('active');
					firstElement.item(0).classList.add('active');
				}
			}
		}
	});
});
headings.forEach(function (heading) {
	observer.observe(heading);
});
});
function getActiveCategory(){
	for(var i = 0, j = areas.length; i < j; i++) {
		$('.im-' + areas[i].toLowerCase()).attr('title', areas[i]);
		if(categories.includes(areas[i])) {
			$('.im-' + areas[i].toLowerCase()).parent().addClass('im-active');
		} else {
			$('.im-' + areas[i].toLowerCase()).parent().removeClass('im-active');
		}
	}
}