Fix save image external folder feedback
This commit is contained in:
+26
-19
@@ -135,10 +135,16 @@ function imageUrl(meta) {
|
||||
return `/view?filename=${encodeURIComponent(meta.filename)}&type=${encodeURIComponent(meta.type)}&subfolder=${encodeURIComponent(meta.subfolder || "")}&t=${Date.now()}`;
|
||||
}
|
||||
|
||||
function canPreview(meta) {
|
||||
return meta?.type === "output";
|
||||
}
|
||||
|
||||
function updateActionState(node, ui) {
|
||||
const hasImage = !!(node._dsiImages && node._dsiImages.length);
|
||||
ui.openButton.disabled = !hasImage;
|
||||
ui.copyButton.disabled = !hasImage;
|
||||
const current = hasImage ? node._dsiImages[node._dsiImageIndex || 0] : null;
|
||||
const previewable = canPreview(current);
|
||||
ui.openButton.disabled = !previewable;
|
||||
ui.copyButton.disabled = !previewable;
|
||||
ui.prevButton.classList.toggle("show", !!(hasImage && node._dsiImages.length > 1));
|
||||
ui.nextButton.classList.toggle("show", !!(hasImage && node._dsiImages.length > 1));
|
||||
ui.count.style.display = hasImage && node._dsiImages.length > 1 ? "block" : "none";
|
||||
@@ -176,14 +182,24 @@ function renderPreview(node, ui) {
|
||||
}
|
||||
|
||||
const current = images[currentIndex];
|
||||
ui.view.classList.add("has");
|
||||
ui.placeholder.style.display = "none";
|
||||
ui.img.style.display = "block";
|
||||
ui.img.src = imageUrl(current);
|
||||
ui.count.textContent = `${currentIndex + 1} / ${images.length}`;
|
||||
ui.info.textContent = images.length > 1
|
||||
? `Showing saved image ${currentIndex + 1} of ${images.length}`
|
||||
: "Showing latest saved image";
|
||||
if (canPreview(current)) {
|
||||
ui.view.classList.add("has");
|
||||
ui.placeholder.style.display = "none";
|
||||
ui.img.style.display = "block";
|
||||
ui.img.src = imageUrl(current);
|
||||
ui.info.textContent = images.length > 1
|
||||
? `Showing saved image ${currentIndex + 1} of ${images.length}`
|
||||
: "Showing latest saved image";
|
||||
} else {
|
||||
ui.view.classList.remove("has");
|
||||
ui.img.style.display = "none";
|
||||
ui.placeholder.style.display = "flex";
|
||||
ui.placeholder.textContent = "Saved outside ComfyUI output. Preview is unavailable here.";
|
||||
ui.info.textContent = current?.subfolder
|
||||
? `Saved to ${current.subfolder}/${current.filename}`
|
||||
: `Saved to ${current.filename}`;
|
||||
}
|
||||
updateActionState(node, ui);
|
||||
}
|
||||
|
||||
@@ -324,16 +340,7 @@ function createRoot(node) {
|
||||
renderPreview(node, ui);
|
||||
});
|
||||
browseButton.addEventListener("click", async () => {
|
||||
if (typeof window.showDirectoryPicker !== "function") return;
|
||||
try {
|
||||
const handle = await window.showDirectoryPicker();
|
||||
if (!handle) return;
|
||||
folderInput.value = handle.name || folderInput.value;
|
||||
setWidgetValue(node, "folder", folderInput.value);
|
||||
renderPreview(node, ui);
|
||||
} catch (_error) {
|
||||
// Ignore picker cancel/failure.
|
||||
}
|
||||
ui.info.textContent = "Browser folder picking cannot provide a real filesystem path here. Paste the full path into the folder field.";
|
||||
});
|
||||
fmtPng.addEventListener("click", () => {
|
||||
ui.format = "png";
|
||||
|
||||
Reference in New Issue
Block a user