This is a wiki for a reason. Anyone can contribute. If you see something that is inaccurate or can be improved, don't ask that it be fixed--just improve it.
[ Disclaimer, Create new user --- Wiki markup help, Install P99 ]

MediaWiki:HuntingGuide.js

From Project 1999 Wiki
Revision as of 21:21, 16 November 2017 by Loramin (Talk | contribs)

Jump to: navigation, search

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());
});