You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.1 KiB
81 lines
2.1 KiB
import {app} from "../../scripts/app.js"; |
|
import {ComfyWidgets} from "../../scripts/widgets.js"; |
|
// Node that add notes to your project |
|
|
|
let terminal_node; |
|
let log_mode = false; |
|
|
|
app.registerExtension({ |
|
name: "Comfy.Manager.Terminal", |
|
|
|
registerCustomNodes() { |
|
class TerminalNode { |
|
color = "#222222"; |
|
bgcolor = "#000000"; |
|
groupcolor = LGraphCanvas.node_colors.black.groupcolor; |
|
constructor() { |
|
this.logs = []; |
|
|
|
if (!this.properties) { |
|
this.properties = {}; |
|
this.properties.text=""; |
|
} |
|
|
|
ComfyWidgets.STRING(this, "", ["", {default:this.properties.text, multiline: true}], app) |
|
ComfyWidgets.BOOLEAN(this, "mode", ["", {default:true, label_on:'Logging', label_off:'Stop'}], app) |
|
ComfyWidgets.INT(this, "lines", ["", {default:500, min:10, max:10000, steps:1}], app) |
|
|
|
let self = this; |
|
Object.defineProperty(this.widgets[1], 'value', { |
|
set: (v) => { |
|
api.fetchApi(`/manager/terminal?mode=${v}`, {}); |
|
log_mode = v; |
|
}, |
|
get: () => { |
|
return log_mode; |
|
} |
|
}); |
|
|
|
this.serialize_widgets = false; |
|
this.isVirtualNode = true; |
|
|
|
if(terminal_node) { |
|
try { |
|
terminal_node.widgets[0].value = 'The output of this node is disabled because another terminal node has appeared.'; |
|
} |
|
catch {} |
|
} |
|
terminal_node = this; |
|
} |
|
} |
|
|
|
// Load default visibility |
|
LiteGraph.registerNodeType( |
|
"Terminal Log //CM", |
|
Object.assign(TerminalNode, { |
|
title_mode: LiteGraph.NORMAL_TITLE, |
|
title: "Terminal Log (Manager)", |
|
collapsable: true, |
|
}) |
|
); |
|
|
|
TerminalNode.category = "utils"; |
|
}, |
|
}); |
|
|
|
|
|
import { api } from "../../scripts/api.js"; |
|
|
|
function terminalFeedback(event) { |
|
if(terminal_node) { |
|
terminal_node.logs.push(event.detail.data); |
|
if(terminal_node.logs.length > terminal_node.widgets[2].value) { |
|
terminal_node.logs.shift(); |
|
if(terminal_node.logs[0] == '' || terminal_node.logs[0] == '\n') |
|
terminal_node.logs.shift(); |
|
} |
|
terminal_node.widgets[0].value = [...terminal_node.logs].reverse().join('').trim(); |
|
} |
|
} |
|
|
|
api.addEventListener("manager-terminal-feedback", terminalFeedback);
|
|
|