diff --git a/nodes.py b/nodes.py index ffbba9f94..a4cf8639c 100644 --- a/nodes.py +++ b/nodes.py @@ -810,7 +810,9 @@ class SaveImage: input = input.replace("%height%", str(images[0].shape[0])) return input - filename_prefix = compute_vars(filename_prefix) + from datetime import date + + filename_prefix = f'{date.today()}/{compute_vars(filename_prefix)}' subfolder = os.path.dirname(os.path.normpath(filename_prefix)) filename = os.path.basename(os.path.normpath(filename_prefix)) diff --git a/web/extensions/showText.js b/web/extensions/showText.js new file mode 100644 index 000000000..bc20af963 --- /dev/null +++ b/web/extensions/showText.js @@ -0,0 +1,35 @@ +import { app } from "/scripts/app.js"; +import { ComfyWidgets } from "/scripts/widgets.js"; + +// Displays input text on a node + +app.registerExtension({ + name: "pysssss.ShowText", + async beforeRegisterNodeDef(nodeType, nodeData, app) { + if (nodeData.name === "ShowText") { + // When the node is created we want to add a readonly text widget to display the text + const onNodeCreated = nodeType.prototype.onNodeCreated; + nodeType.prototype.onNodeCreated = function () { + const r = onNodeCreated?.apply(this, arguments); + + const w = ComfyWidgets["STRING"](this, "text", ["STRING", { multiline: true }], app).widget; + w.inputEl.readOnly = true; + w.inputEl.style.opacity = 0.6; + + return r; + }; + + // When the node is executed we will be sent the input text, display this in the widget + const onExecuted = nodeType.prototype.onExecuted; + nodeType.prototype.onExecuted = function (message) { + onExecuted?.apply(this, arguments); + + this.widgets[0].value = message.text; + + if (this.size[1] < 180) { + this.setSize([this.size[0], 180]); + } + }; + } + }, +}); \ No newline at end of file