dr.lt.data
11 months ago
3 changed files with 135 additions and 1 deletions
@ -0,0 +1,80 @@
|
||||
import {app} from "../../scripts/app.js"; |
||||
import {ComfyWidgets} from "../../scripts/widgets.js"; |
||||
// Node that add notes to your project
|
||||
|
||||
let terminal_node; |
||||
|
||||
app.registerExtension({ |
||||
name: "Comfy.Manager.Terminal", |
||||
|
||||
registerCustomNodes() { |
||||
class TerminalNode { |
||||
color = "#222222"; |
||||
bgcolor = "#000000"; |
||||
groupcolor = LGraphCanvas.node_colors.black.groupcolor; |
||||
constructor() { |
||||
if(terminal_node) { |
||||
try { |
||||
terminal_node.widgets[0].value = 'The output of this node is disabled because another terminal node has appeared.'; |
||||
node.widgets[1].value = terminal_node.widgets[1].value; |
||||
} |
||||
catch {} |
||||
} |
||||
|
||||
terminal_node = this; |
||||
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) |
||||
|
||||
Object.defineProperty(this.widgets[1], 'value', { |
||||
set: (v) => { |
||||
api.fetchApi(`/manager/terminal?mode=${v}`, {}); |
||||
this._value = v; |
||||
}, |
||||
get: () => { |
||||
return this._value; |
||||
} |
||||
}); |
||||
|
||||
this.serialize_widgets = false; |
||||
this.isVirtualNode = true; |
||||
} |
||||
} |
||||
|
||||
// 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); |
Loading…
Reference in new issue