From 76303ae39d4597cae1469dc5a0e1a8a24166b768 Mon Sep 17 00:00:00 2001 From: "A.I Joe" <88169436+ai-joe-git@users.noreply.github.com> Date: Tue, 24 Feb 2026 16:12:05 +0000 Subject: [PATCH] Implement WebUI generator buttons in webui_generator.js --- web/js/webui_generator.js | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 web/js/webui_generator.js diff --git a/web/js/webui_generator.js b/web/js/webui_generator.js new file mode 100644 index 0000000..0563888 --- /dev/null +++ b/web/js/webui_generator.js @@ -0,0 +1,47 @@ +import { app } from "../../scripts/app.js"; +import { api } from "../../scripts/api.js"; + +function addButtons(node) { + if (node.__webuiGenButtonsAdded) return; + node.__webuiGenButtonsAdded = true; + + node.addWidget("button", "Open Generator UI", null, async () => { + try { + const info = await api.fetchApi("/webui-generator/info").then(r => r.json()); + const host = info.host || "127.0.0.1"; + const port = info.port || 7860; + + // Open generator (Gradio) in a new tab + const url = `http://${host}:${port}`; + window.open(url, "_blank", "noopener,noreferrer"); + } catch (e) { + console.error(e); + alert("Failed to get generator URL. Check ComfyUI console logs."); + } + }); + + node.addWidget("button", "Open ComfyUI Output Folder", null, async () => { + try { + await api.fetchApi("/webui-generator/open-output", { method: "POST" }); + } catch (e) { + console.error(e); + alert("Failed to open output folder."); + } + }); + + node.addWidget("text", "Note", "Upload the *API workflow JSON* in the generator UI.", () => {}); +} + +app.registerExtension({ + name: "ai.joe.webui_generator_node", + async beforeRegisterNodeDef(nodeType, nodeData) { + if (nodeData.name === "WebUI_Generator_Launcher") { + const onNodeCreated = nodeType.prototype.onNodeCreated; + nodeType.prototype.onNodeCreated = function () { + const r = onNodeCreated?.apply(this, arguments); + addButtons(this); + return r; + }; + } + } +});