Add source popup reload action
This commit is contained in:
+6
-2
@@ -34,6 +34,7 @@ const sidebarOverlay = document.querySelector("#sidebarOverlay");
|
||||
const sourceModal = document.querySelector("#sourceModal");
|
||||
const sourceTitle = document.querySelector("#sourceTitle");
|
||||
const sourceList = document.querySelector("#sourceList");
|
||||
const sourceReloadButton = document.querySelector("#sourceReloadButton");
|
||||
const sourceCloseButton = document.querySelector("#sourceCloseButton");
|
||||
const settingsButton = document.querySelector("#settingsButton");
|
||||
const themeToggle = document.querySelector("#themeToggle");
|
||||
@@ -185,6 +186,7 @@ loadProductButton.disabled = true;
|
||||
loadProductButton.title = "Load existing product attribute info.";
|
||||
loadProductButton.addEventListener("click", loadProductInfoForCurrentProduct);
|
||||
findSourcesButton.addEventListener("click", findSourcesForCurrentProduct);
|
||||
sourceReloadButton.addEventListener("click", () => findSourcesForCurrentProduct(true));
|
||||
getPicturesButton.addEventListener("click", getPicturesForCurrentProduct);
|
||||
secondaryPanelToggle.addEventListener("click", toggleSecondaryPanel);
|
||||
mainWorkspaceToggle.addEventListener("click", toggleMainWorkspace);
|
||||
@@ -646,13 +648,13 @@ function closeSuggestedProducts() {
|
||||
suggestedModal.hidden = true;
|
||||
suggestedList.replaceChildren();
|
||||
}
|
||||
async function findSourcesForCurrentProduct() {
|
||||
async function findSourcesForCurrentProduct(forceRefresh = false) {
|
||||
if (!manufacturerSelect.value || !currentProduct) {
|
||||
setTableMessage("Select manufacturer and product first.");
|
||||
return;
|
||||
}
|
||||
const savedDraft = readLocalDraft();
|
||||
if (savedDraft?.sources) {
|
||||
if (savedDraft?.sources && !forceRefresh) {
|
||||
renderSourceCandidates(savedDraft.sources.items || []);
|
||||
updateFindSourcesButtonState();
|
||||
sourceTitle.textContent = "Source candidates (cached)";
|
||||
@@ -661,6 +663,7 @@ async function findSourcesForCurrentProduct() {
|
||||
}
|
||||
const supplierColorGroup = getFirstSupplierColorGroup();
|
||||
findSourcesButton.disabled = true;
|
||||
sourceReloadButton.disabled = true;
|
||||
setButtonLabel(findSourcesButton, "Finding sources...");
|
||||
try {
|
||||
const params = new URLSearchParams({
|
||||
@@ -689,6 +692,7 @@ async function findSourcesForCurrentProduct() {
|
||||
setTableMessage(error.message || "Source search failed.");
|
||||
}
|
||||
finally {
|
||||
sourceReloadButton.disabled = false;
|
||||
updateFindSourcesButtonState();
|
||||
}
|
||||
}
|
||||
|
||||
+6
-2
@@ -34,6 +34,7 @@ const sidebarOverlay = document.querySelector("#sidebarOverlay");
|
||||
const sourceModal = document.querySelector("#sourceModal");
|
||||
const sourceTitle = document.querySelector("#sourceTitle");
|
||||
const sourceList = document.querySelector("#sourceList");
|
||||
const sourceReloadButton = document.querySelector("#sourceReloadButton");
|
||||
const sourceCloseButton = document.querySelector("#sourceCloseButton");
|
||||
const settingsButton = document.querySelector("#settingsButton");
|
||||
const themeToggle = document.querySelector("#themeToggle");
|
||||
@@ -190,6 +191,7 @@ loadProductButton.disabled = true;
|
||||
loadProductButton.title = "Load existing product attribute info.";
|
||||
loadProductButton.addEventListener("click", loadProductInfoForCurrentProduct);
|
||||
findSourcesButton.addEventListener("click", findSourcesForCurrentProduct);
|
||||
sourceReloadButton.addEventListener("click", () => findSourcesForCurrentProduct(true));
|
||||
getPicturesButton.addEventListener("click", getPicturesForCurrentProduct);
|
||||
secondaryPanelToggle.addEventListener("click", toggleSecondaryPanel);
|
||||
mainWorkspaceToggle.addEventListener("click", toggleMainWorkspace);
|
||||
@@ -700,14 +702,14 @@ function closeSuggestedProducts() {
|
||||
suggestedList.replaceChildren();
|
||||
}
|
||||
|
||||
async function findSourcesForCurrentProduct() {
|
||||
async function findSourcesForCurrentProduct(forceRefresh = false) {
|
||||
if (!manufacturerSelect.value || !currentProduct) {
|
||||
setTableMessage("Select manufacturer and product first.");
|
||||
return;
|
||||
}
|
||||
|
||||
const savedDraft = readLocalDraft();
|
||||
if (savedDraft?.sources) {
|
||||
if (savedDraft?.sources && !forceRefresh) {
|
||||
renderSourceCandidates(savedDraft.sources.items || []);
|
||||
updateFindSourcesButtonState();
|
||||
sourceTitle.textContent = "Source candidates (cached)";
|
||||
@@ -717,6 +719,7 @@ async function findSourcesForCurrentProduct() {
|
||||
|
||||
const supplierColorGroup = getFirstSupplierColorGroup();
|
||||
findSourcesButton.disabled = true;
|
||||
sourceReloadButton.disabled = true;
|
||||
setButtonLabel(findSourcesButton, "Finding sources...");
|
||||
|
||||
try {
|
||||
@@ -746,6 +749,7 @@ async function findSourcesForCurrentProduct() {
|
||||
} catch (error) {
|
||||
setTableMessage(error.message || "Source search failed.");
|
||||
} finally {
|
||||
sourceReloadButton.disabled = false;
|
||||
updateFindSourcesButtonState();
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -146,7 +146,10 @@
|
||||
<section class="source-dialog" aria-labelledby="sourceTitle">
|
||||
<header class="suggested-header">
|
||||
<h2 id="sourceTitle">Source candidates</h2>
|
||||
<button class="modal-close" id="sourceCloseButton" type="button"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#close"></use></svg><span>Close</span></button>
|
||||
<div class="source-dialog-actions">
|
||||
<button class="modal-close" id="sourceReloadButton" type="button"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#refresh"></use></svg><span>Reload</span></button>
|
||||
<button class="modal-close" id="sourceCloseButton" type="button"><svg class="sidebar-icon" aria-hidden="true"><use href="/icons.svg#close"></use></svg><span>Close</span></button>
|
||||
</div>
|
||||
</header>
|
||||
<div class="source-list" id="sourceList"></div>
|
||||
</section>
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user