MediaWiki:Common.js: Difference between revisions
From Business Heroes Food Truck Simulation
Wikiworks743 (talk | contribs) No edit summary |
Wikiworks743 (talk | contribs) No edit summary |
||
| (50 intermediate revisions by the same user not shown) | |||
| Line 3: | Line 3: | ||
$('#p-contentnavigation').append($('#editor-menu')); | $('#p-contentnavigation').append($('#editor-menu')); | ||
const server | const server = mw.config.get ( 'wgServer' ); | ||
const path = mw.config.get ( ' | const path = mw.config.get ( 'wgScriptPath' ); | ||
const | 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 = []; | |||
// add a link and click event to the dropdown togglers | $(function() { | ||
$('#top-panel .dropdown-toggle').each(function(i,v){ | |||
// 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(); | |||
var | |||
// 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(){ | function getActiveCategory(){ | ||
var | 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'); | |||
$('.im- | |||
} | } | ||
} | } | ||
} | } | ||
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');
}
}
}