chore(webui): exclude always available items from datalist (#2783)

Reviewed-on: OpenWF/SpaceNinjaServer#2783
Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
AMelonInsideLemon 2025-09-16 23:23:59 -07:00 committed by Sainan
parent 6a6683fb25
commit 6c2b7a61e2
4 changed files with 25 additions and 18 deletions

8
package-lock.json generated
View File

@ -17,7 +17,7 @@
"morgan": "^1.10.0", "morgan": "^1.10.0",
"ncp": "^2.0.0", "ncp": "^2.0.0",
"undici": "^7.10.0", "undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.88", "warframe-public-export-plus": "^0.5.89",
"warframe-riven-info": "^0.1.2", "warframe-riven-info": "^0.1.2",
"winston": "^3.17.0", "winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0", "winston-daily-rotate-file": "^5.0.0",
@ -5532,9 +5532,9 @@
} }
}, },
"node_modules/warframe-public-export-plus": { "node_modules/warframe-public-export-plus": {
"version": "0.5.88", "version": "0.5.89",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.88.tgz", "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.89.tgz",
"integrity": "sha512-uX766+MYDY3pMncu/23Dp9VZvrUe8pdWRWMcxfUbXg29aYO2GqipimHaFtw+vfrY06YAE8nbFkCWhFL3oPDPGw==" "integrity": "sha512-a6dM1MirzofSsuv3LlRQHFLSSIGKPVSN93dcXSDmA3njsWqOGjJJdWyXqcyxxYw8rEB8CNowSHst/MUmKvKlRg=="
}, },
"node_modules/warframe-riven-info": { "node_modules/warframe-riven-info": {
"version": "0.1.2", "version": "0.1.2",

View File

@ -35,7 +35,7 @@
"morgan": "^1.10.0", "morgan": "^1.10.0",
"ncp": "^2.0.0", "ncp": "^2.0.0",
"undici": "^7.10.0", "undici": "^7.10.0",
"warframe-public-export-plus": "^0.5.88", "warframe-public-export-plus": "^0.5.89",
"warframe-riven-info": "^0.1.2", "warframe-riven-info": "^0.1.2",
"winston": "^3.17.0", "winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0", "winston-daily-rotate-file": "^5.0.0",

View File

@ -36,6 +36,7 @@ interface ListedItem {
partType?: string; partType?: string;
chainLength?: number; chainLength?: number;
parazon?: boolean; parazon?: boolean;
alwaysAvailable?: boolean;
} }
interface ItemLists { interface ItemLists {
@ -455,8 +456,9 @@ const getItemListsController: RequestHandler = (req, response) => {
for (const [uniqueName, item] of Object.entries(ExportFlavour)) { for (const [uniqueName, item] of Object.entries(ExportFlavour)) {
res.FlavourItems.push({ res.FlavourItems.push({
uniqueName: uniqueName, uniqueName,
name: getString(item.name, lang) name: getString(item.name, lang),
alwaysAvailable: item.alwaysAvailable
}); });
} }

View File

@ -594,10 +594,12 @@ function fetchItemList() {
} else if (item.uniqueName.includes("ColourPicker")) { } else if (item.uniqueName.includes("ColourPicker")) {
item.name = loc("code_itemColorPalette").split("|ITEM|").join(item.name); item.name = loc("code_itemColorPalette").split("|ITEM|").join(item.name);
} }
const option = document.createElement("option"); if (!item.alwaysAvailable) {
option.setAttribute("data-key", item.uniqueName); const option = document.createElement("option");
option.value = item.name; option.setAttribute("data-key", item.uniqueName);
document.getElementById("datalist-" + type).appendChild(option); option.value = item.name;
document.getElementById("datalist-" + type).appendChild(option);
}
itemMap[item.uniqueName] = { ...item, type }; itemMap[item.uniqueName] = { ...item, type };
}); });
} else { } else {
@ -993,12 +995,12 @@ function updateInventory() {
document.getElementById("FlavourItems-list").innerHTML = ""; document.getElementById("FlavourItems-list").innerHTML = "";
data.FlavourItems.forEach(item => { data.FlavourItems.forEach(item => {
const datalist = document.getElementById("datalist-FlavourItems"); const datalist = document.getElementById("datalist-FlavourItems");
if (!data.FlavourItems.some(x => x.ItemType == item.uniqueName)) { if (!data.FlavourItems.some(x => x.ItemType == item.ItemType)) {
if (!datalist.querySelector(`option[value="${item.uniqueName}"]`)) { if (!datalist.querySelector(`option[data-key="${item.ItemType}"]`)) {
reAddToItemList(itemMap, "FlavourItems", item.ItemType); reAddToItemList(itemMap, "FlavourItems", item.ItemType);
} }
} }
const optionToRemove = datalist.querySelector(`option[value="${item.ItemType}"]`); const optionToRemove = datalist.querySelector(`option[data-key="${item.ItemType}"]`);
optionToRemove?.remove(); optionToRemove?.remove();
const tr = document.createElement("tr"); const tr = document.createElement("tr");
@ -3408,10 +3410,13 @@ function doAddCurrency(currency) {
} }
function reAddToItemList(itemMap, datalist, itemType) { function reAddToItemList(itemMap, datalist, itemType) {
const option = document.createElement("option"); const item = itemMap[itemType];
option.setAttribute("data-key", itemType); if (!item?.alwaysAvailable) {
option.value = itemMap[itemType]?.name ?? itemType; const option = document.createElement("option");
document.getElementById("datalist-" + datalist).appendChild(option); option.setAttribute("data-key", itemType);
option.value = item?.name ?? itemType;
document.getElementById("datalist-" + datalist).appendChild(option);
}
} }
function doQuestUpdate(operation, itemType) { function doQuestUpdate(operation, itemType) {