update position on node
This commit is contained in:
parent
04f2941a7d
commit
a7b9cf2cc9
4 changed files with 16 additions and 12 deletions
|
|
@ -17,12 +17,14 @@ import ParameterComponent from "./components/parameterComponent";
|
||||||
|
|
||||||
export default function GenericNode({
|
export default function GenericNode({
|
||||||
data: olddata,
|
data: olddata,
|
||||||
position,
|
xPos,
|
||||||
|
yPos,
|
||||||
selected,
|
selected,
|
||||||
}: {
|
}: {
|
||||||
data: NodeDataType;
|
data: NodeDataType;
|
||||||
selected: boolean;
|
selected: boolean;
|
||||||
position: XYPosition;
|
xPos: number;
|
||||||
|
yPos: number;
|
||||||
}): JSX.Element {
|
}): JSX.Element {
|
||||||
const [data, setData] = useState(olddata);
|
const [data, setData] = useState(olddata);
|
||||||
const { updateFlow, flows, tabId } = useContext(TabsContext);
|
const { updateFlow, flows, tabId } = useContext(TabsContext);
|
||||||
|
|
@ -69,6 +71,7 @@ export default function GenericNode({
|
||||||
<>
|
<>
|
||||||
<NodeToolbar>
|
<NodeToolbar>
|
||||||
<NodeToolbarComponent
|
<NodeToolbarComponent
|
||||||
|
position={{ x: xPos, y: yPos }}
|
||||||
data={data}
|
data={data}
|
||||||
setData={setData}
|
setData={setData}
|
||||||
deleteNode={deleteNode}
|
deleteNode={deleteNode}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ import { TabsContext } from "../../../../contexts/tabsContext";
|
||||||
import EditNodeModal from "../../../../modals/EditNodeModal";
|
import EditNodeModal from "../../../../modals/EditNodeModal";
|
||||||
import { nodeToolbarPropsType } from "../../../../types/components";
|
import { nodeToolbarPropsType } from "../../../../types/components";
|
||||||
import { classNames } from "../../../../utils/utils";
|
import { classNames } from "../../../../utils/utils";
|
||||||
import { ungroupNode, updateFlowPosition } from "../../../../utils/reactflowUtils";
|
import { expandGroupNode, ungroupNode, updateFlowPosition } from "../../../../utils/reactflowUtils";
|
||||||
|
|
||||||
export default function NodeToolbarComponent({
|
export default function NodeToolbarComponent({
|
||||||
data,
|
data,
|
||||||
|
|
@ -129,9 +129,7 @@ export default function NodeToolbarComponent({
|
||||||
onClick={(event) => {
|
onClick={(event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
updateFlowPosition(position,data.node?.flow!)
|
updateFlowPosition(position,data.node?.flow!)
|
||||||
ungroupNode(data, { edges: reactFlowInstance.getEdges(),
|
expandGroupNode(data,reactFlowInstance)
|
||||||
nodes: reactFlowInstance.getNodes(),
|
|
||||||
viewport: reactFlowInstance.getViewport() })
|
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<IconComponent name="Ungroup" className="h-4 w-4" />
|
<IconComponent name="Ungroup" className="h-4 w-4" />
|
||||||
|
|
|
||||||
|
|
@ -49,4 +49,5 @@ export type targetHandleType = {
|
||||||
type: string;
|
type: string;
|
||||||
fieldName: string;
|
fieldName: string;
|
||||||
id: string;
|
id: string;
|
||||||
|
proxy?:{field:string, id:string}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@ import { specialCharsRegex } from "../constants/constants";
|
||||||
import { APITemplateType, TemplateVariableType } from "../types/api";
|
import { APITemplateType, TemplateVariableType } from "../types/api";
|
||||||
import {
|
import {
|
||||||
FlowType,
|
FlowType,
|
||||||
|
NodeDataType,
|
||||||
NodeType,
|
NodeType,
|
||||||
sourceHandleType,
|
sourceHandleType,
|
||||||
targetHandleType,
|
targetHandleType,
|
||||||
|
|
@ -783,17 +784,18 @@ export function expandGroupNode(
|
||||||
groupNode: NodeDataType,
|
groupNode: NodeDataType,
|
||||||
ReactFlowInstance: ReactFlowInstance,
|
ReactFlowInstance: ReactFlowInstance,
|
||||||
) {
|
) {
|
||||||
const {template} = groupNode.node
|
const {template} = groupNode.node!
|
||||||
const {flow} = groupNode.node;
|
const {flow} = groupNode.node!;
|
||||||
const gNodes = _.cloneDeep(flow.data.nodes);
|
const gNodes = _.cloneDeep(flow!.data!.nodes);
|
||||||
const gEdges = flow.data.edges;
|
const gEdges = flow!.data!.edges;
|
||||||
//redirect edges to correct proxy node
|
//redirect edges to correct proxy node
|
||||||
let updatedEdges: Edge[] = [];
|
let updatedEdges: Edge[] = [];
|
||||||
ReactFlowInstance.getEdges().forEach((edge) => {
|
ReactFlowInstance.getEdges().forEach((edge) => {
|
||||||
let newEdge = _.cloneDeep(edge);
|
let newEdge = _.cloneDeep(edge);
|
||||||
if (newEdge.target === groupNode.id) {
|
if (newEdge.target === groupNode.id) {
|
||||||
if (newEdge.targetHandle.split("|").length > 3) {
|
const targetHandle:targetHandleType = newEdge.data.targetHandle;
|
||||||
let type = newEdge.targetHandle.split("|")[0];
|
if (targetHandle.proxy) {
|
||||||
|
let type = targetHandle.type;
|
||||||
let field = newEdge.targetHandle.split("|")[4];
|
let field = newEdge.targetHandle.split("|")[4];
|
||||||
let proxy = newEdge.targetHandle.split("|")[3];
|
let proxy = newEdge.targetHandle.split("|")[3];
|
||||||
let node = gNodes.find((n) => n.id === proxy);
|
let node = gNodes.find((n) => n.id === proxy);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue