mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-02-13 15:02:37 +08:00
multiple workflows (add RenameWorkflowDialog, workflow_count 5 -> 10)
This commit is contained in:
parent
0d80c1f831
commit
4af477aea6
@ -1603,12 +1603,13 @@ export class ComfyApp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switchWorkflow(seleted_id) {
|
switchWorkflow(seleted_id) {
|
||||||
const workflow_count = 5;
|
// If you change the value of this workflow_count, you also need to change the count of `$el("option"~` (ui.js).
|
||||||
|
const workflow_count = 10; // also used in getWorkflowNames function
|
||||||
|
|
||||||
try {
|
try {
|
||||||
let current_workflow = "workflow_" + this.workflow_current_id;
|
const current_workflow = "workflow_" + this.workflow_current_id;
|
||||||
this.workflow_current_id = Math.min(Math.max(seleted_id, 0), workflow_count - 1);
|
this.workflow_current_id = Math.min(Math.max(seleted_id, 0), workflow_count - 1);
|
||||||
let next_workflow = "workflow_" + this.workflow_current_id;
|
const next_workflow = "workflow_" + this.workflow_current_id;
|
||||||
|
|
||||||
localStorage.setItem("workflow_current_id", this.workflow_current_id);
|
localStorage.setItem("workflow_current_id", this.workflow_current_id);
|
||||||
localStorage.setItem(current_workflow, JSON.stringify(this.graph.serialize()));
|
localStorage.setItem(current_workflow, JSON.stringify(this.graph.serialize()));
|
||||||
@ -1623,6 +1624,21 @@ export class ComfyApp {
|
|||||||
console.error("Error loading workflow", err);
|
console.error("Error loading workflow", err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getWorkflowNames() {
|
||||||
|
const workflow_count = 10; // also used in switchWorkflow function
|
||||||
|
|
||||||
|
const workflow_names = [];
|
||||||
|
for (let i = 0; i < workflow_count; i++) {
|
||||||
|
const name = localStorage.getItem("workflowName_" + i);
|
||||||
|
if (name) {
|
||||||
|
workflow_names.push(name);
|
||||||
|
} else {
|
||||||
|
workflow_names.push("Workflow " + i); // default name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return workflow_names;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const app = new ComfyApp();
|
export const app = new ComfyApp();
|
||||||
|
|||||||
@ -767,9 +767,50 @@ export class ComfyUI {
|
|||||||
$el("option", {value:'workflow_2'}, 'Workflow 2'),
|
$el("option", {value:'workflow_2'}, 'Workflow 2'),
|
||||||
$el("option", {value:'workflow_3'}, 'Workflow 3'),
|
$el("option", {value:'workflow_3'}, 'Workflow 3'),
|
||||||
$el("option", {value:'workflow_4'}, 'Workflow 4'),
|
$el("option", {value:'workflow_4'}, 'Workflow 4'),
|
||||||
|
$el("option", {value:'workflow_5'}, 'Workflow 5'),
|
||||||
|
$el("option", {value:'workflow_6'}, 'Workflow 6'),
|
||||||
|
$el("option", {value:'workflow_7'}, 'Workflow 7'),
|
||||||
|
$el("option", {value:'workflow_8'}, 'Workflow 8'),
|
||||||
|
$el("option", {value:'workflow_9'}, 'Workflow 9'),
|
||||||
]
|
]
|
||||||
),
|
),
|
||||||
]);
|
]);
|
||||||
|
this.is_launchTiming = true;
|
||||||
|
|
||||||
|
const id_renameWorkflow = "Comfy.RenameWorkflowDialog";
|
||||||
|
const renameWorkflow = this.settings.addSetting({
|
||||||
|
id: id_renameWorkflow,
|
||||||
|
name: id_renameWorkflow,
|
||||||
|
defaultValue: false,
|
||||||
|
type: (name, setter, value) => {
|
||||||
|
return $el("tr", [
|
||||||
|
$el("td", [
|
||||||
|
$el("label", {
|
||||||
|
textContent: "Rename workflows",
|
||||||
|
for: id_renameWorkflow.replaceAll(".", "-"),
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
$el("td", [
|
||||||
|
$el("button", {
|
||||||
|
textContent: "Open dialog",
|
||||||
|
onclick: () => {
|
||||||
|
this.app.ui.settings.element.close();
|
||||||
|
|
||||||
|
if ( ! RenameWorkflowDialog.instance) {
|
||||||
|
RenameWorkflowDialog.instance = new RenameWorkflowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
RenameWorkflowDialog.instance.workflow_names = this.app.getWorkflowNames();
|
||||||
|
RenameWorkflowDialog.instance.show();
|
||||||
|
},
|
||||||
|
style: {
|
||||||
|
fontSize: "14px", // Same font size as "View Logs" button
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
]),
|
||||||
|
]);
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
const devMode = this.settings.addSetting({
|
const devMode = this.settings.addSetting({
|
||||||
id: "Comfy.DevMode",
|
id: "Comfy.DevMode",
|
||||||
@ -787,11 +828,6 @@ export class ComfyUI {
|
|||||||
setStatus(status) {
|
setStatus(status) {
|
||||||
this.queueSize.textContent = "Queue size: " + (status ? status.exec_info.queue_remaining : "ERR");
|
this.queueSize.textContent = "Queue size: " + (status ? status.exec_info.queue_remaining : "ERR");
|
||||||
const switch_workflow_combo = document.getElementById("comfy-switch-workflow-combo");
|
const switch_workflow_combo = document.getElementById("comfy-switch-workflow-combo");
|
||||||
if (typeof app != "undefined") {
|
|
||||||
// This assignment is actually only needed when launching the app.
|
|
||||||
switch_workflow_combo.selectedIndex = app.workflow_current_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (status) {
|
if (status) {
|
||||||
switch_workflow_combo.disabled = status.exec_info.queue_remaining ? true : false;
|
switch_workflow_combo.disabled = status.exec_info.queue_remaining ? true : false;
|
||||||
if (
|
if (
|
||||||
@ -806,5 +842,103 @@ export class ComfyUI {
|
|||||||
else {
|
else {
|
||||||
switch_workflow_combo.disabled = false;
|
switch_workflow_combo.disabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.is_launchTiming && typeof app != "undefined") {
|
||||||
|
switch_workflow_combo.selectedIndex = app.workflow_current_id;
|
||||||
|
|
||||||
|
const workflow_names = app.getWorkflowNames();
|
||||||
|
const options = switch_workflow_combo.options;
|
||||||
|
|
||||||
|
console.assert(options.length === workflow_names.length, "workflow_count != the count of $el(option ~ )");
|
||||||
|
|
||||||
|
for (let i = 0; i < options.length; i++) {
|
||||||
|
options[i].text = workflow_names[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.is_launchTiming = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class RenameWorkflowDialog extends ComfyDialog {
|
||||||
|
static instance = null;
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
super();
|
||||||
|
this.element.classList.add("comfy-rename-workflows");
|
||||||
|
this.workflow_names = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
createButtons() {
|
||||||
|
const buttons = super.createButtons();
|
||||||
|
buttons[0].textContent = "Cancel";
|
||||||
|
buttons.unshift(
|
||||||
|
$el("button", {
|
||||||
|
type: "button",
|
||||||
|
textContent: "Save",
|
||||||
|
onclick: () => this.save(),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
return buttons;
|
||||||
|
}
|
||||||
|
|
||||||
|
save() {
|
||||||
|
const inputs = this.element.querySelectorAll("input");
|
||||||
|
const updated_names = [];
|
||||||
|
|
||||||
|
for (let i = 0; i < inputs.length; i++) {
|
||||||
|
const input = inputs[i];
|
||||||
|
if (input.parentElement.style.display !== "none") {
|
||||||
|
const name = input.value.trim() || input.getAttribute("data-name");
|
||||||
|
updated_names.push(name);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
updated_names.push("Workflow " + i); // default name
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.workflow_names = updated_names;
|
||||||
|
|
||||||
|
const switch_workflow_combo = document.getElementById("comfy-switch-workflow-combo");
|
||||||
|
const options = switch_workflow_combo.options;
|
||||||
|
|
||||||
|
for (let i = 0; i < updated_names.length; i++) {
|
||||||
|
options[i].text = updated_names[i];
|
||||||
|
localStorage.setItem("workflowName_" + i, updated_names[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
show() {
|
||||||
|
super.show(
|
||||||
|
$el(
|
||||||
|
"div",
|
||||||
|
{
|
||||||
|
style: {
|
||||||
|
display: "grid",
|
||||||
|
gap: "5px",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
this.workflow_names.flatMap((t) => {
|
||||||
|
let nameInput;
|
||||||
|
return [
|
||||||
|
$el(
|
||||||
|
"label",
|
||||||
|
{
|
||||||
|
textContent: "Name: ",
|
||||||
|
},
|
||||||
|
[
|
||||||
|
$el("input", {
|
||||||
|
value: t,
|
||||||
|
dataset: { name: t },
|
||||||
|
$: (el) => (nameInput = el),
|
||||||
|
}),
|
||||||
|
]
|
||||||
|
),
|
||||||
|
];
|
||||||
|
})
|
||||||
|
)
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -236,7 +236,8 @@ button.comfy-queue-btn {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.comfy-modal.comfy-settings,
|
.comfy-modal.comfy-settings,
|
||||||
.comfy-modal.comfy-manage-templates {
|
.comfy-modal.comfy-manage-templates,
|
||||||
|
.comfy-modal.comfy-rename-workflows {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
color: var(--descrip-text);
|
color: var(--descrip-text);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user