mirror of
https://github.com/Comfy-Org/ComfyUI-Manager.git
synced 2025-12-16 18:02:58 +08:00
support keyword search
This commit is contained in:
parent
52c9396290
commit
b72722316e
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
* **0.9** Support keyword search in installer menu.
|
||||||
* **V0.7.1** Bug fix for the issue where updates were not being applied on Windows.
|
* **V0.7.1** Bug fix for the issue where updates were not being applied on Windows.
|
||||||
* **For those who have been using versions 0.6, please perform a manual git pull in the custom_nodes/ComfyUI-Manager directory.**
|
* **For those who have been using versions 0.6, please perform a manual git pull in the custom_nodes/ComfyUI-Manager directory.**
|
||||||
* **V0.7** To address the issue of a slow list refresh, separate the fetch update and update check processes.
|
* **V0.7** To address the issue of a slow list refresh, separate the fetch update and update check processes.
|
||||||
|
|||||||
@ -16,7 +16,7 @@ sys.path.append('../..')
|
|||||||
from torchvision.datasets.utils import download_url
|
from torchvision.datasets.utils import download_url
|
||||||
|
|
||||||
# ensure .js
|
# ensure .js
|
||||||
print("### Loading: ComfyUI-Manager (V0.8)")
|
print("### Loading: ComfyUI-Manager (V0.9)")
|
||||||
|
|
||||||
comfy_path = os.path.dirname(folder_paths.__file__)
|
comfy_path = os.path.dirname(folder_paths.__file__)
|
||||||
custom_nodes_path = os.path.join(comfy_path, 'custom_nodes')
|
custom_nodes_path = os.path.join(comfy_path, 'custom_nodes')
|
||||||
|
|||||||
@ -207,15 +207,29 @@
|
|||||||
],
|
],
|
||||||
"https://github.com/LucianoCirino/efficiency-nodes-comfyui": [
|
"https://github.com/LucianoCirino/efficiency-nodes-comfyui": [
|
||||||
"Efficient Loader",
|
"Efficient Loader",
|
||||||
|
"Evaluate Floats",
|
||||||
"Evaluate Integers",
|
"Evaluate Integers",
|
||||||
"Evaluate Strings",
|
"Evaluate Strings",
|
||||||
"Image Overlay",
|
"Image Overlay",
|
||||||
|
"Join XY Inputs",
|
||||||
"KSampler (Efficient)",
|
"KSampler (Efficient)",
|
||||||
|
"Simple Eval Examples",
|
||||||
|
"XY Input: CFG Scale",
|
||||||
|
"XY Input: Checkpoint",
|
||||||
|
"XY Input: Denoise",
|
||||||
|
"XY Input: LoRA",
|
||||||
|
"XY Input: LoRA (Advanced)",
|
||||||
|
"XY Input: Sampler",
|
||||||
|
"XY Input: Scheduler",
|
||||||
|
"XY Input: Seeds++ Batch",
|
||||||
|
"XY Input: Steps",
|
||||||
|
"XY Input: VAE",
|
||||||
"XY Plot"
|
"XY Plot"
|
||||||
],
|
],
|
||||||
"https://github.com/Nourepide/ComfyUI-Allore": [
|
"https://github.com/Nourepide/ComfyUI-Allore": [
|
||||||
"AlphaChanelAsMask",
|
"AlphaChanelAsMask",
|
||||||
"AlphaChanelByMask",
|
"AlphaChanelByMask",
|
||||||
|
"AlphaChanelRemove",
|
||||||
"AlphaChanelRestore",
|
"AlphaChanelRestore",
|
||||||
"ClipClamp",
|
"ClipClamp",
|
||||||
"ClipVisionClamp",
|
"ClipVisionClamp",
|
||||||
@ -225,20 +239,46 @@
|
|||||||
"GligenClamp",
|
"GligenClamp",
|
||||||
"ImageClamp",
|
"ImageClamp",
|
||||||
"ImageCompositeAbsolute",
|
"ImageCompositeAbsolute",
|
||||||
|
"ImageCompositeAbsoluteByContainer",
|
||||||
"ImageCompositeRelative",
|
"ImageCompositeRelative",
|
||||||
|
"ImageCompositeRelativeByContainer",
|
||||||
"ImageContainer",
|
"ImageContainer",
|
||||||
"ImageContainerInheritanceAdd",
|
"ImageContainerInheritanceAdd",
|
||||||
"ImageContainerInheritanceMax",
|
"ImageContainerInheritanceMax",
|
||||||
"ImageContainerInheritanceScale",
|
"ImageContainerInheritanceScale",
|
||||||
"ImageContainerInheritanceSum",
|
"ImageContainerInheritanceSum",
|
||||||
"ImageDrawArc",
|
"ImageDrawArc",
|
||||||
|
"ImageDrawArcByContainer",
|
||||||
"ImageDrawChord",
|
"ImageDrawChord",
|
||||||
|
"ImageDrawChordByContainer",
|
||||||
"ImageDrawEllipse",
|
"ImageDrawEllipse",
|
||||||
|
"ImageDrawEllipseByContainer",
|
||||||
"ImageDrawLine",
|
"ImageDrawLine",
|
||||||
|
"ImageDrawLineByContainer",
|
||||||
"ImageDrawPieslice",
|
"ImageDrawPieslice",
|
||||||
|
"ImageDrawPiesliceByContainer",
|
||||||
"ImageDrawPolygon",
|
"ImageDrawPolygon",
|
||||||
"ImageDrawRectangle",
|
"ImageDrawRectangle",
|
||||||
|
"ImageDrawRectangleByContainer",
|
||||||
"ImageDrawRectangleRounded",
|
"ImageDrawRectangleRounded",
|
||||||
|
"ImageDrawRectangleRoundedByContainer",
|
||||||
|
"ImageFilterBlur",
|
||||||
|
"ImageFilterBoxBlur",
|
||||||
|
"ImageFilterContour",
|
||||||
|
"ImageFilterDetail",
|
||||||
|
"ImageFilterEdgeEnhance",
|
||||||
|
"ImageFilterEdgeEnhanceMore",
|
||||||
|
"ImageFilterEmboss",
|
||||||
|
"ImageFilterFindEdges",
|
||||||
|
"ImageFilterGaussianBlur",
|
||||||
|
"ImageFilterMax",
|
||||||
|
"ImageFilterMedian",
|
||||||
|
"ImageFilterMin",
|
||||||
|
"ImageFilterMode",
|
||||||
|
"ImageFilterRank",
|
||||||
|
"ImageFilterSharpen",
|
||||||
|
"ImageFilterSmooth",
|
||||||
|
"ImageFilterSmoothMore",
|
||||||
"ImageSegmentation",
|
"ImageSegmentation",
|
||||||
"ImageSegmentationCustom",
|
"ImageSegmentationCustom",
|
||||||
"ImageSegmentationCustomAdvanced",
|
"ImageSegmentationCustomAdvanced",
|
||||||
@ -258,12 +298,15 @@
|
|||||||
"LatentSelector"
|
"LatentSelector"
|
||||||
],
|
],
|
||||||
"https://github.com/TinyTerra/ComfyUI_tinyterraNodes.git": [
|
"https://github.com/TinyTerra/ComfyUI_tinyterraNodes.git": [
|
||||||
|
"ttN busIN",
|
||||||
|
"ttN busOUT",
|
||||||
"ttN concat",
|
"ttN concat",
|
||||||
|
"ttN debugInput",
|
||||||
"ttN float",
|
"ttN float",
|
||||||
|
"ttN hiresfixScale",
|
||||||
"ttN imageOutput",
|
"ttN imageOutput",
|
||||||
"ttN imageREMBG",
|
"ttN imageREMBG",
|
||||||
"ttN int",
|
"ttN int",
|
||||||
"ttN modelScale",
|
|
||||||
"ttN pipe2BASIC",
|
"ttN pipe2BASIC",
|
||||||
"ttN pipe2DETAILER",
|
"ttN pipe2DETAILER",
|
||||||
"ttN pipeEDIT",
|
"ttN pipeEDIT",
|
||||||
|
|||||||
@ -218,6 +218,7 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
this.search_keyword = '';
|
||||||
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,6 +233,22 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_searchbox(data) {
|
||||||
|
let keyword = this.search_box.value.toLowerCase();
|
||||||
|
for(let i in this.grid_rows) {
|
||||||
|
let data = this.grid_rows[i].data;
|
||||||
|
let content = data.author.toLowerCase() + data.description.toLowerCase() + data.title.toLowerCase();
|
||||||
|
if(keyword == "")
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
else if(content.includes(keyword)) {
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.grid_rows[i].control.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async filter_missing_node(data) {
|
async filter_missing_node(data) {
|
||||||
const mappings = await getCustomnodeMappings();
|
const mappings = await getCustomnodeMappings();
|
||||||
|
|
||||||
@ -280,7 +297,9 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
|
|
||||||
const msg = $el('div', {id:'custom-message'},
|
const msg = $el('div', {id:'custom-message'},
|
||||||
[$el('br'),
|
[$el('br'),
|
||||||
'The custom node DB is currently being updated, and updates to custom nodes are being checked for.',
|
'The custom node DB is currently being updated, and updates to custom nodes are being checked for.',
|
||||||
|
$el('br'),
|
||||||
|
'NOTE: Update only checks for extensions that have been fetched.',
|
||||||
$el('br')]);
|
$el('br')]);
|
||||||
msg.style.height = '100px';
|
msg.style.height = '100px';
|
||||||
msg.style.verticalAlign = 'middle';
|
msg.style.verticalAlign = 'middle';
|
||||||
@ -298,8 +317,10 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
this.element.removeChild(this.element.children[0]);
|
this.element.removeChild(this.element.children[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.createHeaderControls();
|
||||||
await this.createGrid();
|
await this.createGrid();
|
||||||
this.createControls();
|
this.apply_searchbox(this.data);
|
||||||
|
this.createBottomControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMessage(msg) {
|
updateMessage(msg) {
|
||||||
@ -343,6 +364,8 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
headerRow.style.padding = "0";
|
headerRow.style.padding = "0";
|
||||||
grid.appendChild(headerRow);
|
grid.appendChild(headerRow);
|
||||||
|
|
||||||
|
this.grid_rows = {};
|
||||||
|
|
||||||
if(this.data)
|
if(this.data)
|
||||||
for (var i = 0; i < this.data.length; i++) {
|
for (var i = 0; i < this.data.length; i++) {
|
||||||
const data = this.data[i];
|
const data = this.data[i];
|
||||||
@ -455,6 +478,8 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
dataRow.appendChild(data4);
|
dataRow.appendChild(data4);
|
||||||
dataRow.appendChild(data5);
|
dataRow.appendChild(data5);
|
||||||
grid.appendChild(dataRow);
|
grid.appendChild(dataRow);
|
||||||
|
|
||||||
|
this.grid_rows[i] = {data:data, control:dataRow};
|
||||||
}
|
}
|
||||||
|
|
||||||
const panel = document.createElement('div');
|
const panel = document.createElement('div');
|
||||||
@ -466,10 +491,43 @@ class CustomNodesInstaller extends ComfyDialog {
|
|||||||
this.element.appendChild(panel);
|
this.element.appendChild(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createControls() {
|
createHeaderControls() {
|
||||||
var close_button = document.createElement("button");
|
this.search_box = $el('input', {type:'text', id:'manager-customnode-search-box', placeholder:'input search keyword', value:this.search_keyword}, []);
|
||||||
|
this.search_box.style.height = "25px";
|
||||||
|
this.search_box.onkeydown = (event) => {
|
||||||
|
if (event.key === 'Enter') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
if (event.key === 'Escape') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.search_box.value = '';
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let search_button = document.createElement("button");
|
||||||
|
search_button.innerHTML = "Search";
|
||||||
|
search_button.onclick = () => {
|
||||||
|
this.apply_searchbox();
|
||||||
|
};
|
||||||
|
search_button.style.display = "inline-block";
|
||||||
|
|
||||||
|
let cell = $el('td', {width:'100%'}, [this.search_box, ' ', search_button]);
|
||||||
|
let search_control = $el('table', {width:'100%'},
|
||||||
|
[
|
||||||
|
$el('tr', {}, [cell])
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
cell.style.textAlign = "right";
|
||||||
|
this.element.appendChild(search_control);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createBottomControls() {
|
||||||
|
let close_button = document.createElement("button");
|
||||||
close_button.innerHTML = "Close";
|
close_button.innerHTML = "Close";
|
||||||
close_button.onclick = () => { this.close(); }
|
close_button.onclick = () => { this.search_keyword = ''; this.close(); }
|
||||||
close_button.style.display = "inline-block";
|
close_button.style.display = "inline-block";
|
||||||
|
|
||||||
this.message_box = $el('div', {id:'custom-installer-message'}, [$el('br'), '']);
|
this.message_box = $el('div', {id:'custom-installer-message'}, [$el('br'), '']);
|
||||||
@ -509,6 +567,7 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
this.search_keyword = '';
|
||||||
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -523,6 +582,23 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_searchbox(data) {
|
||||||
|
let keyword = this.search_box.value.toLowerCase();
|
||||||
|
for(let i in this.grid_rows) {
|
||||||
|
let data1 = this.grid_rows[i].data;
|
||||||
|
let data2 = data1.custom_node;
|
||||||
|
let content = data1.tags.toLowerCase() + data1.description.toLowerCase() + data2.author.toLowerCase() + data2.description.toLowerCase() + data2.title.toLowerCase();
|
||||||
|
if(keyword == "")
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
else if(content.includes(keyword)) {
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.grid_rows[i].control.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async invalidateControl() {
|
async invalidateControl() {
|
||||||
this.clear();
|
this.clear();
|
||||||
|
|
||||||
@ -534,6 +610,8 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
const msg = $el('div', {id:'custom-message'},
|
const msg = $el('div', {id:'custom-message'},
|
||||||
[$el('br'),
|
[$el('br'),
|
||||||
'The custom node DB is currently being updated, and updates to custom nodes are being checked for.',
|
'The custom node DB is currently being updated, and updates to custom nodes are being checked for.',
|
||||||
|
$el('br'),
|
||||||
|
'NOTE: Update only checks for extensions that have been fetched.',
|
||||||
$el('br')]);
|
$el('br')]);
|
||||||
msg.style.height = '100px';
|
msg.style.height = '100px';
|
||||||
msg.style.verticalAlign = 'middle';
|
msg.style.verticalAlign = 'middle';
|
||||||
@ -548,8 +626,10 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
this.element.removeChild(this.element.children[0]);
|
this.element.removeChild(this.element.children[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.createHeaderControls();
|
||||||
await this.createGrid();
|
await this.createGrid();
|
||||||
this.createControls();
|
this.apply_searchbox(this.data);
|
||||||
|
this.createBottomControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMessage(msg) {
|
updateMessage(msg) {
|
||||||
@ -597,6 +677,8 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
headerRow.style.padding = "0";
|
headerRow.style.padding = "0";
|
||||||
grid.appendChild(headerRow);
|
grid.appendChild(headerRow);
|
||||||
|
|
||||||
|
this.grid_rows = {};
|
||||||
|
|
||||||
if(this.data)
|
if(this.data)
|
||||||
for (var i = 0; i < this.data.length; i++) {
|
for (var i = 0; i < this.data.length; i++) {
|
||||||
const data = this.data[i];
|
const data = this.data[i];
|
||||||
@ -724,6 +806,8 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
dataRow.appendChild(data5);
|
dataRow.appendChild(data5);
|
||||||
dataRow.appendChild(data6);
|
dataRow.appendChild(data6);
|
||||||
grid.appendChild(dataRow);
|
grid.appendChild(dataRow);
|
||||||
|
|
||||||
|
this.grid_rows[i] = {data:data, control:dataRow};
|
||||||
}
|
}
|
||||||
|
|
||||||
const panel = document.createElement('div');
|
const panel = document.createElement('div');
|
||||||
@ -735,7 +819,40 @@ class AlternativesInstaller extends ComfyDialog {
|
|||||||
this.element.appendChild(panel);
|
this.element.appendChild(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createControls() {
|
createHeaderControls() {
|
||||||
|
this.search_box = $el('input', {type:'text', id:'manager-alternode-search-box', placeholder:'input search keyword', value:this.search_keyword}, []);
|
||||||
|
this.search_box.style.height = "25px";
|
||||||
|
this.search_box.onkeydown = (event) => {
|
||||||
|
if (event.key === 'Enter') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
if (event.key === 'Escape') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.search_box.value = '';
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let search_button = document.createElement("button");
|
||||||
|
search_button.innerHTML = "Search";
|
||||||
|
search_button.onclick = () => {
|
||||||
|
this.apply_searchbox();
|
||||||
|
};
|
||||||
|
search_button.style.display = "inline-block";
|
||||||
|
|
||||||
|
let cell = $el('td', {width:'100%'}, [this.search_box, ' ', search_button]);
|
||||||
|
let search_control = $el('table', {width:'100%'},
|
||||||
|
[
|
||||||
|
$el('tr', {}, [cell])
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
cell.style.textAlign = "right";
|
||||||
|
this.element.appendChild(search_control);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createBottomControls() {
|
||||||
var close_button = document.createElement("button");
|
var close_button = document.createElement("button");
|
||||||
close_button.innerHTML = "Close";
|
close_button.innerHTML = "Close";
|
||||||
close_button.onclick = () => { this.close(); }
|
close_button.onclick = () => { this.close(); }
|
||||||
@ -778,6 +895,7 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
this.search_keyword = '';
|
||||||
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
this.element = $el("div.comfy-modal", { parent: document.body }, []);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -802,6 +920,22 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply_searchbox(data) {
|
||||||
|
let keyword = this.search_box.value.toLowerCase();
|
||||||
|
for(let i in this.grid_rows) {
|
||||||
|
let data = this.grid_rows[i].data;
|
||||||
|
let content = data.name.toLowerCase() + data.type.toLowerCase() + data.base.toLowerCase() + data.description.toLowerCase();
|
||||||
|
if(keyword == "")
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
else if(content.includes(keyword)) {
|
||||||
|
this.grid_rows[i].control.style.display = null;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.grid_rows[i].control.style.display = 'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async invalidateControl() {
|
async invalidateControl() {
|
||||||
this.clear();
|
this.clear();
|
||||||
this.data = (await getModelList()).models;
|
this.data = (await getModelList()).models;
|
||||||
@ -810,8 +944,9 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
this.element.removeChild(this.element.children[0]);
|
this.element.removeChild(this.element.children[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await this.createHeaderControls();
|
||||||
await this.createGrid();
|
await this.createGrid();
|
||||||
this.createControls();
|
await this.createBottomControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateMessage(msg) {
|
updateMessage(msg) {
|
||||||
@ -865,6 +1000,8 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
headerRow.style.padding = "0";
|
headerRow.style.padding = "0";
|
||||||
grid.appendChild(headerRow);
|
grid.appendChild(headerRow);
|
||||||
|
|
||||||
|
this.grid_rows = {};
|
||||||
|
|
||||||
if(this.data)
|
if(this.data)
|
||||||
for (var i = 0; i < this.data.length; i++) {
|
for (var i = 0; i < this.data.length; i++) {
|
||||||
const data = this.data[i];
|
const data = this.data[i];
|
||||||
@ -925,6 +1062,8 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
dataRow.appendChild(data6);
|
dataRow.appendChild(data6);
|
||||||
dataRow.appendChild(data_install);
|
dataRow.appendChild(data_install);
|
||||||
grid.appendChild(dataRow);
|
grid.appendChild(dataRow);
|
||||||
|
|
||||||
|
this.grid_rows[i] = {data:data, control:dataRow};
|
||||||
}
|
}
|
||||||
|
|
||||||
const panel = document.createElement('div');
|
const panel = document.createElement('div');
|
||||||
@ -936,7 +1075,40 @@ class ModelInstaller extends ComfyDialog {
|
|||||||
this.element.appendChild(panel);
|
this.element.appendChild(panel);
|
||||||
}
|
}
|
||||||
|
|
||||||
async createControls() {
|
createHeaderControls() {
|
||||||
|
this.search_box = $el('input', {type:'text', id:'manager-model-search-box', placeholder:'input search keyword', value:this.search_keyword}, []);
|
||||||
|
this.search_box.style.height = "25px";
|
||||||
|
this.search_box.onkeydown = (event) => {
|
||||||
|
if (event.key === 'Enter') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
if (event.key === 'Escape') {
|
||||||
|
this.search_keyword = this.search_box.value;
|
||||||
|
this.search_box.value = '';
|
||||||
|
this.apply_searchbox();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let search_button = document.createElement("button");
|
||||||
|
search_button.innerHTML = "Search";
|
||||||
|
search_button.onclick = () => {
|
||||||
|
this.apply_searchbox();
|
||||||
|
};
|
||||||
|
search_button.style.display = "inline-block";
|
||||||
|
|
||||||
|
let cell = $el('td', {width:'100%'}, [this.search_box, ' ', search_button]);
|
||||||
|
let search_control = $el('table', {width:'100%'},
|
||||||
|
[
|
||||||
|
$el('tr', {}, [cell])
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
cell.style.textAlign = "right";
|
||||||
|
this.element.appendChild(search_control);
|
||||||
|
}
|
||||||
|
|
||||||
|
async createBottomControls() {
|
||||||
var close_button = document.createElement("button");
|
var close_button = document.createElement("button");
|
||||||
close_button.innerHTML = "Close";
|
close_button.innerHTML = "Close";
|
||||||
close_button.onclick = () => { this.close(); }
|
close_button.onclick = () => { this.close(); }
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 148 KiB After Width: | Height: | Size: 121 KiB |
BIN
misc/models.png
BIN
misc/models.png
Binary file not shown.
|
Before Width: | Height: | Size: 179 KiB After Width: | Height: | Size: 120 KiB |
@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"models": [
|
"models": [
|
||||||
{
|
{
|
||||||
"name": "TASED Decoder",
|
"name": "TAESD Decoder",
|
||||||
"type": "VAE",
|
"type": "VAE",
|
||||||
"base": "TASED",
|
"base": "TAESD",
|
||||||
"save_path": "vae_approx",
|
"save_path": "vae_approx",
|
||||||
"description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
"description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||||
"reference": "https://github.com/madebyollin/taesd",
|
"reference": "https://github.com/madebyollin/taesd",
|
||||||
@ -11,9 +11,9 @@
|
|||||||
"url": "https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth"
|
"url": "https://github.com/madebyollin/taesd/raw/main/taesd_decoder.pth"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "TASED Encoder",
|
"name": "TAESD Encoder",
|
||||||
"type": "VAE",
|
"type": "VAE",
|
||||||
"base": "TASED",
|
"base": "TAESD",
|
||||||
"save_path": "vae_approx",
|
"save_path": "vae_approx",
|
||||||
"description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
"description": "To view the preview in high quality while running samples in ComfyUI, you will need this model.",
|
||||||
"reference": "https://github.com/madebyollin/taesd",
|
"reference": "https://github.com/madebyollin/taesd",
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user