diff options
author | AUTOMATIC <16777216c@gmail.com> | 2023-05-18 07:02:17 +0000 |
---|---|---|
committer | AUTOMATIC <16777216c@gmail.com> | 2023-05-18 07:02:17 +0000 |
commit | c08f229318cc3fbcad3aee7d5ebbb94fb68f6f34 (patch) | |
tree | db13845baa243c8bff4367cab040486e55ea81e3 /javascript/ui.js | |
parent | 1ceb82bc74ace8958767ae7d844bef0fb4bf0e9b (diff) | |
parent | 57b75f4a037658c1122aa092d1775ac52036b2cf (diff) | |
download | stable-diffusion-webui-gfx803-c08f229318cc3fbcad3aee7d5ebbb94fb68f6f34.tar.gz stable-diffusion-webui-gfx803-c08f229318cc3fbcad3aee7d5ebbb94fb68f6f34.tar.bz2 stable-diffusion-webui-gfx803-c08f229318cc3fbcad3aee7d5ebbb94fb68f6f34.zip |
Merge branch 'eslint' into dev
Diffstat (limited to 'javascript/ui.js')
-rw-r--r-- | javascript/ui.js | 421 |
1 files changed, 213 insertions, 208 deletions
diff --git a/javascript/ui.js b/javascript/ui.js index 6d4119d7..dbb8132f 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -1,9 +1,9 @@ // various functions for interaction with ui.py not large enough to warrant putting them in separate files -function set_theme(theme){ - var gradioURL = window.location.href +function set_theme(theme) { + var gradioURL = window.location.href; if (!gradioURL.includes('?__theme=')) { - window.location.replace(gradioURL + '?__theme=' + theme); + window.location.replace(gradioURL + '?__theme=' + theme); } } @@ -14,7 +14,7 @@ function all_gallery_buttons() { if (elem.parentElement.offsetParent) { visibleGalleryButtons.push(elem); } - }) + }); return visibleGalleryButtons; } @@ -25,31 +25,35 @@ function selected_gallery_button() { if (elem.parentElement.offsetParent) { visibleCurrentButton = elem; } - }) + }); return visibleCurrentButton; } -function selected_gallery_index(){ +function selected_gallery_index() { var buttons = all_gallery_buttons(); var button = selected_gallery_button(); - var result = -1 - buttons.forEach(function(v, i){ if(v==button) { result = i } }) + var result = -1; + buttons.forEach(function(v, i) { + if (v == button) { + result = i; + } + }); - return result + return result; } -function extract_image_from_gallery(gallery){ - if (gallery.length == 0){ +function extract_image_from_gallery(gallery) { + if (gallery.length == 0) { return [null]; } - if (gallery.length == 1){ + if (gallery.length == 1) { return [gallery[0]]; } - var index = selected_gallery_index() + var index = selected_gallery_index(); - if (index < 0 || index >= gallery.length){ + if (index < 0 || index >= gallery.length) { // Use the first image in the gallery as the default index = 0; } @@ -57,249 +61,242 @@ function extract_image_from_gallery(gallery){ return [gallery[index]]; } -function args_to_array(args){ - var res = [] - for(var i=0;i<args.length;i++){ - res.push(args[i]) +function args_to_array(args) { + var res = []; + for (var i = 0; i < args.length; i++) { + res.push(args[i]); } - return res + return res; } -function switch_to_txt2img(){ +function switch_to_txt2img() { gradioApp().querySelector('#tabs').querySelectorAll('button')[0].click(); return args_to_array(arguments); } -function switch_to_img2img_tab(no){ +function switch_to_img2img_tab(no) { gradioApp().querySelector('#tabs').querySelectorAll('button')[1].click(); gradioApp().getElementById('mode_img2img').querySelectorAll('button')[no].click(); } -function switch_to_img2img(){ +function switch_to_img2img() { switch_to_img2img_tab(0); return args_to_array(arguments); } -function switch_to_sketch(){ +function switch_to_sketch() { switch_to_img2img_tab(1); return args_to_array(arguments); } -function switch_to_inpaint(){ +function switch_to_inpaint() { switch_to_img2img_tab(2); return args_to_array(arguments); } -function switch_to_inpaint_sketch(){ +function switch_to_inpaint_sketch() { switch_to_img2img_tab(3); return args_to_array(arguments); } -function switch_to_inpaint(){ - gradioApp().querySelector('#tabs').querySelectorAll('button')[1].click(); - gradioApp().getElementById('mode_img2img').querySelectorAll('button')[2].click(); - - return args_to_array(arguments); -} - -function switch_to_extras(){ +function switch_to_extras() { gradioApp().querySelector('#tabs').querySelectorAll('button')[2].click(); return args_to_array(arguments); } -function get_tab_index(tabId){ - var res = 0 +function get_tab_index(tabId) { + var res = 0; - gradioApp().getElementById(tabId).querySelector('div').querySelectorAll('button').forEach(function(button, i){ - if(button.className.indexOf('selected') != -1) - res = i - }) + gradioApp().getElementById(tabId).querySelector('div').querySelectorAll('button').forEach(function(button, i) { + if (button.className.indexOf('selected') != -1) { + res = i; + } + }); - return res + return res; } -function create_tab_index_args(tabId, args){ - var res = [] - for(var i=0; i<args.length; i++){ - res.push(args[i]) +function create_tab_index_args(tabId, args) { + var res = []; + for (var i = 0; i < args.length; i++) { + res.push(args[i]); } - res[0] = get_tab_index(tabId) + res[0] = get_tab_index(tabId); - return res + return res; } function get_img2img_tab_index() { - let res = args_to_array(arguments) - res.splice(-2) - res[0] = get_tab_index('mode_img2img') - return res + let res = args_to_array(arguments); + res.splice(-2); + res[0] = get_tab_index('mode_img2img'); + return res; } -function create_submit_args(args){ - var res = [] - for(var i=0;i<args.length;i++){ - res.push(args[i]) +function create_submit_args(args) { + var res = []; + for (var i = 0; i < args.length; i++) { + res.push(args[i]); } // As it is currently, txt2img and img2img send back the previous output args (txt2img_gallery, generation_info, html_info) whenever you generate a new image. // This can lead to uploading a huge gallery of previously generated images, which leads to an unnecessary delay between submitting and beginning to generate. // I don't know why gradio is sending outputs along with inputs, but we can prevent sending the image gallery here, which seems to be an issue for some. // If gradio at some point stops sending outputs, this may break something - if(Array.isArray(res[res.length - 3])){ - res[res.length - 3] = null + if (Array.isArray(res[res.length - 3])) { + res[res.length - 3] = null; } - return res + return res; } -function showSubmitButtons(tabname, show){ - gradioApp().getElementById(tabname+'_interrupt').style.display = show ? "none" : "block" - gradioApp().getElementById(tabname+'_skip').style.display = show ? "none" : "block" +function showSubmitButtons(tabname, show) { + gradioApp().getElementById(tabname + '_interrupt').style.display = show ? "none" : "block"; + gradioApp().getElementById(tabname + '_skip').style.display = show ? "none" : "block"; } -function showRestoreProgressButton(tabname, show){ - var button = gradioApp().getElementById(tabname + "_restore_progress") - if(! button) return +function showRestoreProgressButton(tabname, show) { + var button = gradioApp().getElementById(tabname + "_restore_progress"); + if (!button) return; - button.style.display = show ? "flex" : "none" + button.style.display = show ? "flex" : "none"; } -function submit(){ - rememberGallerySelection('txt2img_gallery') - showSubmitButtons('txt2img', false) +function submit() { + showSubmitButtons('txt2img', false); - var id = randomId() + var id = randomId(); localStorage.setItem("txt2img_task_id", id); - requestProgress(id, gradioApp().getElementById('txt2img_gallery_container'), gradioApp().getElementById('txt2img_gallery'), function(){ - showSubmitButtons('txt2img', true) - localStorage.removeItem("txt2img_task_id") - showRestoreProgressButton('txt2img', false) - }) + requestProgress(id, gradioApp().getElementById('txt2img_gallery_container'), gradioApp().getElementById('txt2img_gallery'), function() { + showSubmitButtons('txt2img', true); + localStorage.removeItem("txt2img_task_id"); + showRestoreProgressButton('txt2img', false); + }); - var res = create_submit_args(arguments) + var res = create_submit_args(arguments); - res[0] = id + res[0] = id; - return res + return res; } -function submit_img2img(){ - rememberGallerySelection('img2img_gallery') - showSubmitButtons('img2img', false) +function submit_img2img() { + showSubmitButtons('img2img', false); - var id = randomId() + var id = randomId(); localStorage.setItem("img2img_task_id", id); - requestProgress(id, gradioApp().getElementById('img2img_gallery_container'), gradioApp().getElementById('img2img_gallery'), function(){ - showSubmitButtons('img2img', true) - localStorage.removeItem("img2img_task_id") - showRestoreProgressButton('img2img', false) - }) + requestProgress(id, gradioApp().getElementById('img2img_gallery_container'), gradioApp().getElementById('img2img_gallery'), function() { + showSubmitButtons('img2img', true); + localStorage.removeItem("img2img_task_id"); + showRestoreProgressButton('img2img', false); + }); - var res = create_submit_args(arguments) + var res = create_submit_args(arguments); - res[0] = id - res[1] = get_tab_index('mode_img2img') + res[0] = id; + res[1] = get_tab_index('mode_img2img'); - return res + return res; } -function restoreProgressTxt2img(){ - showRestoreProgressButton("txt2img", false) - var id = localStorage.getItem("txt2img_task_id") +function restoreProgressTxt2img() { + showRestoreProgressButton("txt2img", false); + var id = localStorage.getItem("txt2img_task_id"); - id = localStorage.getItem("txt2img_task_id") + id = localStorage.getItem("txt2img_task_id"); - if(id) { - requestProgress(id, gradioApp().getElementById('txt2img_gallery_container'), gradioApp().getElementById('txt2img_gallery'), function(){ - showSubmitButtons('txt2img', true) - }, null, 0) + if (id) { + requestProgress(id, gradioApp().getElementById('txt2img_gallery_container'), gradioApp().getElementById('txt2img_gallery'), function() { + showSubmitButtons('txt2img', true); + }, null, 0); } - return id + return id; } -function restoreProgressImg2img(){ - showRestoreProgressButton("img2img", false) - - var id = localStorage.getItem("img2img_task_id") +function restoreProgressImg2img() { + showRestoreProgressButton("img2img", false); - if(id) { - requestProgress(id, gradioApp().getElementById('img2img_gallery_container'), gradioApp().getElementById('img2img_gallery'), function(){ - showSubmitButtons('img2img', true) - }, null, 0) + var id = localStorage.getItem("img2img_task_id"); + + if (id) { + requestProgress(id, gradioApp().getElementById('img2img_gallery_container'), gradioApp().getElementById('img2img_gallery'), function() { + showSubmitButtons('img2img', true); + }, null, 0); } - return id + return id; } -onUiLoaded(function () { - showRestoreProgressButton('txt2img', localStorage.getItem("txt2img_task_id")) - showRestoreProgressButton('img2img', localStorage.getItem("img2img_task_id")) +onUiLoaded(function() { + showRestoreProgressButton('txt2img', localStorage.getItem("txt2img_task_id")); + showRestoreProgressButton('img2img', localStorage.getItem("img2img_task_id")); }); -function modelmerger(){ - var id = randomId() - requestProgress(id, gradioApp().getElementById('modelmerger_results_panel'), null, function(){}) +function modelmerger() { + var id = randomId(); + requestProgress(id, gradioApp().getElementById('modelmerger_results_panel'), null, function() {}); - var res = create_submit_args(arguments) - res[0] = id - return res + var res = create_submit_args(arguments); + res[0] = id; + return res; } function ask_for_style_name(_, prompt_text, negative_prompt_text) { - var name_ = prompt('Style name:') - return [name_, prompt_text, negative_prompt_text] + var name_ = prompt('Style name:'); + return [name_, prompt_text, negative_prompt_text]; } function confirm_clear_prompt(prompt, negative_prompt) { - if(confirm("Delete prompt?")) { - prompt = "" - negative_prompt = "" + if (confirm("Delete prompt?")) { + prompt = ""; + negative_prompt = ""; } - return [prompt, negative_prompt] + return [prompt, negative_prompt]; } -promptTokecountUpdateFuncs = {} +var promptTokecountUpdateFuncs = {}; -function recalculatePromptTokens(name){ - if(promptTokecountUpdateFuncs[name]){ - promptTokecountUpdateFuncs[name]() +function recalculatePromptTokens(name) { + if (promptTokecountUpdateFuncs[name]) { + promptTokecountUpdateFuncs[name](); } } -function recalculate_prompts_txt2img(){ - recalculatePromptTokens('txt2img_prompt') - recalculatePromptTokens('txt2img_neg_prompt') +function recalculate_prompts_txt2img() { + recalculatePromptTokens('txt2img_prompt'); + recalculatePromptTokens('txt2img_neg_prompt'); return args_to_array(arguments); } -function recalculate_prompts_img2img(){ - recalculatePromptTokens('img2img_prompt') - recalculatePromptTokens('img2img_neg_prompt') +function recalculate_prompts_img2img() { + recalculatePromptTokens('img2img_prompt'); + recalculatePromptTokens('img2img_neg_prompt'); return args_to_array(arguments); } -var opts = {} -onUiUpdate(function(){ - if(Object.keys(opts).length != 0) return; +var opts = {}; +onUiUpdate(function() { + if (Object.keys(opts).length != 0) return; + + var json_elem = gradioApp().getElementById('settings_json'); + if (json_elem == null) return; - var json_elem = gradioApp().getElementById('settings_json') - if(json_elem == null) return; + var textarea = json_elem.querySelector('textarea'); + var jsdata = textarea.value; + opts = JSON.parse(jsdata); - var textarea = json_elem.querySelector('textarea') - var jsdata = textarea.value - opts = JSON.parse(jsdata) - executeCallbacks(optionsChangedCallbacks); + executeCallbacks(optionsChangedCallbacks); /*global optionsChangedCallbacks*/ Object.defineProperty(textarea, 'value', { set: function(newValue) { @@ -308,7 +305,7 @@ onUiUpdate(function(){ valueProp.set.call(textarea, newValue); if (oldValue != newValue) { - opts = JSON.parse(textarea.value) + opts = JSON.parse(textarea.value); } executeCallbacks(optionsChangedCallbacks); @@ -319,122 +316,130 @@ onUiUpdate(function(){ } }); - json_elem.parentElement.style.display="none" + json_elem.parentElement.style.display = "none"; - function registerTextarea(id, id_counter, id_button){ - var prompt = gradioApp().getElementById(id) - var counter = gradioApp().getElementById(id_counter) + function registerTextarea(id, id_counter, id_button) { + var prompt = gradioApp().getElementById(id); + var counter = gradioApp().getElementById(id_counter); var textarea = gradioApp().querySelector("#" + id + " > label > textarea"); - if(counter.parentElement == prompt.parentElement){ - return + if (counter.parentElement == prompt.parentElement) { + return; } - prompt.parentElement.insertBefore(counter, prompt) - prompt.parentElement.style.position = "relative" + prompt.parentElement.insertBefore(counter, prompt); + prompt.parentElement.style.position = "relative"; - promptTokecountUpdateFuncs[id] = function(){ update_token_counter(id_button); } - textarea.addEventListener("input", promptTokecountUpdateFuncs[id]); + promptTokecountUpdateFuncs[id] = function() { + update_token_counter(id_button); + }; + textarea.addEventListener("input", promptTokecountUpdateFuncs[id]); } - registerTextarea('txt2img_prompt', 'txt2img_token_counter', 'txt2img_token_button') - registerTextarea('txt2img_neg_prompt', 'txt2img_negative_token_counter', 'txt2img_negative_token_button') - registerTextarea('img2img_prompt', 'img2img_token_counter', 'img2img_token_button') - registerTextarea('img2img_neg_prompt', 'img2img_negative_token_counter', 'img2img_negative_token_button') - - var show_all_pages = gradioApp().getElementById('settings_show_all_pages') - var settings_tabs = gradioApp().querySelector('#settings div') - if(show_all_pages && settings_tabs){ - settings_tabs.appendChild(show_all_pages) - show_all_pages.onclick = function(){ - gradioApp().querySelectorAll('#settings > div').forEach(function(elem){ - if(elem.id == "settings_tab_licenses") + registerTextarea('txt2img_prompt', 'txt2img_token_counter', 'txt2img_token_button'); + registerTextarea('txt2img_neg_prompt', 'txt2img_negative_token_counter', 'txt2img_negative_token_button'); + registerTextarea('img2img_prompt', 'img2img_token_counter', 'img2img_token_button'); + registerTextarea('img2img_neg_prompt', 'img2img_negative_token_counter', 'img2img_negative_token_button'); + + var show_all_pages = gradioApp().getElementById('settings_show_all_pages'); + var settings_tabs = gradioApp().querySelector('#settings div'); + if (show_all_pages && settings_tabs) { + settings_tabs.appendChild(show_all_pages); + show_all_pages.onclick = function() { + gradioApp().querySelectorAll('#settings > div').forEach(function(elem) { + if (elem.id == "settings_tab_licenses") { return; + } elem.style.display = "block"; - }) - } + }); + }; } -}) +}); -onOptionsChanged(function(){ - var elem = gradioApp().getElementById('sd_checkpoint_hash') - var sd_checkpoint_hash = opts.sd_checkpoint_hash || "" - var shorthash = sd_checkpoint_hash.substring(0,10) +onOptionsChanged(function() { + var elem = gradioApp().getElementById('sd_checkpoint_hash'); + var sd_checkpoint_hash = opts.sd_checkpoint_hash || ""; + var shorthash = sd_checkpoint_hash.substring(0, 10); - if(elem && elem.textContent != shorthash){ - elem.textContent = shorthash - elem.title = sd_checkpoint_hash - elem.href = "https://google.com/search?q=" + sd_checkpoint_hash - } -}) + if (elem && elem.textContent != shorthash) { + elem.textContent = shorthash; + elem.title = sd_checkpoint_hash; + elem.href = "https://google.com/search?q=" + sd_checkpoint_hash; + } +}); let txt2img_textarea, img2img_textarea = undefined; -let wait_time = 800 +let wait_time = 800; let token_timeouts = {}; function update_txt2img_tokens(...args) { - update_token_counter("txt2img_token_button") - if (args.length == 2) - return args[0] - return args; + update_token_counter("txt2img_token_button"); + if (args.length == 2) { + return args[0]; + } + return args; } function update_img2img_tokens(...args) { - update_token_counter("img2img_token_button") - if (args.length == 2) - return args[0] - return args; + update_token_counter( + "img2img_token_button" + ); + if (args.length == 2) { + return args[0]; + } + return args; } function update_token_counter(button_id) { - if (token_timeouts[button_id]) - clearTimeout(token_timeouts[button_id]); - token_timeouts[button_id] = setTimeout(() => gradioApp().getElementById(button_id)?.click(), wait_time); + if (token_timeouts[button_id]) { + clearTimeout(token_timeouts[button_id]); + } + token_timeouts[button_id] = setTimeout(() => gradioApp().getElementById(button_id)?.click(), wait_time); } -function restart_reload(){ - document.body.innerHTML='<h1 style="font-family:monospace;margin-top:20%;color:lightgray;text-align:center;">Reloading...</h1>'; +function restart_reload() { + document.body.innerHTML = '<h1 style="font-family:monospace;margin-top:20%;color:lightgray;text-align:center;">Reloading...</h1>'; - var requestPing = function(){ - requestGet("./internal/ping", {}, function(data){ + var requestPing = function() { + requestGet("./internal/ping", {}, function(data) { location.reload(); - }, function(){ + }, function() { setTimeout(requestPing, 500); - }) - } + }); + }; setTimeout(requestPing, 2000); - return [] + return []; } // Simulate an `input` DOM event for Gradio Textbox component. Needed after you edit its contents in javascript, otherwise your edits // will only visible on web page and not sent to python. -function updateInput(target){ - let e = new Event("input", { bubbles: true }) - Object.defineProperty(e, "target", {value: target}) - target.dispatchEvent(e); +function updateInput(target) { + let e = new Event("input", {bubbles: true}); + Object.defineProperty(e, "target", {value: target}); + target.dispatchEvent(e); } var desiredCheckpointName = null; -function selectCheckpoint(name){ +function selectCheckpoint(name) { desiredCheckpointName = name; - gradioApp().getElementById('change_checkpoint').click() + 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] +function currentImg2imgSourceResolution(w, h, scaleBy) { + var img = gradioApp().querySelector('#mode_img2img > div[style="display: block;"] img'); + return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy]; } -function updateImg2imgResizeToTextAfterChangingImage(){ +function updateImg2imgResizeToTextAfterChangingImage() { // At the time this is called from gradio, the image has no yet been replaced. // There may be a better solution, but this is simple and straightforward so I'm going with it. setTimeout(function() { - gradioApp().getElementById('img2img_update_resize_to').click() + gradioApp().getElementById('img2img_update_resize_to').click(); }, 500); return [] |