326 lines
11 KiB
JavaScript
326 lines
11 KiB
JavaScript
$('.row.header.fixed').click(function (e) {
|
|
sortMode = e.target.id
|
|
switch (sortMode){
|
|
case "species":
|
|
sortTablebySimple("name")
|
|
break;
|
|
case "dexno":
|
|
sortTablebySimple("id");
|
|
break;
|
|
case "tier":
|
|
sortTablebySimple("tier");
|
|
break;
|
|
case "HP":
|
|
sortTablebySimple("highHP");
|
|
break;
|
|
case "att":
|
|
sortTablebySimple("highAtt");
|
|
break;
|
|
case "def":
|
|
sortTablebySimple("highDef");
|
|
break;
|
|
case "spatt":
|
|
sortTablebySimple("highSpAtt");
|
|
break;
|
|
case "spdef":
|
|
sortTablebySimple("highSpDef");
|
|
break;
|
|
case "speed":
|
|
sortTablebySimple("highSpeed");
|
|
break;
|
|
case "release":
|
|
sortTablebySimple("unreleased");
|
|
break;
|
|
}
|
|
});
|
|
|
|
var tiers = {
|
|
AG: 8,
|
|
Uber: 7,
|
|
OU: 6,
|
|
UU: 5,
|
|
RU: 4,
|
|
NU: 3,
|
|
PU: 2,
|
|
LC: 1,
|
|
PA: 0,
|
|
Unsorted: -1
|
|
}
|
|
var autoReverse= [ "tier", "highHP", "highAtt", "highDef","highSpAtt","highSpDef","highSpeed" ]
|
|
|
|
function sortTablebySimple(input) {
|
|
table = $('.table.list')[0]
|
|
//species = table.find('.species')
|
|
sortFunc(obj, input, false, function (newObj) {
|
|
populateTable(newObj);
|
|
})
|
|
}
|
|
|
|
function populateTierFilter() {
|
|
selectBox = $('#tierFilter')[0];
|
|
for (var key in tiers) {
|
|
var opt = document.createElement('option');
|
|
opt.value = key;
|
|
opt.innerHTML = key;
|
|
selectBox.appendChild(opt);
|
|
}
|
|
}
|
|
|
|
function filterTier(e) {
|
|
var val = e.value
|
|
if (val == "Filter Tier") {
|
|
populateTable(obj);
|
|
currentFilter = undefined;
|
|
return
|
|
}
|
|
filterFunc(obj, val, false, function (newObj) {
|
|
populateTable(newObj);
|
|
})
|
|
}
|
|
|
|
function sortFunc(objectinput, input, isFilter, next) {
|
|
if (typeof currentFilter != 'undefined' && isFilter == false) {
|
|
filterFunc(objectinput, currentFilter, true, function (filteredObj) {
|
|
if (typeof currentsort == "undefined" || currentsort != input) {
|
|
obj2 = _.sortBy(filteredObj, input);
|
|
}
|
|
if (((typeof currentsort != "undefined" && currentsort == input) || ((typeof currentsort == "undefined" || currentsort != input) && _.contains(autoReverse, input)))) {
|
|
obj2 = _.sortBy(filteredObj, input);
|
|
obj2.reverse()
|
|
}
|
|
currentsort = input
|
|
next(obj2);
|
|
})
|
|
}
|
|
else {
|
|
var obj2 = _.sortBy(objectinput, input);
|
|
if (_.contains(autoReverse, input)) {
|
|
obj2.reverse()
|
|
}
|
|
if (typeof currentsort != "undefined" && currentsort == input) {
|
|
if(typeof toggleSort == "undefined"){ toggleSort = true; }
|
|
else if (!isFilter) { toggleSort = !toggleSort }
|
|
if (toggleSort && !isFilter){
|
|
obj2.reverse()
|
|
}
|
|
}
|
|
currentsort = input
|
|
next(obj2);
|
|
}
|
|
}
|
|
|
|
function filterFunc(object, input, isSort, next) {
|
|
if ((typeof currentsort != "undefined") && !isSort) {
|
|
if (typeof currentFilter != "undefined" && currentFilter != input) {
|
|
var object = obj;
|
|
}
|
|
var objectToSort = object;
|
|
sortFunc(objectToSort, currentsort, true, function (sortedObject) {
|
|
var newobj = _.filter(sortedObject, function (thing) { return thing.tier == tiers[input] })
|
|
currentFilter = input;
|
|
next(newobj);
|
|
})
|
|
}
|
|
else {
|
|
if (typeof currentFilter != "undefined" && currentFilter != input) { var object = obj }
|
|
var newobj = _.filter(object, function (thing) { return thing.tier == tiers[input] })
|
|
|
|
currentFilter = input;
|
|
next(newobj)
|
|
}
|
|
}
|
|
|
|
|
|
function makeObject(next) {
|
|
obj = []
|
|
for (var key in species_data) {
|
|
var pokeObj = {};
|
|
pokeObj.name = key;
|
|
var id = species_data[key].id.toString();
|
|
if (id.length == 1) { id = "00" + id; }
|
|
else if (id.length == 2) { id = "0" + id; }
|
|
pokeObj.id = id;
|
|
|
|
pokeObj.tier = -1;
|
|
pokeObj.highHP = -1;
|
|
pokeObj.highAtt = -1;
|
|
pokeObj.highDef = -1;
|
|
pokeObj.highSpAtt = -1;
|
|
pokeObj.highSpDef = -1;
|
|
pokeObj.highSpeed = -1;
|
|
pokeObj.unreleased = false;
|
|
|
|
formes = formes_data[key];
|
|
pokeObj.formes = {}
|
|
for (var formeName in formes) {
|
|
var formeObj = {}
|
|
var forme = formes[formeName]
|
|
|
|
if (tiers[forme.tier] > pokeObj.tier) { pokeObj.tier = tiers[forme.tier] }
|
|
if (forme.stats.hp > pokeObj.highHP) { pokeObj.highHP = forme.stats.hp }
|
|
if (forme.stats.attack > pokeObj.highAtt) { pokeObj.highAtt = forme.stats.attack }
|
|
if (forme.stats.defense > pokeObj.highDef) { pokeObj.highDef = forme.stats.defense }
|
|
if (forme.stats.specialAttack > pokeObj.highSpAtt) { pokeObj.highSpAtt = forme.stats.specialAttack }
|
|
if (forme.stats.specialDefense > pokeObj.highSpDef) { pokeObj.highSpDef = forme.stats.specialDefense }
|
|
if (forme.stats.speed > pokeObj.highSpeed) { pokeObj.highSpeed = forme.stats.speed }
|
|
if (forme.unreleased) { pokeObj.unreleased = true; }
|
|
|
|
if (forme.tier) { formeObj.tier = forme.tier[0]; }
|
|
else { formeObj.tier = "Unsorted" }
|
|
formeObj.types = forme.types;
|
|
formeObj.Abilities = forme.abilities;
|
|
if (forme.hiddenAbility) { formeObj.HA = forme.hiddenAbility; }
|
|
else { formeObj.HA = "" }
|
|
formeObj.stats = forme.stats;
|
|
formeObj.unreleased = forme.unreleased;
|
|
pokeObj.formes[formeName] = formeObj
|
|
}
|
|
obj.push(pokeObj)
|
|
}
|
|
next(obj);
|
|
}
|
|
|
|
function populateTable(arr) {
|
|
table = $('.table.list')[0];
|
|
|
|
while(table.rows.length > 0) {
|
|
table.deleteRow(0);
|
|
}
|
|
|
|
for (var i in arr) {
|
|
var pokeObj = arr[i];
|
|
var row = table.insertRow(-1);
|
|
row.className += "row pokemonRow"
|
|
row.id = pokeObj.name
|
|
// Sets dexNo
|
|
var dexcell = row.insertCell(0);
|
|
dexcell.innerHTML = pokeObj.id;
|
|
// sets Icon
|
|
var img = document.createElement("div");
|
|
img.className += "iconplace"
|
|
img.style.background = "URL(/Sprites/Icons/icon" + pokeObj.id + ".png";
|
|
dexcell.appendChild(img);
|
|
// Sets name
|
|
var namecell = row.insertCell(1);
|
|
namecell.innerHTML = pokeObj.name;
|
|
namecell.className += "cell species"
|
|
//Handles multiple formes
|
|
for (var j in pokeObj.formes) {
|
|
var formeTable = document.createElement('table');
|
|
formeTable.className += "formeTable"
|
|
var forme = pokeObj.formes[j];
|
|
var formeRow = formeTable.insertRow(-1);
|
|
formeRow.className += "row inherit"
|
|
//Sets formename
|
|
var formenamecell = formeRow.insertCell(0);
|
|
formenamecell.className += "formeName"
|
|
formenamecell.innerHTML = j;
|
|
//Sets forme tier
|
|
var formetiercell = formeRow.insertCell(1);
|
|
formetiercell.className += "tier"
|
|
formetiercell.innerHTML = forme.tier;
|
|
if (forme.types[1]) {
|
|
//type 1
|
|
var type1cell = formeRow.insertCell(2);
|
|
type1cell.className += forme.types[0]
|
|
type1cell.innerHTML = forme.types[0]
|
|
//type 2
|
|
var type2cell = formeRow.insertCell(3);
|
|
type2cell.className += forme.types[1]
|
|
type2cell.innerHTML = forme.types[1]
|
|
}
|
|
else {
|
|
//hax for single type
|
|
var type1cell = formeRow.insertCell(2);
|
|
type1cell.className += forme.types[0] + " singletypeleft"
|
|
type1cell.innerHTML = forme.types[0]
|
|
var type2cell = formeRow.insertCell(3);
|
|
type2cell.className += "singeltyperight"
|
|
}
|
|
type1cell.className += " type";
|
|
type2cell.className += " type";
|
|
//set abilities
|
|
var abils = forme.Abilities.join('<br>');
|
|
var abilcell = formeRow.insertCell(4);
|
|
abilcell.className += "abilities";
|
|
abilcell.innerHTML = abils;
|
|
//hidden ability
|
|
var haCell = formeRow.insertCell(5);
|
|
haCell.className += "abilities";
|
|
haCell.innerHTML = forme.HA
|
|
//stats
|
|
//hp
|
|
var hpcell = formeRow.insertCell(6);
|
|
hpcell.className += "allstats";
|
|
hpcell.innerHTML = forme.stats.hp;
|
|
//att
|
|
var attcell = formeRow.insertCell(7);
|
|
attcell.className += "allstats";
|
|
attcell.innerHTML = forme.stats.attack;
|
|
//def
|
|
var defcell = formeRow.insertCell(8);
|
|
defcell.className += "allstats";
|
|
defcell.innerHTML = forme.stats.defense;
|
|
//spatt
|
|
var spattcell = formeRow.insertCell(9);
|
|
spattcell.className += "allstats";
|
|
spattcell.innerHTML = forme.stats.specialAttack;
|
|
//def
|
|
var spdefcell = formeRow.insertCell(10);
|
|
spdefcell.className += "allstats";
|
|
spdefcell.innerHTML = forme.stats.specialDefense;
|
|
//speed
|
|
var speedcell = formeRow.insertCell(11);
|
|
speedcell.className += "allstats";
|
|
speedcell.innerHTML = forme.stats.speed;
|
|
//released
|
|
releasecell = formeRow.insertCell(12)
|
|
if ((forme.unreleased == false || typeof forme.unreleased == 'undefined') && pokeObj.formes.default.unreleased != true) {
|
|
releasecell.className += "release released"
|
|
releasecell.innerHTML = "✔"
|
|
}
|
|
else {
|
|
releasecell.className += "release unreleased"
|
|
releasecell.innerHTML = "✖"
|
|
}
|
|
row.appendChild(formeTable);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function openTab(pkmn) {
|
|
pkmn = pkmn.replace(" ", "_")
|
|
url= "/pokemon/" + pkmn
|
|
window.open(url, '_blank');
|
|
}
|
|
|
|
$("table.table.list").click(function (e) {
|
|
target = e.target;
|
|
var search = target;
|
|
var searching = true;
|
|
while (searching) {
|
|
upNode = search.parentElement;
|
|
if (upNode.localName == "body") {
|
|
searching = false;
|
|
return;
|
|
}
|
|
if (upNode.className == "row pokemonRow") {
|
|
searching = false;
|
|
openTab(upNode.id)
|
|
}
|
|
else {
|
|
search = upNode;
|
|
}
|
|
}
|
|
|
|
})
|
|
|
|
$(document).ready(function () {
|
|
makeObject(function (arr) {
|
|
populateTable(arr)
|
|
populateTierFilter()
|
|
})
|
|
}); |