Using jsPlumb, I managed to have the following setup:
Little example first: http://fiddle.darkspot.ch/ivr/flowchart/ivrplumb.html (after an hour of trying, I unfortunately didn't get it to run on jsFiddle - so I host it myself)
What I want to achieve is: If the user drags a new connection from an exit to another node, it should be established as intended. But all the other connections being on this exit should be removed.
I tried different approaches:
click
listener (links to jsPlumb documentation) on each exit bubble. Doesn't work -> the event never gets fired no matter what I tried.connection
listener . I thought I could get the existing connections from the endpoint in the info
object I'm receiving. Open the console while looking at the example, and you see it's always 1
, no matter how many connections there are.maxConnections
for the makeSource(...)
call to 1
. This would actually work, but the user cannot drag another connection to replace the first.Steps to reproduce:
Number of connections:1
. This should be 2
here)What am I doing wrong?
Before a new connection is established check whether the source already has outgoing connections, If so remove it. Assuming that exit elements have exit
class:
jsPlumb.bind('beforeDrop', function(ci){ // Before new connection is created
var src=ci.sourceId;
var con=jsPlumb.getConnections({source:src}); // Get all source el. connection(s) except the new connection which is being established
if(con.length!=0 && $('#'+src).hasClass('exit')){
for(var i=0;i<con.length;i++){
jsPlumb.detach(con[i]);
}
}
return true; // true for establishing new connection
});