Skip to content

Commit c011387

Browse files
committed
add search field to settings
1 parent c7e810a commit c011387

File tree

5 files changed

+63
-18
lines changed

5 files changed

+63
-18
lines changed

javascript/settings.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
let settingsExcludeTabsFromShowAll = {
2+
settings_tab_defaults: 1,
3+
settings_tab_sysinfo: 1,
4+
settings_tab_actions: 1,
5+
settings_tab_licenses: 1,
6+
};
7+
8+
function settingsShowAllTabs() {
9+
gradioApp().querySelectorAll('#settings > div').forEach(function(elem) {
10+
if (settingsExcludeTabsFromShowAll[elem.id]) return;
11+
12+
elem.style.display = "block";
13+
});
14+
}
15+
16+
function settingsShowOneTab() {
17+
gradioApp().querySelector('#settings_show_one_page').click();
18+
}
19+
20+
onUiLoaded(function() {
21+
var edit = gradioApp().querySelector('#settings_search');
22+
var editTextarea = gradioApp().querySelector('#settings_search > label > input');
23+
var buttonShowAllPages = gradioApp().getElementById('settings_show_all_pages');
24+
var settings_tabs = gradioApp().querySelector('#settings div');
25+
26+
onEdit('settingsSearch', editTextarea, 250, function() {
27+
var searchText = (editTextarea.value || "").trim();
28+
29+
gradioApp().querySelectorAll('#settings > div[id^=settings_] div[id^=column_settings_] > *').forEach(function(elem) {
30+
var visible = elem.textContent.trim().indexOf(searchText) != -1;
31+
elem.style.display = visible ? "" : "none";
32+
});
33+
34+
if (searchText != "") {
35+
settingsShowAllTabs();
36+
} else {
37+
settingsShowOneTab();
38+
}
39+
});
40+
41+
settings_tabs.insertBefore(edit, settings_tabs.firstChild);
42+
settings_tabs.appendChild(buttonShowAllPages);
43+
44+
45+
buttonShowAllPages.addEventListener("click", settingsShowAllTabs);
46+
});

javascript/token-counters.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ function setupTokenCounting(id, id_counter, id_button) {
6060
prompt.parentElement.insertBefore(counter, prompt);
6161
prompt.parentElement.style.position = "relative";
6262

63-
func = onEdit(id, textarea, 800, function() {
63+
var func = onEdit(id, textarea, 800, function() {
6464
gradioApp().getElementById(id_button)?.click();
6565
});
6666
promptTokenCountUpdateFunctions[id] = func;

javascript/ui.js

-15
Original file line numberDiff line numberDiff line change
@@ -263,21 +263,6 @@ onAfterUiUpdate(function() {
263263
json_elem.parentElement.style.display = "none";
264264

265265
setupTokenCounters();
266-
267-
var show_all_pages = gradioApp().getElementById('settings_show_all_pages');
268-
var settings_tabs = gradioApp().querySelector('#settings div');
269-
if (show_all_pages && settings_tabs) {
270-
settings_tabs.appendChild(show_all_pages);
271-
show_all_pages.onclick = function() {
272-
gradioApp().querySelectorAll('#settings > div').forEach(function(elem) {
273-
if (elem.id == "settings_tab_licenses") {
274-
return;
275-
}
276-
277-
elem.style.display = "block";
278-
});
279-
};
280-
}
281266
});
282267

283268
onOptionsChanged(function() {

modules/ui_settings.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ class UiSettings:
6464
quicksettings_list = None
6565
quicksettings_names = None
6666
text_settings = None
67+
show_all_pages = None
68+
show_one_page = None
69+
search_input = None
6770

6871
def run_settings(self, *args):
6972
changed = []
@@ -136,7 +139,7 @@ def create_ui(self, loadsave, dummy_component):
136139
gr.Group()
137140
current_tab = gr.TabItem(elem_id=f"settings_{elem_id}", label=text)
138141
current_tab.__enter__()
139-
current_row = gr.Column(variant='compact')
142+
current_row = gr.Column(elem_id=f"column_settings_{elem_id}", variant='compact')
140143
current_row.__enter__()
141144

142145
previous_section = item.section
@@ -183,7 +186,11 @@ def create_ui(self, loadsave, dummy_component):
183186
with gr.TabItem("Licenses", id="licenses", elem_id="settings_tab_licenses"):
184187
gr.HTML(shared.html("licenses.html"), elem_id="licenses")
185188

186-
gr.Button(value="Show all pages", elem_id="settings_show_all_pages")
189+
self.show_all_pages = gr.Button(value="Show all pages", elem_id="settings_show_all_pages")
190+
self.show_one_page = gr.Button(value="Show only one page", elem_id="settings_show_one_page", visible=False)
191+
self.show_one_page.click(lambda: None)
192+
193+
self.search_input = gr.Textbox(value="", elem_id="settings_search", max_lines=1, placeholder="Search...", show_label=False)
187194

188195
self.text_settings = gr.Textbox(elem_id="settings_json", value=lambda: opts.dumpjson(), visible=False)
189196

@@ -313,3 +320,8 @@ def get_settings_values():
313320
outputs=[self.component_dict[k] for k in component_keys],
314321
queue=False,
315322
)
323+
324+
def search(self, text):
325+
print(text)
326+
327+
return [gr.update(visible=text in (comp.label or "")) for comp in self.components]

style.css

+2
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,7 @@ div#extras_scale_to_tab div.form{
423423
#settings > div{
424424
border: none;
425425
margin-left: 10em;
426+
padding: 0 var(--spacing-xl);
426427
}
427428

428429
#settings > div.tab-nav{
@@ -437,6 +438,7 @@ div#extras_scale_to_tab div.form{
437438
border: none;
438439
text-align: left;
439440
white-space: initial;
441+
padding: 4px;
440442
}
441443

442444
#settings_result{

0 commit comments

Comments
 (0)