Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How can i make only single input and single output for all node. #844

Open
parthsavaliya1 opened this issue Mar 30, 2024 · 7 comments
Open

Comments

@parthsavaliya1
Copy link

I want to make only single input and single output in all node. like for node A is main node then A is only connected with node B And for Node B only one input from A and only one output is connected to Node C

@jerosoler
Copy link
Owner

View to restric connections:

@parthsavaliya1
Copy link
Author

@jerosoler I want to restrict when already one connection from node A to node B and when user try to connect node A to node C at that time node should not be connected. and when user try to add node D after node A then connection should be auto connect like node A to node D and node D to node B .

@jerosoler
Copy link
Owner

With the previous example you can detect when a connection is created and delete it.

In that case you can use the function to delete or create the connections you want.

Use the functions: removeSingleConnection and addConnection

@parthsavaliya1
Copy link
Author

@jerosoler using this solution i can able to do this. but when i start connection from last node(the node is not connected to other node) then this solution is not working:

editor.on('connectionStart', (e) => {
connectionStartObj =editor.getNodeFromId(e?.output_id);
console.log('connn',connectionStartObj)
})

    editor.on('connectionCreated', (info) => {
        console.log('datata',connectionStartObj)
        console.log('info',info)
        
        if(connectionStartObj?.outputs?.output_1?.connections?.length > 0) {
            const nodeInfo = editor.getNodeFromId(info.input_id);
      const connections = nodeInfo.inputs[info.input_class].connections;
      console.log(connections,nodeInfo)

      if (connections.length > 1) {
        const lastConnectionIndex = connections.length - 1;
        const lastConnection = connections[lastConnectionIndex];
        editor.removeSingleConnection(lastConnection.node, info.input_id, lastConnection.input, info.input_class);
        connectionStartObj = null;
      }
        }
    })

@jerosoler
Copy link
Owner

In the same way.

With getNodeFromId the node can know what connections it has to other nodes.

You can get the information of the two nodes.

Here you have to use your logic. It could also detect loops...

@parthsavaliya1
Copy link
Author

Is there any way to detect node where we try to connect.

Ex: Like i have 3 node. Node A , Node B , Node C and i want to try node C to node B then how can i get node B . using connectionStart event i can detect Node C but if i want to get Node B id then??????...

@jerosoler
Copy link
Owner

connectionCreated return { output_id, input_id, output_class, input_class }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants