MediaWiki:Common.js: Difference between revisions
From Business Heroes Food Truck Simulation
Wikiworks743 (talk | contribs) No edit summary Tag: Manual revert |
Wikiworks743 (talk | contribs) No edit summary |
||
(10 intermediate revisions by the same user not shown) | |||
Line 10: | Line 10: | ||
const areas = ['Marketing', 'Finance', 'Operations', 'Planning', 'HR', 'Accounting']; | const areas = ['Marketing', 'Finance', 'Operations', 'Planning', 'HR', 'Accounting']; | ||
const contentWrapper = document.querySelector('#content-wrapper'); | const contentWrapper = document.querySelector('#content-wrapper'); | ||
const headings = contentWrapper.querySelectorAll('h2 | const headings = contentWrapper.querySelectorAll('h2 > span, h3 > span'); | ||
var firstElement = []; | var firstElement = []; | ||
Line 51: | Line 51: | ||
// highlight active category | // highlight active category | ||
getActiveCategory(); | 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); | |||
}); | |||
}); | }); | ||
Line 56: | Line 80: | ||
function getActiveCategory(){ | function getActiveCategory(){ | ||
for(var i = 0, j = areas.length; i < j; i++) { | for(var i = 0, j = areas.length; i < j; i++) { | ||
$('.im-' + areas[i].toLowerCase()).attr('title', areas[i]); | |||
if(categories.includes(areas[i])) { | if(categories.includes(areas[i])) { | ||
$('.im-' + areas[i].toLowerCase()).parent().addClass('im-active'); | $('.im-' + areas[i].toLowerCase()).parent().addClass('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'); } } }