How can I set up a JsPlumb connection that splits in the middle and goes to more than one endploints like in the following images?
A: Connecting two endpoints with one connection:
B: Connecting two endpoints with one connection:
C: Connecting three endpoints with one connection:
Edit: Using the FlowChart option I get a strange bug which a small dot, see the image below.
below links to jsfiddle with scripts. All blue-blocks are draggable, so you can experiment with block positions and connections behavior.
And I'm sorry for so large answer ;)
A: Connecting two endpoints with one connection:
http://jsfiddle.net/TkyJB/2/
jsPlumb.ready(function() {
// default settings for connectors
var connectionParams = {
connector: ["Flowchart", {cornerRadius:1}],
paintStyle:{
lineWidth: 1,
outlineColor:"blue",
outlineWidth: 0
},
detachable:false,
endpointStyle: { radius:1 }
};
// w2 <=> w1
jsPlumb.connect({
source: "window2",
target: "window1",
anchors: ["TopCenter", "Left"]
}, connectionParams);
// w2 <=> w2
jsPlumb.connect({
source: "window2",
target: "window3",
anchors: ["BottomCenter", "Left"]
}, connectionParams);
//
jsPlumb.draggable(
jsPlumb.getSelector(".window"),
{ containment:".demo"}
);
});
B: Connecting two endpoints with one connection:
jsPlumb rule: one connection between 2 windows. So if you need to divide some connection in end, you need to create proxy-point, that will be as source for one widow, and will create 2 new connections for other windows.
http://jsfiddle.net/TkyJB/8/
jsPlumb.ready(function() {
// default settings for connectors
var connectionParams = {
connector: ["Flowchart", {cornerRadius:1}],
paintStyle:{
lineWidth: 1,
outlineColor:"green",
outlineWidth: 0
},
detachable:false,
endpointStyle: { radius:1 }
};
// w1 <=> w1s
jsPlumb.connect({
source: "window1",
target: "window1s",
anchors: ["Right", "Center"],
anchor:[ "Perimeter", { shape:"Circle" } ]
}, connectionParams);
// w1s <=> w2
jsPlumb.connect({
source: "window1s",
target: "window2",
anchors: ["Center", "Bottom"]
}, connectionParams);
// w1s <=> w3
jsPlumb.connect({
source: "window1s",
target: "window3",
anchors: ["Center", "Top"]
}, connectionParams);
//
jsPlumb.draggable(
jsPlumb.getSelector(".window"),
{ containment:".demo"}
);
});
C: Connecting three endpoints with one connection:
It will be the same as in 'B', but with extra hidden proxy-block.
http://jsfiddle.net/TkyJB/7/
jsPlumb.ready(function() {
// default settings for connectors
var connectionParams = {
connector: ["Flowchart", {cornerRadius:1}],
paintStyle:{
lineWidth: 1,
outlineColor:"blue",
outlineWidth: 0
},
detachable:false,
endpointStyle: { radius:1 }
};
// w1 <=> w1s1
jsPlumb.connect({
source: "window1",
target: "window1s1",
anchors: ["Right", "Center"]
}, connectionParams);
// w1s1 <=> w1s2
jsPlumb.connect({
source: "window1s1",
target: "window1s2",
anchors: ["Center", "Center"]
}, connectionParams);
// w1s1 <=> w2
jsPlumb.connect({
source: "window1s1",
target: "window2",
anchors: ["TopCenter", "Left"]
}, connectionParams);
// w1s1 <=> w3
jsPlumb.connect({
source: "window1s1",
target: "window3",
anchors: ["BottomCenter", "Left"]
}, connectionParams);
// w1s2 <=> w4
jsPlumb.connect({
source: "window1s2",
target: "window4",
anchors: ["Right", "Left"]
}, connectionParams);
//
jsPlumb.draggable(
jsPlumb.getSelector(".window"),
{ containment:".demo"}
);
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With