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) => {
let aName = $(a).find(".item-name a")[0].innerHTML; const aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1; if (!byName) {
return 0; const aLevel = $(a).find("input[name=level]").val();
}); const bLevel = $(b).find("input[name=level]").val();
} else { const levelComparison = aLevel.localeCompare(bLevel);
list.sort((a, b) => {
let aVal = $(a).find("input[name=level]").val(); if (levelComparison !== 0) {
let bVal = $(b).find("input[name=level]").val(); return levelComparison;
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) => {
let aName = $(a).find(".item-name a")[0].innerHTML; const aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1; if (!byName) {
return 0; const aLevel = $(a).find("input[name=class]").val();
}); const bLevel = $(b).find("input[name=class]").val();
} else { const levelComparison = aLevel.localeCompare(bLevel);
list.sort((a, b) => {
let aVal = $(a).find("input[name=class]").val(); if (levelComparison !== 0) {
let bVal = $(b).find("input[name=class]").val(); return levelComparison;
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) => {
let aName = $(a).find(".item-name a")[0].innerHTML; const aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".item-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1; if (!byName) {
return 0; const aLevel = $(a).find("input[name=type]").val();
}); const bLevel = $(b).find("input[name=type]").val();
} else { const levelComparison = aLevel.localeCompare(bLevel);
list.sort((a, b) => {
let aVal = $(a).find("input[name=type]").val(); if (levelComparison !== 0) {
let bVal = $(b).find("input[name=type]").val(); return levelComparison;
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) {
case "name":
list.sort((a, b) => { list.sort((a, b) => {
let aName = $(a).find(".npc-name a")[0].innerHTML; const aName = $(a).find(".item-name a")[0].innerHTML;
let bName = $(b).find(".npc-name a")[0].innerHTML; const bName = $(b).find(".item-name a")[0].innerHTML;
if (aName < bName) return -1;
if (aName > bName) return 1; if (orderBy === "cr") {
return 0; const aLevel = Number($(a).find('input[name="order.cr"]').val());
}); const bLevel = Number($(b).find('input[name="order.cr"]').val());
break; if (aLevel !== bLevel) {
case "cr": return aLevel - bLevel;
list.sort((a, b) => {
let aVal = Number($(a).find('input[name="order.cr"]').val());
let bVal = Number($(b).find('input[name="order.cr"]').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;
} }
}); } else if (orderBy === "size") {
break; const aLevel = Number($(a).find('input[name="order.size"]').val());
case "size": const bLevel = Number($(b).find('input[name="order.size"]').val());
list.sort((a, b) => { if (aLevel !== bLevel) {
let aVal = $(a).find('input[name="order.size"]').val(); return aLevel - bLevel;
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 aName.localeCompare(bName);
});
return list; return list;
} }