aboutsummaryrefslogtreecommitdiff
path: root/javascript
diff options
context:
space:
mode:
Diffstat (limited to 'javascript')
-rw-r--r--javascript/extraNetworks.js31
-rw-r--r--javascript/hints.js63
-rw-r--r--javascript/ui_settings_hints.js93
3 files changed, 117 insertions, 70 deletions
diff --git a/javascript/extraNetworks.js b/javascript/extraNetworks.js
index c85bc79a..4d9a522c 100644
--- a/javascript/extraNetworks.js
+++ b/javascript/extraNetworks.js
@@ -68,18 +68,27 @@ var re_extranet_g = /\s+<([^:]+:[^:]+):[\d\.]+>/g;
function tryToRemoveExtraNetworkFromPrompt(textarea, text){
var m = text.match(re_extranet)
- if(! m) return false
-
- var partToSearch = m[1]
var replaced = false
- var newTextareaText = textarea.value.replaceAll(re_extranet_g, function(found){
- m = found.match(re_extranet);
- if(m[1] == partToSearch){
- replaced = true;
- return ""
- }
- return found;
- })
+ var newTextareaText
+ if(m) {
+ var partToSearch = m[1]
+ newTextareaText = textarea.value.replaceAll(re_extranet_g, function(found){
+ m = found.match(re_extranet);
+ if(m[1] == partToSearch){
+ replaced = true;
+ return ""
+ }
+ return found;
+ })
+ } else {
+ newTextareaText = textarea.value.replaceAll(new RegExp(text, "g"), function(found){
+ if(found == text) {
+ replaced = true;
+ return ""
+ }
+ return found;
+ })
+ }
if(replaced){
textarea.value = newTextareaText
diff --git a/javascript/hints.js b/javascript/hints.js
index 3746df99..b00b504a 100644
--- a/javascript/hints.js
+++ b/javascript/hints.js
@@ -115,36 +115,53 @@ titles = {
"Negative Guidance minimum sigma": "Skip negative prompt for steps where image is already mostly denoised; the higher this value, the more skips there will be; provides increased performance in exchange for minor quality reduction."
}
+function updateTooltipForSpan(span){
+ if (span.title) return; // already has a title
-onUiUpdate(function(){
- gradioApp().querySelectorAll('span, button, select, p').forEach(function(span){
- if (span.title) return; // already has a title
-
- let tooltip = localization[titles[span.textContent]] || titles[span.textContent];
+ let tooltip = localization[titles[span.textContent]] || titles[span.textContent];
if(!tooltip){
- tooltip = localization[titles[span.value]] || titles[span.value];
- }
+ tooltip = localization[titles[span.value]] || titles[span.value];
+ }
- if(!tooltip){
- for (const c of span.classList) {
- if (c in titles) {
- tooltip = localization[titles[c]] || titles[c];
- break;
- }
+ if(!tooltip){
+ for (const c of span.classList) {
+ if (c in titles) {
+ tooltip = localization[titles[c]] || titles[c];
+ break;
}
}
+ }
- if(tooltip){
- span.title = tooltip;
- }
- })
+ if(tooltip){
+ span.title = tooltip;
+ }
+}
+
+function updateTooltipForSelect(select){
+ if (select.onchange != null) return;
- gradioApp().querySelectorAll('select').forEach(function(select){
- if (select.onchange != null) return;
+ select.onchange = function(){
+ select.title = localization[titles[select.value]] || titles[select.value] || "";
+ }
+}
- select.onchange = function(){
- select.title = localization[titles[select.value]] || titles[select.value] || "";
- }
- })
+observedTooltipElements = {"SPAN": 1, "BUTTON": 1, "SELECT": 1, "P": 1}
+
+onUiUpdate(function(m){
+ m.forEach(function(record){
+ record.addedNodes.forEach(function(node){
+ if(observedTooltipElements[node.tagName]){
+ updateTooltipForSpan(node)
+ }
+ if(node.tagName == "SELECT"){
+ updateTooltipForSelect(node)
+ }
+
+ if(node.querySelectorAll){
+ node.querySelectorAll('span, button, select, p').forEach(updateTooltipForSpan)
+ node.querySelectorAll('select').forEach(updateTooltipForSelect)
+ }
+ })
+ })
})
diff --git a/javascript/ui_settings_hints.js b/javascript/ui_settings_hints.js
index 87a289d3..6d1933dc 100644
--- a/javascript/ui_settings_hints.js
+++ b/javascript/ui_settings_hints.js
@@ -1,41 +1,62 @@
// various hints and extra info for the settings tab
-onUiLoaded(function(){
- createLink = function(elem_id, text, href){
- var a = document.createElement('A')
- a.textContent = text
- a.target = '_blank';
-
- elem = gradioApp().querySelector('#'+elem_id)
- elem.insertBefore(a, elem.querySelector('label'))
-
- return a
- }
-
- createLink("setting_samples_filename_pattern", "[wiki] ").href = "https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Images-Filename-Name-and-Subdirectory"
- createLink("setting_directories_filename_pattern", "[wiki] ").href = "https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Custom-Images-Filename-Name-and-Subdirectory"
-
- createLink("setting_quicksettings_list", "[info] ").addEventListener("click", function(event){
- requestGet("./internal/quicksettings-hint", {}, function(data){
- var table = document.createElement('table')
- table.className = 'settings-value-table'
-
- data.forEach(function(obj){
- var tr = document.createElement('tr')
- var td = document.createElement('td')
- td.textContent = obj.name
- tr.appendChild(td)
-
- var td = document.createElement('td')
- td.textContent = obj.label
- tr.appendChild(td)
-
- table.appendChild(tr)
- })
-
- popup(table);
- })
- });
+settingsHintsSetup = false
+
+onOptionsChanged(function(){
+ if(settingsHintsSetup) return
+ settingsHintsSetup = true
+
+ gradioApp().querySelectorAll('#settings [id^=setting_]').forEach(function(div){
+ var name = div.id.substr(8)
+ var commentBefore = opts._comments_before[name]
+ var commentAfter = opts._comments_after[name]
+
+ if(! commentBefore && !commentAfter) return
+
+ var span = null
+ if(div.classList.contains('gradio-checkbox')) span = div.querySelector('label span')
+ else if(div.classList.contains('gradio-checkboxgroup')) span = div.querySelector('span').firstChild
+ else if(div.classList.contains('gradio-radio')) span = div.querySelector('span').firstChild
+ else span = div.querySelector('label span').firstChild
+
+ if(!span) return
+
+ if(commentBefore){
+ var comment = document.createElement('DIV')
+ comment.className = 'settings-comment'
+ comment.innerHTML = commentBefore
+ span.parentElement.insertBefore(document.createTextNode('\xa0'), span)
+ span.parentElement.insertBefore(comment, span)
+ span.parentElement.insertBefore(document.createTextNode('\xa0'), span)
+ }
+ if(commentAfter){
+ var comment = document.createElement('DIV')
+ comment.className = 'settings-comment'
+ comment.innerHTML = commentAfter
+ span.parentElement.insertBefore(comment, span.nextSibling)
+ span.parentElement.insertBefore(document.createTextNode('\xa0'), span.nextSibling)
+ }
+ })
})
+function settingsHintsShowQuicksettings(){
+ requestGet("./internal/quicksettings-hint", {}, function(data){
+ var table = document.createElement('table')
+ table.className = 'settings-value-table'
+ data.forEach(function(obj){
+ var tr = document.createElement('tr')
+ var td = document.createElement('td')
+ td.textContent = obj.name
+ tr.appendChild(td)
+
+ var td = document.createElement('td')
+ td.textContent = obj.label
+ tr.appendChild(td)
+
+ table.appendChild(tr)
+ })
+
+ popup(table);
+ })
+}