From 519cb26044f09387855d496740e6889843c1cd65 Mon Sep 17 00:00:00 2001 From: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Date: Thu, 6 Mar 2025 20:42:30 -0800 Subject: [PATCH] fix(webui): remove unnecessary elements when changing language (#1095) Fixes #1094 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1095 Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> --- static/webui/index.html | 5 ++--- static/webui/script.js | 36 +++++++++++++++++++++++------------- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/static/webui/index.html b/static/webui/index.html index 77389791..a161bd0c 100644 --- a/static/webui/index.html +++ b/static/webui/index.html @@ -555,9 +555,7 @@
- +
@@ -593,6 +591,7 @@ + diff --git a/static/webui/script.js b/static/webui/script.js index 1750f511..fd0811d6 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -129,7 +129,11 @@ function setActiveLanguage(lang) { window.dictPromise = new Promise(resolve => { 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.onload = function () { updateLocElements(); @@ -157,6 +161,15 @@ function fetchItemList() { req.done(async data => { 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; const itemMap = { @@ -198,15 +211,6 @@ function fetchItemList() { }); } else if (type == "uniqueLevelCaps") { 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 { items.forEach(item => { if ("badReason" in item) { @@ -216,6 +220,9 @@ function fetchItemList() { 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") { const option = document.createElement("option"); option.setAttribute("data-key", item.uniqueName); @@ -564,8 +571,10 @@ function updateInventory() { single.loadRoute("/webui/inventory"); } } - - document.getElementById("changeSyndicate").value = data.SupportedSyndicate ?? ""; + document.getElementById("changeSyndicate").value = + [...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() { - const uniqueName = document.getElementById("changeSyndicate").value; + const uniqueName = getKey(document.getElementById("changeSyndicate")); + revalidateAuthz(() => { $.get("/api/setSupportedSyndicate.php?" + window.authz + "&syndicate=" + uniqueName).done(function () { updateInventory();