Browse Source

Highlight nodes with errors in red even when workflow works fine.

pull/899/head
comfyanonymous 1 year ago
parent
commit
876dadca84
  1. 3
      server.py
  2. 2
      web/scripts/api.js
  3. 16
      web/scripts/app.js

3
server.py

@ -444,7 +444,8 @@ class PromptServer():
prompt_id = str(uuid.uuid4()) prompt_id = str(uuid.uuid4())
outputs_to_execute = valid[2] outputs_to_execute = valid[2]
self.prompt_queue.put((number, prompt_id, prompt, extra_data, outputs_to_execute)) 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: else:
print("invalid prompt:", valid[1]) print("invalid prompt:", valid[1])
return web.json_response({"error": valid[1], "node_errors": valid[3]}, status=400) return web.json_response({"error": valid[1], "node_errors": valid[3]}, status=400)

2
web/scripts/api.js

@ -202,6 +202,8 @@ class ComfyApi extends EventTarget {
response: await res.json(), response: await res.json(),
}; };
} }
return await res.json();
} }
/** /**

16
web/scripts/app.js

@ -836,7 +836,7 @@ export class ComfyApp {
LGraphCanvas.prototype.drawNodeShape = function (node, ctx, size, fgcolor, bgcolor, selected, mouse_over) { LGraphCanvas.prototype.drawNodeShape = function (node, ctx, size, fgcolor, bgcolor, selected, mouse_over) {
const res = origDrawNodeShape.apply(this, arguments); const res = origDrawNodeShape.apply(this, arguments);
const nodeErrors = self.lastPromptError?.node_errors[node.id]; const nodeErrors = self.lastNodeErrors?.[node.id];
let color = null; let color = null;
let lineWidth = 1; let lineWidth = 1;
@ -845,7 +845,7 @@ export class ComfyApp {
} else if (self.dragOverNode && node.id === self.dragOverNode.id) { } else if (self.dragOverNode && node.id === self.dragOverNode.id) {
color = "dodgerblue"; color = "dodgerblue";
} }
else if (self.lastPromptError != null && nodeErrors?.errors) { else if (nodeErrors?.errors) {
color = "red"; color = "red";
lineWidth = 2; lineWidth = 2;
} }
@ -1413,7 +1413,7 @@ export class ComfyApp {
} }
this.#processingQueue = true; this.#processingQueue = true;
this.lastPromptError = null; this.lastNodeErrors = null;
try { try {
while (this.#queueItems.length) { while (this.#queueItems.length) {
@ -1423,12 +1423,16 @@ export class ComfyApp {
const p = await this.graphToPrompt(); const p = await this.graphToPrompt();
try { 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) { } catch (error) {
const formattedError = this.#formatPromptError(error) const formattedError = this.#formatPromptError(error)
this.ui.dialog.show(formattedError); this.ui.dialog.show(formattedError);
if (error.response) { if (error.response) {
this.lastPromptError = error.response; this.lastNodeErrors = error.response.node_errors;
this.canvas.draw(true, true); this.canvas.draw(true, true);
} }
break; break;
@ -1534,7 +1538,7 @@ export class ComfyApp {
clean() { clean() {
this.nodeOutputs = {}; this.nodeOutputs = {};
this.nodePreviewImages = {} this.nodePreviewImages = {}
this.lastPromptError = null; this.lastNodeErrors = null;
this.lastExecutionError = null; this.lastExecutionError = null;
this.runningNodeId = null; this.runningNodeId = null;
} }

Loading…
Cancel
Save