From 876dadca840f305fafb6ed167d5dc51329fb4083 Mon Sep 17 00:00:00 2001 From: comfyanonymous Date: Thu, 13 Jul 2023 02:25:38 -0400 Subject: [PATCH] Highlight nodes with errors in red even when workflow works fine. --- server.py | 3 ++- web/scripts/api.js | 2 ++ web/scripts/app.js | 16 ++++++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/server.py b/server.py index 7b4fcac3..9ca131ed 100644 --- a/server.py +++ b/server.py @@ -444,7 +444,8 @@ class PromptServer(): prompt_id = str(uuid.uuid4()) outputs_to_execute = valid[2] self.prompt_queue.put((number, prompt_id, prompt, extra_data, outputs_to_execute)) - return web.json_response({"prompt_id": prompt_id, "number": number}) + response = {"prompt_id": prompt_id, "number": number, "node_errors": valid[3]} + return web.json_response(response) else: print("invalid prompt:", valid[1]) return web.json_response({"error": valid[1], "node_errors": valid[3]}, status=400) diff --git a/web/scripts/api.js b/web/scripts/api.js index d7d28fbe..b0d3dcdb 100644 --- a/web/scripts/api.js +++ b/web/scripts/api.js @@ -202,6 +202,8 @@ class ComfyApi extends EventTarget { response: await res.json(), }; } + + return await res.json(); } /** diff --git a/web/scripts/app.js b/web/scripts/app.js index 6f238b2c..a56444f8 100644 --- a/web/scripts/app.js +++ b/web/scripts/app.js @@ -836,7 +836,7 @@ export class ComfyApp { LGraphCanvas.prototype.drawNodeShape = function (node, ctx, size, fgcolor, bgcolor, selected, mouse_over) { const res = origDrawNodeShape.apply(this, arguments); - const nodeErrors = self.lastPromptError?.node_errors[node.id]; + const nodeErrors = self.lastNodeErrors?.[node.id]; let color = null; let lineWidth = 1; @@ -845,7 +845,7 @@ export class ComfyApp { } else if (self.dragOverNode && node.id === self.dragOverNode.id) { color = "dodgerblue"; } - else if (self.lastPromptError != null && nodeErrors?.errors) { + else if (nodeErrors?.errors) { color = "red"; lineWidth = 2; } @@ -1413,7 +1413,7 @@ export class ComfyApp { } this.#processingQueue = true; - this.lastPromptError = null; + this.lastNodeErrors = null; try { while (this.#queueItems.length) { @@ -1423,12 +1423,16 @@ export class ComfyApp { const p = await this.graphToPrompt(); try { - await api.queuePrompt(number, p); + const res = await api.queuePrompt(number, p); + this.lastNodeErrors = res.node_errors; + if (this.lastNodeErrors.length > 0) { + this.canvas.draw(true, true); + } } catch (error) { const formattedError = this.#formatPromptError(error) this.ui.dialog.show(formattedError); if (error.response) { - this.lastPromptError = error.response; + this.lastNodeErrors = error.response.node_errors; this.canvas.draw(true, true); } break; @@ -1534,7 +1538,7 @@ export class ComfyApp { clean() { this.nodeOutputs = {}; this.nodePreviewImages = {} - this.lastPromptError = null; + this.lastNodeErrors = null; this.lastExecutionError = null; this.runningNodeId = null; }