fix(webui): remove unnecessary elements when changing language #1095

Merged
Sainan merged 3 commits from AMelonInsideLemon/SpaceNinjaServer:doubling-options into main 2025-03-06 20:42:31 -08:00
2 changed files with 25 additions and 16 deletions

View File

@ -555,9 +555,7 @@
<form class="mt-2" onsubmit="doChangeSupportedSyndicate(); return false;"> <form class="mt-2" onsubmit="doChangeSupportedSyndicate(); return false;">
<label class="form-label" for="changeSyndicate" data-loc="cheats_changeSupportedSyndicate"></label> <label class="form-label" for="changeSyndicate" data-loc="cheats_changeSupportedSyndicate"></label>
<div class="input-group"> <div class="input-group">
<select class="form-control" id="changeSyndicate"> <input class="form-control" id="changeSyndicate" list="datalist-Syndicates" />
<option value="" data-loc="cheats_none"></option>
</select>
<button class="btn btn-primary" type="submit" data-loc="cheats_changeButton"></button> <button class="btn btn-primary" type="submit" data-loc="cheats_changeButton"></button>
</div> </div>
</form> </form>
@ -593,6 +591,7 @@
<datalist id="datalist-Sentinels"></datalist> <datalist id="datalist-Sentinels"></datalist>
<datalist id="datalist-ModularParts"></datalist> <datalist id="datalist-ModularParts"></datalist>
<datalist id="datalist-MechSuits"></datalist> <datalist id="datalist-MechSuits"></datalist>
<datalist id="datalist-Syndicates"></datalist>
<datalist id="datalist-miscitems"></datalist> <datalist id="datalist-miscitems"></datalist>
<datalist id="datalist-mods"> <datalist id="datalist-mods">
<option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option> <option data-key="/Lotus/Upgrades/Mods/Fusers/LegendaryModFuser" value="Legendary Core"></option>

View File

@ -129,7 +129,11 @@ function setActiveLanguage(lang) {
window.dictPromise = new Promise(resolve => { window.dictPromise = new Promise(resolve => {
const webui_lang = ["en", "ru", "fr"].indexOf(lang) == -1 ? "en" : lang; const webui_lang = ["en", "ru", "fr"].indexOf(lang) == -1 ? "en" : lang;
const script = document.createElement("script"); let script = document.getElementById("translations");
if (script) document.documentElement.removeChild(script);
script = document.createElement("script");
script.id = "translations";
script.src = "/translations/" + webui_lang + ".js"; script.src = "/translations/" + webui_lang + ".js";
script.onload = function () { script.onload = function () {
updateLocElements(); updateLocElements();
@ -157,6 +161,15 @@ function fetchItemList() {
req.done(async data => { req.done(async data => {
await dictPromise; await dictPromise;
document.querySelectorAll('[id^="datalist-"]').forEach(datalist => {
datalist.innerHTML = "";
});
const syndicateNone = document.createElement("option");
syndicateNone.setAttribute("data-key", "");
syndicateNone.value = loc("cheats_none");
document.getElementById("datalist-Syndicates").appendChild(syndicateNone);
window.archonCrystalUpgrades = data.archonCrystalUpgrades; window.archonCrystalUpgrades = data.archonCrystalUpgrades;
const itemMap = { const itemMap = {
@ -198,15 +211,6 @@ function fetchItemList() {
}); });
} else if (type == "uniqueLevelCaps") { } else if (type == "uniqueLevelCaps") {
uniqueLevelCaps = items; uniqueLevelCaps = items;
} else if (type == "Syndicates") {
items.forEach(item => {
if (item.uniqueName.startsWith("RadioLegion")) item.name += " (" + item.uniqueName + ")";
const option = document.createElement("option");
option.value = item.uniqueName;
option.innerHTML = item.name;
document.getElementById("changeSyndicate").appendChild(option);
itemMap[item.uniqueName] = { ...item, type };
});
} else { } else {
items.forEach(item => { items.forEach(item => {
if ("badReason" in item) { if ("badReason" in item) {
@ -216,6 +220,9 @@ function fetchItemList() {
item.name += " " + loc("code_badItem"); item.name += " " + loc("code_badItem");
} }
} }
if (type == "Syndicates" && item.uniqueName.startsWith("RadioLegion")) {
item.name += " (" + item.uniqueName + ")";
}
if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && item.badReason != "notraw") { if (item.uniqueName.substr(0, 18) != "/Lotus/Types/Game/" && item.badReason != "notraw") {
const option = document.createElement("option"); const option = document.createElement("option");
option.setAttribute("data-key", item.uniqueName); option.setAttribute("data-key", item.uniqueName);
@ -564,8 +571,10 @@ function updateInventory() {
single.loadRoute("/webui/inventory"); single.loadRoute("/webui/inventory");
} }
} }
document.getElementById("changeSyndicate").value =
document.getElementById("changeSyndicate").value = data.SupportedSyndicate ?? ""; [...document.querySelectorAll("#datalist-Syndicates option")].find(
option => option.getAttribute("data-key") === (data.SupportedSyndicate ?? "")
)?.value ?? loc("cheats_none");
}); });
}); });
} }
@ -1138,7 +1147,8 @@ function doImport() {
} }
function doChangeSupportedSyndicate() { function doChangeSupportedSyndicate() {
const uniqueName = document.getElementById("changeSyndicate").value; const uniqueName = getKey(document.getElementById("changeSyndicate"));
revalidateAuthz(() => { revalidateAuthz(() => {
$.get("/api/setSupportedSyndicate.php?" + window.authz + "&syndicate=" + uniqueName).done(function () { $.get("/api/setSupportedSyndicate.php?" + window.authz + "&syndicate=" + uniqueName).done(function () {
updateInventory(); updateInventory();