[ Disclaimer, Create new user --- Wiki markup help, Install P99 ]
MediaWiki:HuntingGuide.js
From Project 1999 Wiki
Note: After saving, 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)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Clear the cache in Tools → Preferences
const $rows = $('.wikitable tbody tr');
const spots = $rows.map(function (i, el) {
var groupLevel = $(el).children('td:eq(1)').text();
groupLevel = groupLevel.trim() === '-' ? null : groupLevel;
const $tr = $(el);
return {
soloLevel: $tr.children('td:eq(0)').text(),
groupLevel,
zone: $tr.children('td:eq(2)').text(),
area: $tr.children('td:eq(3)').text(),
monsters: $tr.children('td:eq(4)').text(),
xpMod: $tr.children('td:eq(5)').text(),
notes: $tr.children('td:eq(6)').text(),
$tr
}
}
);
$('#levelFilterPlaceholder').replaceWith('<input id="levelFilter" style="width:30px"/>');
$('#levelFilter').change(function() {
var level = parseInt($('#levelFilter').val(), 10);
const $rows = $('.wikitable tbody tr');
$rows.hide();
spots.each(function(i, spot) {
var levelRangeText = spot.$tr.children('td:first').text();
var splitLevelRanges = levelRangeText.split('-');
var minLevel = parseInt(splitLevelRanges[0], 10);
var maxLevel = parseInt(splitLevelRanges[1] || splitLevelRanges[0], 10);
console.log(levelRangeText[0], levelRangeText[1], minLevel, level, maxLevel)
if (minLevel <= level && maxLevel >= level) {
spot.$tr.show();
}
});
selectFilter($('#levelFilterLabel'));
});
function filterForClass(eqClass) {
$rows.show();
if (eqClass.trim().toLowerCase() === "none") return;
$rows.hide();
spots.each((function(i, spot) {
if (!spot.notes.toLowerCase()
.match(new RegExp(`good for .*?${eqClass.toLowerCase()}`))) return;
spot.$tr.show();
}));
}
function selectFilter($target) {
$('.filterLink, #levelFilterLabel').css({textDecoration: ''});
$target.css({textDecoration: 'underline'});
}
$('.filterLink').click(function(e) {
var $target = $(e.target);
selectFilter($target);
filterForClass($target.text());
});