mirror of
https://github.com/jags111/efficiency-nodes-comfyui.git
synced 2026-03-23 14:12:11 -03:00
Efficiency Nodes V2.0
This commit is contained in:
89
js/node_options/addXYinputs.js
Normal file
89
js/node_options/addXYinputs.js
Normal file
@@ -0,0 +1,89 @@
|
||||
import { app } from "../../../scripts/app.js";
|
||||
import { addMenuHandler, addNode } from "./common/utils.js";
|
||||
|
||||
const nodePxOffsets = 80;
|
||||
|
||||
function getXYInputNodes() {
|
||||
return [
|
||||
"XY Input: Seeds++ Batch",
|
||||
"XY Input: Add/Return Noise",
|
||||
"XY Input: Steps",
|
||||
"XY Input: CFG Scale",
|
||||
"XY Input: Sampler/Scheduler",
|
||||
"XY Input: Denoise",
|
||||
"XY Input: VAE",
|
||||
"XY Input: Prompt S/R",
|
||||
"XY Input: Aesthetic Score",
|
||||
"XY Input: Refiner On/Off",
|
||||
"XY Input: Checkpoint",
|
||||
"XY Input: Clip Skip",
|
||||
"XY Input: LoRA",
|
||||
"XY Input: LoRA Plot",
|
||||
"XY Input: LoRA Stacks",
|
||||
"XY Input: Control Net",
|
||||
"XY Input: Control Net Plot",
|
||||
"XY Input: Manual XY Entry"
|
||||
];
|
||||
}
|
||||
|
||||
function showAddXYInputMenu(type, e, menu, node) {
|
||||
const specialNodes = [
|
||||
"XY Input: LoRA Plot",
|
||||
"XY Input: Control Net Plot",
|
||||
"XY Input: Manual XY Entry"
|
||||
];
|
||||
|
||||
const values = getXYInputNodes().map(nodeType => {
|
||||
return {
|
||||
content: nodeType,
|
||||
callback: function() {
|
||||
const newNode = addNode(nodeType, node);
|
||||
|
||||
// Calculate the left shift based on the width of the new node
|
||||
const shiftX = -(newNode.size[0] + 35);
|
||||
newNode.pos[0] += shiftX;
|
||||
|
||||
if (specialNodes.includes(nodeType)) {
|
||||
newNode.pos[1] += 20;
|
||||
// Connect both outputs to the XY Plot's 2nd and 3rd input.
|
||||
newNode.connect(0, node, 1);
|
||||
newNode.connect(1, node, 2);
|
||||
} else if (type === 'X') {
|
||||
newNode.pos[1] += 20;
|
||||
newNode.connect(0, node, 1); // Connect to 2nd input
|
||||
} else {
|
||||
newNode.pos[1] += node.size[1] + 45;
|
||||
newNode.connect(0, node, 2); // Connect to 3rd input
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
new LiteGraph.ContextMenu(values, {
|
||||
event: e,
|
||||
callback: null,
|
||||
parentMenu: menu,
|
||||
node: node
|
||||
});
|
||||
return false;
|
||||
}
|
||||
|
||||
app.registerExtension({
|
||||
name: "efficiency.addXYinputs",
|
||||
async beforeRegisterNodeDef(nodeType, nodeData, app) {
|
||||
if (nodeData.name === "XY Plot") {
|
||||
addMenuHandler(nodeType, function(insertOption) {
|
||||
insertOption({
|
||||
content: "✏️ Add 𝚇 input...",
|
||||
has_submenu: true,
|
||||
callback: (value, options, e, menu, node) => showAddXYInputMenu('X', e, menu, node)
|
||||
});
|
||||
insertOption({
|
||||
content: "✏️ Add 𝚈 input...",
|
||||
has_submenu: true,
|
||||
callback: (value, options, e, menu, node) => showAddXYInputMenu('Y', e, menu, node)
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user