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 ]

Difference between revisions of "MediaWiki:HuntingGuide.js"

From Project 1999 Wiki
Jump to: navigation, search
Line 16: Line 16:
 
   }
 
   }
 
);
 
);
$('#levelFilter').replaceWith('<input id="levelFilter" />');
+
$('#levelFilter').replaceWith('<input id="levelFilter" style="width:30px"/>');
  
 
$('#levelFilter').change(function() {
 
$('#levelFilter').change(function() {

Revision as of 21:11, 16 November 2017

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
    }
  }
);
$('#levelFilter').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();
    }

  })
});

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

$('.filterLink').click(function(e) {
  $('.filterLink').css({textDecoration: ''});
  var $target = $(e.target);
  filterForClass($target.text());
  $target.css({textDecoration: 'underline'});
});