From c36b5026f9fb7c9b799ccb289cdb8c224ddd2b61 Mon Sep 17 00:00:00 2001 From: NumZ Date: Sun, 18 May 2025 03:55:10 +0200 Subject: [PATCH] Update Combo --- web/js/nodetype_input.js | 23 ++++++++++++++++------- web/js/nodetype_output.js | 6 ++---- workflow_nodes.py | 5 +++++ 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/web/js/nodetype_input.js b/web/js/nodetype_input.js index 95cabc4..dd7c324 100644 --- a/web/js/nodetype_input.js +++ b/web/js/nodetype_input.js @@ -59,13 +59,15 @@ function initialisation_preGraph(node) { } node.widgets = node.widgets.splice(0, 1); if (node.widgets_values) { - if (node.widgets_values.length == 3) { + if (node.widgets_values.length == 3 && type !== "COMBO") { node.widgets_values = [ node.widgets_values[0], node.widgets_values[2], ]; } else { - node.widgets_values = node.widgets_values.splice(0, 2); + if (type !== "COMBO") { + node.widgets_values = node.widgets_values.splice(0, 2); + } } } if (node.inputs[2]) { @@ -147,15 +149,18 @@ function initialisation_preGraph(node) { case "COMBO": node.outputs[0].type = "COMBO"; ComfyWidgets.COMBO(node, "default", ["COMBO", options], app); - if (node.widgets_values && node.widgets_values.length == 2) { - node.widgets[1].value = node.widgets_values[1][0]; + if (node.widgets_values && node.widgets_values.length == 3) { + node.widgets[1].value = node.widgets_values[1]; } else { node.widgets[1].value = widget_input.value; } if (options.values.length > 0) { node.widgets[1].options = options; } else { - node.widgets[1].options = node.widgets_values[1][1]; + if (node.widgets_values && node.widgets_values.length == 3) { + options = node.widgets_values[2]; + node.widgets[1].options = options; + } } node.inputs[0].type = node_input ? node_input.type : "*"; if ( @@ -341,7 +346,10 @@ function initialisation_onAdded(node) { } function configure(info) { - if (info.widgets_values.length == 3) { + if ( + info.widgets_values.length == 3 && + (!this.widgets[1] || (this.widgets[1] && this.widgets[1].type !== "combo")) + ) { info.widgets_values = [info.widgets_values[0], info.widgets_values[2]]; } //info.widgets_values = [info.widgets_values[0], info.widgets_values[1]]; @@ -389,7 +397,8 @@ function serialize(info) { if (this.inputs[0].type == "COMBO") { if (this.widgets[1].options.values.length > 0) { - info.widgets_values[1] = [this.widgets[1].value, this.widgets[1].options]; + info.widgets_values[1] = this.widgets[1].value; + info.widgets_values[2] = this.widgets[1].options; } } } diff --git a/web/js/nodetype_output.js b/web/js/nodetype_output.js index 0ed60d5..02b6466 100644 --- a/web/js/nodetype_output.js +++ b/web/js/nodetype_output.js @@ -26,15 +26,13 @@ function initialisation(node) { if (node.widgets_values && node.widgets_values.length === undefined) { node.widgets_values = [node.widgets_values.Name.value]; } else { - if (node.widgets_values[0] === "") { - node.widgets_values = node_output.name; - } + node.widgets_values = [node_output.name]; } if (node.inputs[2]) { node.removeInput(1); } if (node.widgets[0].value === "") { - if (node.widgets_values.length == 1) { + if (node.widgets_values && node.widgets_values.length == 1) { node.widgets[0].value = node.widgets_values[0]; } else { node.widgets[0].value = node_output.name; diff --git a/workflow_nodes.py b/workflow_nodes.py index da53fc8..9e150d0 100644 --- a/workflow_nodes.py +++ b/workflow_nodes.py @@ -112,6 +112,7 @@ class WorkflowOutput: "required": { "Name": STRING, #"type": (node_type_list,) + "default": ("*",) }, "hidden": { "ui": BOOLEAN @@ -130,6 +131,10 @@ class WorkflowOutput: m.update(Name.encode()) return m.digest().hex() + @classmethod + def VALIDATE_INPUTS(cls, input_types): + return True + def execute(self, Name, ui=True, **kwargs): if ui: if kwargs["default"] is None: