Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
ComfyUI
Commits
968078b1
Commit
968078b1
authored
Aug 29, 2023
by
comfyanonymous
Browse files
Merge branch 'feat/mute_bypass_nodes_in_group' of
https://github.com/M1kep/ComfyUI
parents
66c690e6
6944288a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
167 additions
and
0 deletions
+167
-0
web/extensions/core/groupOptions.js
web/extensions/core/groupOptions.js
+167
-0
No files found.
web/extensions/core/groupOptions.js
0 → 100644
View file @
968078b1
import
{
app
}
from
"
../../scripts/app.js
"
;
function
setNodeMode
(
node
,
mode
)
{
node
.
mode
=
mode
;
node
.
graph
.
change
();
}
app
.
registerExtension
({
name
:
"
Comfy.GroupOptions
"
,
setup
()
{
const
orig
=
LGraphCanvas
.
prototype
.
getCanvasMenuOptions
;
// graph_mouse
LGraphCanvas
.
prototype
.
getCanvasMenuOptions
=
function
()
{
const
options
=
orig
.
apply
(
this
,
arguments
);
const
group
=
this
.
graph
.
getGroupOnPos
(
this
.
graph_mouse
[
0
],
this
.
graph_mouse
[
1
]);
if
(
!
group
)
{
return
options
;
}
// Group nodes aren't recomputed until the group is moved, this ensures the nodes are up-to-date
group
.
recomputeInsideNodes
();
const
nodesInGroup
=
group
.
_nodes
;
// No nodes in group, return default options
if
(
nodesInGroup
.
length
===
0
)
{
return
options
;
}
else
{
// Add a separator between the default options and the group options
options
.
push
(
null
);
}
// Check if all nodes are the same mode
let
allNodesAreSameMode
=
true
;
for
(
let
i
=
1
;
i
<
nodesInGroup
.
length
;
i
++
)
{
if
(
nodesInGroup
[
i
].
mode
!==
nodesInGroup
[
0
].
mode
)
{
allNodesAreSameMode
=
false
;
break
;
}
}
// Modes
// 0: Always
// 1: On Event
// 2: Never
// 3: On Trigger
// 4: Bypass
// If all nodes are the same mode, add a menu option to change the mode
if
(
allNodesAreSameMode
)
{
const
mode
=
nodesInGroup
[
0
].
mode
;
switch
(
mode
)
{
case
0
:
// All nodes are always, option to disable, and bypass
options
.
push
({
content
:
"
Set Group Nodes to Never
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
});
break
;
case
2
:
// All nodes are never, option to enable, and bypass
options
.
push
({
content
:
"
Set Group Nodes to Always
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
});
break
;
case
4
:
// All nodes are bypass, option to enable, and disable
options
.
push
({
content
:
"
Set Group Nodes to Always
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Set Group Nodes to Never
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
});
break
;
default
:
// All nodes are On Trigger or On Event(Or other?), option to disable, set to always, or bypass
options
.
push
({
content
:
"
Set Group Nodes to Always
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Set Group Nodes to Never
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
});
break
;
}
}
else
{
// Nodes are not all the same mode, add a menu option to change the mode to always, never, or bypass
options
.
push
({
content
:
"
Set Group Nodes to Always
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Set Group Nodes to Never
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
});
}
return
options
}
}
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment