diff --git a/public/app.js b/public/app.js index 4186ddc..3c5ccf2 100644 --- a/public/app.js +++ b/public/app.js @@ -75,6 +75,7 @@ let loadRequestId = 0; let applicationMode = "dry-run"; let databaseConnectionState = "unknown"; const localDraftKey = "catalog-maker:current-product-draft:v2"; +const selectedManufacturerKey = "catalog-maker:selected-manufacturer"; let localDraftProductKey = ""; const fieldNames = [ "id_manufacturer", @@ -146,6 +147,12 @@ await loadManufacturers(); await loadLanguages(); languageSelect.addEventListener("change", syncLanguagePickerLabel); manufacturerSelect.addEventListener("change", () => { + if (manufacturerSelect.value) { + localStorage.setItem(selectedManufacturerKey, manufacturerSelect.value); + } + else { + localStorage.removeItem(selectedManufacturerKey); + } syncManufacturerPickerLabel(); closeManufacturerPicker(); if (manufacturerSelect.value) { @@ -289,15 +296,29 @@ async function loadManufacturers() { } if (data.message) manufacturerSelect.append(createOption("", data.message)); + restoreSelectedManufacturer(); syncManufacturerPickerLabel(); renderManufacturerOptions(); } catch (error) { manufacturerSelect.append(createOption("", error.message || "Local DB is not configured.")); + restoreSelectedManufacturer(); syncManufacturerPickerLabel(); renderManufacturerOptions(); } } +function restoreSelectedManufacturer() { + const savedManufacturerId = localStorage.getItem(selectedManufacturerKey); + if (!savedManufacturerId) + return; + const savedOption = [...manufacturerSelect.options].find((option) => option.value === savedManufacturerId); + if (savedOption) { + manufacturerSelect.value = savedManufacturerId; + } + else { + localStorage.removeItem(selectedManufacturerKey); + } +} function toggleManufacturerPicker() { if (manufacturerMenu.hidden) { manufacturerMenu.hidden = false; diff --git a/public/app.ts b/public/app.ts index 892a7ac..556ed77 100644 --- a/public/app.ts +++ b/public/app.ts @@ -77,6 +77,7 @@ let loadRequestId = 0; let applicationMode = "dry-run"; let databaseConnectionState = "unknown"; const localDraftKey = "catalog-maker:current-product-draft:v2"; +const selectedManufacturerKey = "catalog-maker:selected-manufacturer"; let localDraftProductKey = ""; const fieldNames = [ @@ -153,6 +154,11 @@ await loadLanguages(); languageSelect.addEventListener("change", syncLanguagePickerLabel); manufacturerSelect.addEventListener("change", () => { + if (manufacturerSelect.value) { + localStorage.setItem(selectedManufacturerKey, manufacturerSelect.value); + } else { + localStorage.removeItem(selectedManufacturerKey); + } syncManufacturerPickerLabel(); closeManufacturerPicker(); if (manufacturerSelect.value) { @@ -302,15 +308,31 @@ async function loadManufacturers() { manufacturerSelect.append(createOption(String(manufacturer.id), manufacturer.name)); } if (data.message) manufacturerSelect.append(createOption("", data.message)); + restoreSelectedManufacturer(); syncManufacturerPickerLabel(); renderManufacturerOptions(); } catch (error) { manufacturerSelect.append(createOption("", error.message || "Local DB is not configured.")); + restoreSelectedManufacturer(); syncManufacturerPickerLabel(); renderManufacturerOptions(); } } +function restoreSelectedManufacturer() { + const savedManufacturerId = localStorage.getItem(selectedManufacturerKey); + if (!savedManufacturerId) return; + + const savedOption = [...manufacturerSelect.options].find( + (option) => option.value === savedManufacturerId, + ); + if (savedOption) { + manufacturerSelect.value = savedManufacturerId; + } else { + localStorage.removeItem(selectedManufacturerKey); + } +} + function toggleManufacturerPicker() { if (manufacturerMenu.hidden) { manufacturerMenu.hidden = false;