improve sorting

2.0
Matheus Clemente 2023-11-09 14:29:34 -03:00
parent e0841dbc3b
commit e7170f166a
1 changed files with 61 additions and 107 deletions

View File

@ -800,128 +800,82 @@ class CompendiumBrowser extends Application {
} }
sortSpells(list, byName) { sortSpells(list, byName) {
if (byName) { list.sort((a, b) => {
list.sort((a, b) => { const aName = $(a).find(".item-name a")[0].innerHTML;
let aName = $(a).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1; if (!byName) {
if (aName > bName) return 1; const aLevel = $(a).find("input[name=level]").val();
return 0; const bLevel = $(b).find("input[name=level]").val();
}); const levelComparison = aLevel.localeCompare(bLevel);
} else {
list.sort((a, b) => { if (levelComparison !== 0) {
let aVal = $(a).find("input[name=level]").val(); return levelComparison;
let bVal = $(b).find("input[name=level]").val();
if (aVal < bVal) return -1;
if (aVal > bVal) return 1;
if (aVal == bVal) {
let aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1;
return 0;
} }
}); }
} return aName.localeCompare(bName);
});
return list; return list;
} }
sortFeats(list, byName) { sortFeats(list, byName) {
if (byName) { list.sort((a, b) => {
list.sort((a, b) => { const aName = $(a).find(".item-name a")[0].innerHTML;
let aName = $(a).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1; if (!byName) {
if (aName > bName) return 1; const aLevel = $(a).find("input[name=class]").val();
return 0; const bLevel = $(b).find("input[name=class]").val();
}); const levelComparison = aLevel.localeCompare(bLevel);
} else {
list.sort((a, b) => { if (levelComparison !== 0) {
let aVal = $(a).find("input[name=class]").val(); return levelComparison;
let bVal = $(b).find("input[name=class]").val();
if (aVal < bVal) return -1;
if (aVal > bVal) return 1;
if (aVal == bVal) {
let aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1;
return 0;
} }
}); }
} return aName.localeCompare(bName);
});
return list; return list;
} }
sortItems(list, byName) { sortItems(list, byName) {
if (byName) { list.sort((a, b) => {
list.sort((a, b) => { const aName = $(a).find(".item-name a")[0].innerHTML;
let aName = $(a).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1; if (!byName) {
if (aName > bName) return 1; const aLevel = $(a).find("input[name=type]").val();
return 0; const bLevel = $(b).find("input[name=type]").val();
}); const levelComparison = aLevel.localeCompare(bLevel);
} else {
list.sort((a, b) => { if (levelComparison !== 0) {
let aVal = $(a).find("input[name=type]").val(); return levelComparison;
let bVal = $(b).find("input[name=type]").val();
if (aVal < bVal) return -1;
if (aVal > bVal) return 1;
if (aVal == bVal) {
let aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1;
return 0;
} }
}); }
} return aName.localeCompare(bName);
});
return list; return list;
} }
sortNpcs(list, orderBy) { sortNpcs(list, orderBy) {
switch (orderBy) { list.sort((a, b) => {
case "name": const aName = $(a).find(".item-name a")[0].innerHTML;
list.sort((a, b) => { const bName = $(b).find(".item-name a")[0].innerHTML;
let aName = $(a).find(".npc-name a")[0].innerHTML;
let bName = $(b).find(".npc-name a")[0].innerHTML; if (orderBy === "cr") {
if (aName < bName) return -1; const aLevel = Number($(a).find('input[name="order.cr"]').val());
if (aName > bName) return 1; const bLevel = Number($(b).find('input[name="order.cr"]').val());
return 0; if (aLevel !== bLevel) {
}); return aLevel - bLevel;
break; }
case "cr": } else if (orderBy === "size") {
list.sort((a, b) => { const aLevel = Number($(a).find('input[name="order.size"]').val());
let aVal = Number($(a).find('input[name="order.cr"]').val()); const bLevel = Number($(b).find('input[name="order.size"]').val());
let bVal = Number($(b).find('input[name="order.cr"]').val()); if (aLevel !== bLevel) {
if (aVal < bVal) return -1; return aLevel - bLevel;
if (aVal > bVal) return 1; }
if (aVal == bVal) { }
let aName = $(a).find(".npc-name a")[0].innerHTML; return aName.localeCompare(bName);
let bName = $(b).find(".npc-name a")[0].innerHTML; });
if (aName < bName) return -1;
if (aName > bName) return 1;
return 0;
}
});
break;
case "size":
list.sort((a, b) => {
let aVal = $(a).find('input[name="order.size"]').val();
let bVal = $(b).find('input[name="order.size"]').val();
if (aVal < bVal) return -1;
if (aVal > bVal) return 1;
if (aVal == bVal) {
let aName = $(a).find(".npc-name a")[0].innerHTML;
let bName = $(b).find(".npc-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1;
return 0;
}
});
break;
}
return list; return list;
} }