From c1dea44fa6581a48a0f3123b5a27ac3a87b5ee1c Mon Sep 17 00:00:00 2001
From: Haka <76921756+Hakorr@users.noreply.github.com>
Date: Tue, 27 Sep 2022 17:23:19 +0300
Subject: [PATCH] Fix for live preview
---
ui/media/main.js | 127 ++++++++++++++++++++++++-----------------------
1 file changed, 65 insertions(+), 62 deletions(-)
diff --git a/ui/media/main.js b/ui/media/main.js
index 171545a1..334947c0 100644
--- a/ui/media/main.js
+++ b/ui/media/main.js
@@ -251,71 +251,81 @@ async function healthCheck() {
}
}
-function showImages(res, req) {
- res.output.forEach(result => {
+function showImages(req, res, livePreview) {
+ res.output.forEach((result, index) => {
if(typeof res != 'object') return;
- const imageData = result?.data,
- imageSeed = result?.seed,
+ const imageData = result?.data || result?.path,
+ imageSeed = req.seed + index,
imageWidth = req.width,
- imageHeight = req.height;
+ imageHeight = req.height,
+ imageIdentifier = 'IMG_' + (imageSeed + '').replace(/\d/g, c => 'SUOMIPERKL'[c]);
+
+ if (!imageData) {
+ // res contained no data for the image, stop execution
- // don't continue if data is incorrect
- if (!(imageData && imageSeed))
- {
setStatus('request', 'invalid image', 'error');
- console.log(imageData);
return;
}
- const imageItemElem = document.createElement('div');
- imageItemElem.className = 'imgItem';
- imageItemElem.innerHTML = `
-
-
![]()
-
-
-
-
-
-
- `;
-
- const imageElem = imageItemElem.querySelector('img'),
- imageSeedLabel = imageItemElem.querySelector('.imgSeedLabel'),
- useAsInputBtn = imageItemElem.querySelector('.imgUseBtn'),
- saveImageBtn = imageItemElem.querySelector('.imgSaveBtn');
+ let imageItemElem = document.querySelector('#' + imageIdentifier);
- imageElem.src = imageData;
+ if(!imageItemElem) {
+ imageItemElem = document.createElement('div');
+ imageItemElem.className = 'imgItem';
+ imageItemElem.id = imageIdentifier;
+ imageItemElem.innerHTML = `
+
+
![]()
+
+
+
+
+
+
+ `;
+
+ const useAsInputBtn = imageItemElem.querySelector('.imgUseBtn');
+ const saveImageBtn = imageItemElem.querySelector('.imgSaveBtn');
+
+ useAsInputBtn.addEventListener('click', () => {
+ initImageSelector.value = null;
+ initImagePreview.src = imageData;
+
+ initImagePreviewContainer.style.display = 'block';
+ inpaintingEditorContainer.style.display = 'none';
+ promptStrengthContainer.style.display = 'block';
+ maskSetting.checked = false;
+
+ // maskSetting.style.display = 'block';
+
+ randomSeedField.checked = false;
+ seedField.value = imageSeed;
+ seedField.disabled = false;
+ });
+
+ saveImageBtn.addEventListener('click', () => {
+ const imgDownload = document.createElement('a');
+ imgDownload.download = createFileName(imageSeed);
+ imgDownload.href = imageData;
+ imgDownload.click();
+ });
+
+ imagesContainer.appendChild(imageItemElem);
+ }
+
+ const imageElem = imageItemElem.querySelector('img');
+ const imageSeedLabel = imageItemElem.querySelector('.imgSeedLabel');
+
+ imageElem.src = livePreview
+ ? imageData + '?t=' + new Date().getTime()
+ : imageData;
imageElem.width = parseInt(imageWidth);
imageElem.height = parseInt(imageHeight);
- imageSeedLabel.innerText = 'Seed: ' + imageSeed;
-
- useAsInputBtn.addEventListener('click', () => {
- initImageSelector.value = null;
- initImagePreview.src = imageData;
-
- initImagePreviewContainer.style.display = 'block';
- inpaintingEditorContainer.style.display = 'none';
- promptStrengthContainer.style.display = 'block';
- maskSetting.checked = false;
-
- // maskSetting.style.display = 'block';
-
- randomSeedField.checked = false;
- seedField.value = imageSeed;
- seedField.disabled = false;
- });
-
- saveImageBtn.addEventListener('click', () => {
- const imgDownload = document.createElement('a');
- imgDownload.download = createFileName(imageSeed);
- imgDownload.href = imageData;
- imgDownload.click();
- });
-
- imagesContainer.appendChild(imageItemElem);
+ imageSeedLabel.innerText = livePreview
+ ? '(Live Preview)'
+ : 'Seed: ' + imageSeed;
});
}
@@ -381,14 +391,7 @@ async function doMakeImage(reqBody, batchCount) {
progressBar.style.display = 'block'
if (stepUpdate.output !== undefined) {
- makeImageContainers(numOutputs)
-
- for (idx in stepUpdate.output) {
- let imgItem = images[idx]
- let img = imgItem.firstChild
- let tmpImageData = stepUpdate.output[idx]
- img.src = tmpImageData['path'] + '?t=' + new Date().getTime()
- }
+ showImages(reqBody, stepUpdate, true);
}
}
} catch (e) {
@@ -461,7 +464,7 @@ async function doMakeImage(reqBody, batchCount) {
lastPromptUsed = reqBody['prompt'];
- showImages(res, reqBody);
+ showImages(reqBody, res, false);
return true;
}