stable-diffusion-webui-forge/javascript/settings.js
2026-06-01 17:57:35 +08:00

82 lines
2.4 KiB
JavaScript

let settingsExcludeTabsFromShowAll = {
settings_tab_defaults: 1,
settings_tab_sysinfo: 1,
settings_tab_actions: 1,
settings_tab_licenses: 1,
};
function settingsShowAllTabs() {
gradioApp()
.querySelectorAll("#settings > div")
.forEach(function (elem) {
if (settingsExcludeTabsFromShowAll[elem.id]) return;
elem.style.display = "block";
});
}
function settingsShowOneTab() {
gradioApp().querySelector("#settings_show_one_page").click();
}
onUiLoaded(function () {
let edit = gradioApp().querySelector("#settings_search");
let editTextarea = gradioApp().querySelector(
"#settings_search > label > input",
);
let buttonShowAllPages = gradioApp().getElementById(
"settings_show_all_pages",
);
let settings_tabs = gradioApp().querySelector("#settings div");
onEdit("settingsSearch", editTextarea, 300, function () {
let searchText = (editTextarea.value || "").trim().toLowerCase();
gradioApp()
.querySelectorAll(
"#settings > div[id^=settings_] div[id^=column_settings_] > *",
)
.forEach(function (elem) {
let visible =
elem.textContent.trim().toLowerCase().indexOf(searchText) != -1;
elem.style.display = visible ? "" : "none";
});
if (searchText != "") {
settingsShowAllTabs();
} else {
settingsShowOneTab();
}
});
settings_tabs.insertBefore(edit, settings_tabs.firstChild);
settings_tabs.appendChild(buttonShowAllPages);
buttonShowAllPages.addEventListener("click", settingsShowAllTabs);
});
onOptionsChanged(function () {
if (gradioApp().querySelector("#settings .settings-category")) return;
let sectionMap = {};
gradioApp()
.querySelectorAll("#settings > div > button")
.forEach(function (x) {
sectionMap[x.textContent.trim()] = x;
});
opts._categories.forEach(function (x) {
let section = localization[x[0]] ?? x[0];
let category = localization[x[1]] ?? x[1];
let span = document.createElement("SPAN");
span.textContent = category;
span.className = "settings-category";
let sectionElem = sectionMap[section];
if (!sectionElem) return;
sectionElem.parentElement.insertBefore(span, sectionElem);
});
});