diff --git a/javascript/ui.js b/javascript/ui.js index 43596be3a..27acf1ae5 100644 --- a/javascript/ui.js +++ b/javascript/ui.js @@ -249,7 +249,9 @@ onOptionsChanged(function(){ elem.title = sd_checkpoint_hash elem.href = "https://google.com/search?q=" + sd_checkpoint_hash } +}) +onOptionsChanged(function(){ setting_elems = gradioApp().querySelectorAll('#settings [id^="setting_"]') setting_elems.forEach(function(elem){ setting_name = elem.id.replace("setting_", "") @@ -269,6 +271,19 @@ function markIfModified(setting_name, value) { } } +function onSettingComponentChanged(setting_name, value) { + markIfModified(setting_name, value) + return [] +} + +function onModificationIndicatorClicked(setting_name) { + elem = gradioApp().getElementById("modification_indicator_"+setting_name) + if (elem) { + elem.disabled = true + } + return JSON.parse(JSON.stringify(opts[setting_name])); +} + let txt2img_textarea, img2img_textarea = undefined; let wait_time = 800 let token_timeouts = {}; diff --git a/modules/ui.py b/modules/ui.py index 04c045b9c..4e9228812 100644 --- a/modules/ui.py +++ b/modules/ui.py @@ -1236,8 +1236,8 @@ def create_ui(): res = comp(label=info.label, value=fun(), elem_id=elem_id, **(args or {})) if not is_quicksettings: - res.change(fn=None, inputs=res, _js=f'(val) => markIfModified("{key}", val)') - dirty_indicator.click(fn=None, outputs=res, _js=f'() => opts["{key}"]') + res.change(fn=None, inputs=res, _js=f'(val) => onSettingComponentChanged("{key}", val)') + dirty_indicator.click(fn=None, outputs=res, _js=f'() => onModificationIndicatorClicked("{key}")') dirtyable_setting.__exit__() return res