From b921a52071cf2a5e551c31a6073af6eaebbf7847 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 28 Jan 2023 03:19:10 -0600 Subject: basic image next and prev control with joystick --- javascript/imageviewer.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'javascript') diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index 67916536..0488bfb4 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -210,6 +210,19 @@ document.addEventListener("DOMContentLoaded", function() { modal.id = "lightboxModal"; modal.tabIndex = 0 modal.addEventListener('keydown', modalKeyHandler, true) + window.addEventListener('gamepadconnected', (e) => { + console.log("Gamepad connected!") + const gamepad = e.gamepad; + setInterval(() => { + const xValue = gamepad.axes[0].toFixed(2); + if (xValue < -0.3) { + modalPrevImage(); + } else if (xValue > 0.3) { + modalNextImage(); + } + + }, 350); + }); const modalControls = document.createElement('div') modalControls.className = 'modalControls gradio-container'; -- cgit v1.2.1 From bfa14db2cb0e266121317e3624b93708b29f2e88 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 7 Feb 2023 16:54:12 -0600 Subject: enable gallery scrolling functionality for horizontal scroll and gamepads --- javascript/imageviewer.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'javascript') diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index 3f7b1289..e5355d0b 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -219,18 +219,37 @@ document.addEventListener("DOMContentLoaded", function() { modal.id = "lightboxModal"; modal.tabIndex = 0 modal.addEventListener('keydown', modalKeyHandler, true) + + let delay = 350//ms window.addEventListener('gamepadconnected', (e) => { console.log("Gamepad connected!") const gamepad = e.gamepad; setInterval(() => { const xValue = gamepad.axes[0].toFixed(2); if (xValue < -0.3) { - modalPrevImage(); + modalPrevImage(e); } else if (xValue > 0.3) { - modalNextImage(); + modalNextImage(e); } - }, 350); + }, delay); + }); + + + let isScrolling = false; + window.addEventListener('wheel', (e) => { + if (isScrolling) return; + isScrolling = true; + + if (e.deltaX <= -0.6) { + modalPrevImage(e); + } else if (e.deltaX >= 0.6) { + modalNextImage(e); + } + + setTimeout(() => { + isScrolling = false; + }, delay); }); const modalControls = document.createElement('div') -- cgit v1.2.1 From 40dc0132df0aae62078b29384600570688e3eb79 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 13 Mar 2023 03:39:02 -0500 Subject: modularize --- javascript/imageviewer.js | 35 ++++------------------------------- javascript/imageviewerGamepad.js | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 31 deletions(-) create mode 100644 javascript/imageviewerGamepad.js (limited to 'javascript') diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index e5355d0b..fa7a67d5 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -220,37 +220,10 @@ document.addEventListener("DOMContentLoaded", function() { modal.tabIndex = 0 modal.addEventListener('keydown', modalKeyHandler, true) - let delay = 350//ms - window.addEventListener('gamepadconnected', (e) => { - console.log("Gamepad connected!") - const gamepad = e.gamepad; - setInterval(() => { - const xValue = gamepad.axes[0].toFixed(2); - if (xValue < -0.3) { - modalPrevImage(e); - } else if (xValue > 0.3) { - modalNextImage(e); - } - - }, delay); - }); - - - let isScrolling = false; - window.addEventListener('wheel', (e) => { - if (isScrolling) return; - isScrolling = true; - - if (e.deltaX <= -0.6) { - modalPrevImage(e); - } else if (e.deltaX >= 0.6) { - modalNextImage(e); - } - - setTimeout(() => { - isScrolling = false; - }, delay); - }); + // detect gamepads and enable related functionality + let gamepadScript = document.createElement('script'); + gamepadScript.src = 'imageviewerGamepad.js'; + document.body.appendChild(gamepadScript); const modalControls = document.createElement('div') modalControls.className = 'modalControls gradio-container'; diff --git a/javascript/imageviewerGamepad.js b/javascript/imageviewerGamepad.js new file mode 100644 index 00000000..29bd7140 --- /dev/null +++ b/javascript/imageviewerGamepad.js @@ -0,0 +1,36 @@ + let delay = 350//ms + window.addEventListener('gamepadconnected', (e) => { + console.log("Gamepad connected!") + const gamepad = e.gamepad; + setInterval(() => { + const xValue = gamepad.axes[0].toFixed(2); + if (xValue < -0.3) { + modalPrevImage(e); + } else if (xValue > 0.3) { + modalNextImage(e); + } + + }, delay); + }); + + + /* + Primarily for vr controller type pointer devices. + I use the wheel event because there's currently no way to do it properly with web xr. + */ + + let isScrolling = false; + window.addEventListener('wheel', (e) => { + if (isScrolling) return; + isScrolling = true; + + if (e.deltaX <= -0.6) { + modalPrevImage(e); + } else if (e.deltaX >= 0.6) { + modalNextImage(e); + } + + setTimeout(() => { + isScrolling = false; + }, delay); + }); \ No newline at end of file -- cgit v1.2.1 From 54291f9d63f0c7dc445b90f3afb37fc330739557 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 15 Mar 2023 04:33:38 -0500 Subject: remove redundant load --- javascript/imageviewer.js | 5 ----- 1 file changed, 5 deletions(-) (limited to 'javascript') diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index fa7a67d5..aac2ee82 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -220,11 +220,6 @@ document.addEventListener("DOMContentLoaded", function() { modal.tabIndex = 0 modal.addEventListener('keydown', modalKeyHandler, true) - // detect gamepads and enable related functionality - let gamepadScript = document.createElement('script'); - gamepadScript.src = 'imageviewerGamepad.js'; - document.body.appendChild(gamepadScript); - const modalControls = document.createElement('div') modalControls.className = 'modalControls gradio-container'; modal.append(modalControls); -- cgit v1.2.1 From d86beb822832c9162714cf0a3567ad087839a2ac Mon Sep 17 00:00:00 2001 From: space-nuko <24979496+space-nuko@users.noreply.github.com> Date: Thu, 23 Mar 2023 17:09:59 -0400 Subject: Remove "do not add watermark to images" option --- javascript/hints.js | 1 - 1 file changed, 1 deletion(-) (limited to 'javascript') diff --git a/javascript/hints.js b/javascript/hints.js index 7f4101b2..d12e86a9 100644 --- a/javascript/hints.js +++ b/javascript/hints.js @@ -85,7 +85,6 @@ titles = { "vram": "Torch active: Peak amount of VRAM used by Torch during generation, excluding cached data.\nTorch reserved: Peak amount of VRAM allocated by Torch, including all active and cached data.\nSys VRAM: Peak amount of VRAM allocation across all applications / total GPU VRAM (peak utilization%).", "Eta noise seed delta": "If this values is non-zero, it will be added to seed and used to initialize RNG for noises when using samplers with Eta. You can use this to produce even more variation of images, or you can use this to match images of other software if you know what you are doing.", - "Do not add watermark to images": "If this option is enabled, watermark will not be added to created images. Warning: if you do not add watermark, you may be behaving in an unethical manner.", "Filename word regex": "This regular expression will be used extract words from filename, and they will be joined using the option below into label text used for training. Leave empty to keep filename text as it is.", "Filename join string": "This string will be used to join split words into a single line if the option above is enabled.", -- cgit v1.2.1 From 9ecf3471339d011983f2e3c878e920e49718ff90 Mon Sep 17 00:00:00 2001 From: AlUlkesh <99896447+AlUlkesh@users.noreply.github.com> Date: Mon, 27 Mar 2023 20:01:19 +0200 Subject: fix: lightboxModal, selectedTab --- javascript/generationParams.js | 2 +- javascript/imageviewer.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'javascript') diff --git a/javascript/generationParams.js b/javascript/generationParams.js index 95f05093..06a771bc 100644 --- a/javascript/generationParams.js +++ b/javascript/generationParams.js @@ -16,7 +16,7 @@ onUiUpdate(function(){ let modalObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { - let selectedTab = gradioApp().querySelector('#tabs div button.bg-white')?.innerText + let selectedTab = gradioApp().querySelector('#tabs div button')?.innerText if (mutationRecord.target.style.display === 'none' && selectedTab === 'txt2img' || selectedTab === 'img2img') gradioApp().getElementById(selectedTab+"_generation_info_button").click() }); diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index d6483562..bb61ee24 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -251,7 +251,7 @@ document.addEventListener("DOMContentLoaded", function() { modal.appendChild(modalNext) - gradioApp().appendChild(modal) + gradioApp().body.appendChild(modal) document.body.appendChild(modal); -- cgit v1.2.1 From d667fc435f6210575ba50a6f3a05d3853b233caa Mon Sep 17 00:00:00 2001 From: AUTOMATIC <16777216c@gmail.com> Date: Tue, 28 Mar 2023 22:23:40 +0300 Subject: add "resize by" and "resize to" tabs to img2img --- javascript/ui.js | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'javascript') diff --git a/javascript/ui.js b/javascript/ui.js index 4a440193..dc538231 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -361,3 +361,8 @@ function selectCheckpoint(name){ desiredCheckpointName = name; gradioApp().getElementById('change_checkpoint').click() } + +function currentImg2imgSourceResolution(_, _, scaleBy){ + var img = gradioApp().querySelector('#mode_img2img > div[style="display: block;"] img') + return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy] +} -- cgit v1.2.1 From 5a25826d841a13574ab6afbeb9c50c81a491fa21 Mon Sep 17 00:00:00 2001 From: AlUlkesh <99896447+AlUlkesh@users.noreply.github.com> Date: Tue, 28 Mar 2023 23:28:46 +0200 Subject: try both versions of appendChild --- javascript/imageviewer.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'javascript') diff --git a/javascript/imageviewer.js b/javascript/imageviewer.js index bb61ee24..3deffa9b 100644 --- a/javascript/imageviewer.js +++ b/javascript/imageviewer.js @@ -251,8 +251,11 @@ document.addEventListener("DOMContentLoaded", function() { modal.appendChild(modalNext) - gradioApp().body.appendChild(modal) - + try { + gradioApp().appendChild(modal); + } catch (e) { + gradioApp().body.appendChild(modal); + } document.body.appendChild(modal); -- cgit v1.2.1 From ad5afcaae0b47e9e68b49aacf04cc3ad59d41a8e Mon Sep 17 00:00:00 2001 From: space-nuko <24979496+space-nuko@users.noreply.github.com> Date: Wed, 29 Mar 2023 16:46:03 -0500 Subject: Save/restore working webui/extension configs --- javascript/extensions.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'javascript') diff --git a/javascript/extensions.js b/javascript/extensions.js index 72924a28..c2786499 100644 --- a/javascript/extensions.js +++ b/javascript/extensions.js @@ -47,3 +47,19 @@ function install_extension_from_index(button, url){ gradioApp().querySelector('#install_extension_button').click() } + +function config_state_confirm_restore(_, config_state_name, config_restore_type) { + if (config_state_name == "Current") { + return [false, config_state_name]; + } + let restored = ""; + if (config_restore_type == "extensions") { + restored = "all saved extension versions"; + } else if (config_restore_type == "webui") { + restored = "the webui version"; + } else { + restored = "the webui version and all saved extension versions"; + } + let confirmed = confirm("Are you sure you want to restore from this state?\nThis will reset " + restored + ".\n(A backup of the current state will be made.)"); + return [confirmed, config_state_name, config_restore_type]; +} -- cgit v1.2.1 From f3320b802c12f29e5a3201fcc0abfe72be294293 Mon Sep 17 00:00:00 2001 From: space-nuko <24979496+space-nuko@users.noreply.github.com> Date: Wed, 29 Mar 2023 18:32:54 -0500 Subject: Various UI fixes in config state tab --- javascript/extensions.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'javascript') diff --git a/javascript/extensions.js b/javascript/extensions.js index c2786499..3c2f995a 100644 --- a/javascript/extensions.js +++ b/javascript/extensions.js @@ -50,7 +50,7 @@ function install_extension_from_index(button, url){ function config_state_confirm_restore(_, config_state_name, config_restore_type) { if (config_state_name == "Current") { - return [false, config_state_name]; + return [false, config_state_name, config_restore_type]; } let restored = ""; if (config_restore_type == "extensions") { @@ -60,6 +60,12 @@ function config_state_confirm_restore(_, config_state_name, config_restore_type) } else { restored = "the webui version and all saved extension versions"; } - let confirmed = confirm("Are you sure you want to restore from this state?\nThis will reset " + restored + ".\n(A backup of the current state will be made.)"); + let confirmed = confirm("Are you sure you want to restore from this state?\nThis will reset " + restored + "."); + if (confirmed) { + restart_reload(); + gradioApp().querySelectorAll('#extensions .extension_status').forEach(function(x){ + x.innerHTML = "Loading..." + }) + } return [confirmed, config_state_name, config_restore_type]; } -- cgit v1.2.1 From c938b172a49433291e246b04f9835f3383bad0c8 Mon Sep 17 00:00:00 2001 From: bbonvi <6573230@gmail.com> Date: Fri, 31 Mar 2023 19:29:34 +0600 Subject: fix missing live preview and progress during certain tasks Sometimes tasks take longer than 5 seconds to start, resulting in missing progress bar and livepreviews, so we have to keep pulling for progress a bit longer (5s -> 20s). --- javascript/progressbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'javascript') diff --git a/javascript/progressbar.js b/javascript/progressbar.js index 4ac9b8db..eb44aab9 100644 --- a/javascript/progressbar.js +++ b/javascript/progressbar.js @@ -138,7 +138,7 @@ function requestProgress(id_task, progressbarContainer, gallery, atEnd, onProgre return } - if(elapsedFromStart > 5 && !res.queued && !res.active){ + if(elapsedFromStart > 20 && !res.queued && !res.active){ removeProgressBar() return } -- cgit v1.2.1 From 54fd00ff8f6fc1396ce0396772962b45609e7a9c Mon Sep 17 00:00:00 2001 From: Liam Date: Mon, 3 Apr 2023 13:28:20 -0400 Subject: fixed logic for updating the displayed generation params when the image modal is closed --- javascript/generationParams.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'javascript') diff --git a/javascript/generationParams.js b/javascript/generationParams.js index 95f05093..1266a266 100644 --- a/javascript/generationParams.js +++ b/javascript/generationParams.js @@ -16,9 +16,9 @@ onUiUpdate(function(){ let modalObserver = new MutationObserver(function(mutations) { mutations.forEach(function(mutationRecord) { - let selectedTab = gradioApp().querySelector('#tabs div button.bg-white')?.innerText - if (mutationRecord.target.style.display === 'none' && selectedTab === 'txt2img' || selectedTab === 'img2img') - gradioApp().getElementById(selectedTab+"_generation_info_button").click() + let selectedTab = gradioApp().querySelector('#tabs div button.selected')?.innerText + if (mutationRecord.target.style.display === 'none' && (selectedTab === 'txt2img' || selectedTab === 'img2img')) + gradioApp().getElementById(selectedTab+"_generation_info_button")?.click() }); }); -- cgit v1.2.1 From 02e351880796422eac3bbaf7aa86332b588651ce Mon Sep 17 00:00:00 2001 From: tqwuliao Date: Sat, 15 Apr 2023 23:20:08 +0800 Subject: Add new FilenameGenerator [hasprompt..] --- javascript/hints.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'javascript') diff --git a/javascript/hints.js b/javascript/hints.js index 7f4101b2..730ce7bd 100644 --- a/javascript/hints.js +++ b/javascript/hints.js @@ -67,8 +67,8 @@ titles = { "Interrogate": "Reconstruct prompt from existing image and put it into the prompt field.", - "Images filename pattern": "Use following tags to define how filenames for images are chosen: [steps], [cfg], [prompt_hash], [prompt], [prompt_no_styles], [prompt_spaces], [width], [height], [styles], [sampler], [seed], [model_hash], [model_name], [prompt_words], [date], [datetime], [datetime], [datetime