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
e30d546e
Unverified
Commit
e30d546e
authored
Aug 28, 2023
by
Michael Poutre
Browse files
feat(ui): Add node mode toggles to group context menu
parent
65cae62c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
136 additions
and
0 deletions
+136
-0
web/extensions/core/groupOptions.js
web/extensions/core/groupOptions.js
+136
-0
No files found.
web/extensions/core/groupOptions.js
0 → 100644
View file @
e30d546e
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
// 2: Never
// 4: Bypass
// If all nodes are the same mode, add a menu option to change the mode
if
(
allNodesAreSameMode
)
{
const
mode
=
nodesInGroup
[
0
].
mode
;
// All nodes are always, option to disable, and bypass
if
(
mode
===
0
)
{
options
.
push
({
content
:
"
Disable Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
})
}
// All nodes are never, option to enable, and bypass
if
(
mode
===
2
)
{
options
.
push
({
content
:
"
Enable Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Bypass Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
4
);
}
}
})
}
// All nodes are bypass, option to enable, and disable
if
(
mode
===
4
)
{
options
.
push
({
content
:
"
Enable Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Disable Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
2
);
}
}
})
}
}
else
{
// Nodes are not all the same mode, add a menu option to change the mode to always, never, or bypass
options
.
push
({
content
:
"
Enable Group Nodes
"
,
callback
:
()
=>
{
for
(
const
node
of
nodesInGroup
)
{
setNodeMode
(
node
,
0
);
}
}
});
options
.
push
({
content
:
"
Disable Group Nodes
"
,
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