MediaWiki:Common.js
Appearance
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
mw.loader.using('mediawiki.util').then(function () {
function initQuestFilters() {
var container = document.querySelector('.quest-cards');
if (!container) {
return;
}
var cards = Array.prototype.slice.call(container.querySelectorAll('.quest-card'));
var searchInput = document.querySelector('.quest-filter-search');
var regionSelect = document.querySelector('.quest-filter-region');
var minInput = document.querySelector('.quest-filter-min');
var maxInput = document.querySelector('.quest-filter-max');
var accountButtons = Array.prototype.slice.call(document.querySelectorAll('.quest-account-toggle button'));
var currentAccount = 'all';
function normalize(value) {
return (value || '').toLowerCase().trim();
}
function applyFilters() {
var search = normalize(searchInput && searchInput.value);
var region = normalize(regionSelect && regionSelect.value);
var minLevel = parseInt((minInput && minInput.value) || '0', 10);
var maxLevel = parseInt((maxInput && maxInput.value) || '9999', 10);
cards.forEach(function (card) {
var name = normalize(card.dataset.name);
var cardRegion = normalize(card.dataset.region);
var cardAccount = normalize(card.dataset.account);
var cardMin = parseInt(card.dataset.levelMin || '0', 10);
var cardMax = parseInt(card.dataset.levelMax || '9999', 10);
var matchesSearch = !search || name.indexOf(search) !== -1;
var matchesRegion = !region || region === 'all' || cardRegion === region;
var matchesAccount = currentAccount === 'all' || cardAccount === currentAccount;
var matchesLevel = cardMax >= minLevel && cardMin <= maxLevel;
var visible = matchesSearch && matchesRegion && matchesAccount && matchesLevel;
card.classList.toggle('is-hidden', !visible);
});
}
if (searchInput) {
searchInput.addEventListener('input', applyFilters);
}
if (regionSelect) {
regionSelect.addEventListener('change', applyFilters);
}
if (minInput) {
minInput.addEventListener('input', applyFilters);
}
if (maxInput) {
maxInput.addEventListener('input', applyFilters);
}
accountButtons.forEach(function (button) {
button.addEventListener('click', function () {
accountButtons.forEach(function (btn) {
btn.classList.remove('is-active');
});
button.classList.add('is-active');
currentAccount = button.getAttribute('data-account') || 'all';
applyFilters();
});
});
applyFilters();
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initQuestFilters);
} else {
initQuestFilters();
}
});