Browse Source

feat: Copy the connections of the nearest node by double-clicking.

pull/365/head
dr.lt.data 10 months ago
parent
commit
8b3d71fbcf
  1. 8
      README.md
  2. 2
      __init__.py
  3. 48
      js/node_fixer.js

8
README.md

@ -63,6 +63,7 @@ This repository provides Colab notebooks that allow you to install and use Comfy
* Support for automatically installing dependencies of custom nodes upon restarting Colab notebooks. * Support for automatically installing dependencies of custom nodes upon restarting Colab notebooks.
## Changes ## Changes
* **2.4** Copy the connections of the nearest node by double-clicking.
* **2.2.3** Support Components System * **2.2.3** Support Components System
* **0.29** Add `Update all` feature * **0.29** Add `Update all` feature
* **0.25** support db channel * **0.25** support db channel
@ -253,6 +254,13 @@ NODE_CLASS_MAPPINGS.update({
![missing-list](misc/missing-list.png) ![missing-list](misc/missing-list.png)
## Additional Feature
* Fix node(recreate): When right-clicking on a node and selecting `Fix node (recreate)`, you can recreate the node. The widget's values are reset, while the connections maintain those with the same names.
* It is used to correct errors in nodes of old workflows created before, which are incompatible with the version changes of custom nodes.
* Connection copy: Double-clicking a node copies the connections of the nearest node.
* However, this action is only possible when there are no existing connections, and since duplicate connections are not allowed in the output, connections from the existing node's output will disappear.
* This feature copies only the input and output that match the names.
## Troubleshooting ## Troubleshooting
* If your `git.exe` is installed in a specific location other than system git, please install ComfyUI-Manager and run ComfyUI. Then, specify the path including the file name in `git_exe = ` in the ComfyUI-Manager/config.ini file that is generated. * If your `git.exe` is installed in a specific location other than system git, please install ComfyUI-Manager and run ComfyUI. Then, specify the path including the file name in `git_exe = ` in the ComfyUI-Manager/config.ini file that is generated.
* If updating ComfyUI-Manager itself fails, please go to the **ComfyUI-Manager** directory and execute the command `git update-ref refs/remotes/origin/main a361cc1 && git fetch --all && git pull`. * If updating ComfyUI-Manager itself fails, please go to the **ComfyUI-Manager** directory and execute the command `git update-ref refs/remotes/origin/main a361cc1 && git fetch --all && git pull`.

2
__init__.py

@ -29,7 +29,7 @@ except:
print(f"[WARN] ComfyUI-Manager: Your ComfyUI version is outdated. Please update to the latest version.") print(f"[WARN] ComfyUI-Manager: Your ComfyUI version is outdated. Please update to the latest version.")
version = [2, 3, 2] version = [2, 4]
version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '') version_str = f"V{version[0]}.{version[1]}" + (f'.{version[2]}' if len(version) > 2 else '')
print(f"### Loading: ComfyUI-Manager ({version_str})") print(f"### Loading: ComfyUI-Manager ({version_str})")

48
js/node_fixer.js

@ -10,6 +10,41 @@ function addMenuHandler(nodeType, cb) {
}; };
} }
function distance(node1, node2) {
let dx = node1.pos[0] - node2.pos[0];
let dy = node1.pos[1] - node2.pos[1];
return Math.sqrt(dx * dx + dy * dy);
}
function lookup_nearest_nodes(node) {
let x = node.pos[0] + node.size[0]/2;
let y = node.pos[1] + node.size[1]/2;
let nearest_distance = Infinity;
let nearest_node = null;
for(let other of app.graph._nodes) {
if(other === node)
continue;
let dist = distance(node, other);
if (dist < nearest_distance) {
nearest_distance = dist;
nearest_node = other;
}
}
return nearest_node;
}
function copy_connections(src, dest) {
if(src.inputs && dest.inputs) {
}
if(src.outputs && dest.outputs) {
}
}
function node_info_copy(src, dest) { function node_info_copy(src, dest) {
// copy input connections // copy input connections
@ -52,6 +87,19 @@ function node_info_copy(src, dest) {
app.registerExtension({ app.registerExtension({
name: "Comfy.Manager.NodeFixer", name: "Comfy.Manager.NodeFixer",
async nodeCreated(node, app) {
let orig_dblClick = node.onDblClick;
node.onDblClick = () => {
orig_dblClick?.apply?.(this, arguments);
if(node.inputs && node.outputs && node.inputs.length == 0 && node.outputs.length == 0)
return;
console.log(arguments);
let src_node = lookup_nearest_nodes(node);
node_info_copy(src_node, node);
}
},
beforeRegisterNodeDef(nodeType, nodeData, app) { beforeRegisterNodeDef(nodeType, nodeData, app) {
addMenuHandler(nodeType, function (_, options) { addMenuHandler(nodeType, function (_, options) {
options.push({ options.push({

Loading…
Cancel
Save