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" style="width:30px"/>');
+
$('#levelFilterPlaceholder').replaceWith('<input id="levelFilter" style="width:30px"/>');
  
 
$('#levelFilter').change(function() {
 
$('#levelFilter').change(function() {
Line 31: Line 31:
 
       spot.$tr.show();
 
       spot.$tr.show();
 
     }
 
     }
 
+
   });
   })
+
  selectFilter($('#levelFilterLabel');
 
});
 
});
  
Line 46: Line 46:
 
     spot.$tr.show();
 
     spot.$tr.show();
 
   }));
 
   }));
 +
}
 +
 +
function selectFilter($target) {
 +
  $('.filterLink, #levelFilterLabel').css({textDecoration: ''});
 +
  $target.css({textDecoration: 'underline'});
 
}
 
}
  
 
$('.filterLink').click(function(e) {
 
$('.filterLink').click(function(e) {
  $('.filterLink').css({textDecoration: ''});
 
 
   var $target = $(e.target);
 
   var $target = $(e.target);
 +
  selectFilter($target);
 
   filterForClass($target.text());
 
   filterForClass($target.text());
  $target.css({textDecoration: 'underline'});
 
 
});
 
});

Revision as of 21:20, 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
    }
  }
);
$('#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());
});