JsPlum样例,含有多个点连接,双向箭头等
<!DOCTYPE html>
<html>
<head>
<script src="jquery-1.9.0.js"></script>
<script src="jquery-ui-1.9.2-min.js"></script>
<script src="jquery.jsPlumb-1.4.0-all.js"></script>
<style type="text/css">
.dragActive { border:2px dotted orange; }
.dropHover { border:1px dotted red; }
.w {
border: 1px solid black;
background-color: #ddddff;
width: 80px;
height: 60px;
position: absolute;
}
.item {
padding: 16px;
position: absolute;
z-index: 4;
border: 1px solid #2e6f9a;
box-shadow: 2px 2px 19px #e0e0e0;
-o-box-shadow: 2px 2px 19px #e0e0e0;
-webkit-box-shadow: 2px 2px 19px #e0e0e0;
-moz-box-shadow: 2px 2px 19px #e0e0e0;
-moz-border-radius: 8px;
border-radius: 8px;
opacity: 0.8;
filter: alpha(opacity=80);
cursor: move;
background-color: white;
font-size: 11px;
-webkit-transition: background-color 0.25s ease-in;
-moz-transition: background-color 0.25s ease-in;
transition: background-color 0.25s ease-in;
background-color: #ddddff;
}
/* 人口 begin */
#jx_rk {
left: 100px;
top: 50px;
}
#sqy_rk {
left: 100px;
top: 150px;
}
#wb_rk {
left: 100px;
top: 250px;
}
#rk_1 {
left: 350px;
top: 150px;
}
#rk_2 {
left: 600px;
top: 150px;
}
#rk_3 {
left: 850px;
top: 150px;
}
/* 人口 end */
#fr_3 {
left: 850px;
top: 450px;
}
</style>
<script>
jsPlumb.ready(function() {
jsPlumb.importDefaults({
DragOptions : { cursor: 'pointer', zIndex:2000 },
PaintStyle : { strokeStyle:'#666' },
EndpointStyle : { width:20, height:16, strokeStyle:'#666' },
Endpoint : "Rectangle",
Anchors : ["TopCenter"],
ConnectionOverlays: [
[ "Arrow", {
location: 1,
id: "arrow",
//length: 14,
foldback: 0.7,
width: 14
} ],
[ "Label", { label: "line", id: "label", cssClass: "aLabel" }]
]
});
var exampleDropOptions = {
hoverClass:"dropHover",
activeClass:"dragActive"
};
var color1 = "#7AB02C";
//var color1 = "#ffa500";
//人口 start
var jx_rk = {
uuid:"jx_rk",
anchor:"RightMiddle",//连接点的位置,可以被覆盖
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector : "Straight",//线条形状,直线
maxConnections:1,
isTarget:true,
dropOptions : { hoverClass: "dropHover", activeClass: "dragActive" },
overlays: [
[ "Label", {
location: [0.5, 1.5],
label: "",
cssClass: "endpointSourceLabel"
}]
]
};
var sqy_rk = {
uuid:"sqy_rk",
anchor:"RightMiddle",//连接点的位置,可以被覆盖
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector : "Straight",//线条形状,直线
maxConnections:1,
isTarget:true,
dropOptions : exampleDropOptions,
overlays: [
[ "Label", {
location: [0.5, 1.5],
label: "",
cssClass: "endpointSourceLabel"
} ]
]
};
var rk_1_1 = {
uuid:"rk_1_1",
anchor:"LeftMiddle",//连接点的位置,可以被覆盖
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector : "Straight",//线条形状,直线
maxConnections:-1,
isTarget:true,
dropOptions : exampleDropOptions
};
var rk_1_1_1 = {
uuid:"rk_1_1_1",
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector : "Straight",//线条形状,直线
maxConnections:-1,
isTarget:true,
dropOptions : exampleDropOptions
};
var rk_1_1_3 = {
uuid:"rk_1_1_3",
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector : "Straight",//线条形状,直线
maxConnections:-1,
isTarget:true,
dropOptions : exampleDropOptions
};
var rk_1_2 = {
uuid:"rk_1_2",
anchor:"RightMiddle",//连接点的位置,可以被覆盖
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1 },//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector: [ "Flowchart", { stub: [40, 60], gap: 5, cornerRadius: 5, alwaysRespectStubs: true } ],
maxConnections:1,
isTarget:true,
dropOptions : exampleDropOptions
};
jsPlumb.addEndpoint("jx_rk", jx_rk);
jsPlumb.addEndpoint("sqy_rk", sqy_rk);
jsPlumb.addEndpoint("rk_1", rk_1_1);//中间点
//左上角为起点,0.2表示相对x的偏移量,0.5表示相对y的偏移量
var anchors_1_1 = [[0, 0.2, 1, 0], [0.8, 1, 0, 1], [0, 0.8, -1, 0], [0.2, 0, 0, -1] ],
maxConnectionsCallback = function(info) {
alert("Cannot drop connection " + info.connection.id + " : maxConnections has been reached on Endpoint " + info.endpoint.id);
};
jsPlumb.addEndpoint("rk_1", {anchor:anchors_1_1}, rk_1_1_1);//上边点
jsPlumb.addEndpoint("rk_1", rk_1_2);
//固定连线
var obj = jsPlumb.connect({uuids:["jx_rk", "rk_1_1_1"]});
obj.getOverlay("label").setLabel("镜像_2_人口");
obj.bind("click", function (component, originalEvent) {
alert("镜像_2_人口")
});
obj = jsPlumb.connect({uuids:["sqy_rk", "rk_1_1"]});
obj.getOverlay("label").setLabel("省全员_2_人口");
obj.bind("click", function (component, originalEvent) {
alert("省全员_2_人口")
});
//人口 end
//法人 start
var fr_3_2 = {
uuid:"fr_3_2",
anchor:"RightMiddle",//连接点的位置,可以被覆盖
endpoint:["Dot", { radius:6 }],//连接点的形状、大小
paintStyle:{ fillStyle:color1},//连接点的颜色
isSource:true,
scope:"green dot",//点击该颜色的时候,其余该颜色的点都会显示虚线框
connectorStyle:{ strokeStyle: "#5c96bc", lineWidth: 2, outlineColor: "transparent", outlineWidth: 4 },//点与点之间连线颜色
connector: [ "Flowchart", { stub: [40, 60], gap: 5, cornerRadius: 5, alwaysRespectStubs: true } ],
maxConnections:-1,
isTarget:true,
dropOptions : exampleDropOptions
};
jsPlumb.addEndpoint("fr_3", fr_3_2);
//法人 end
//绘制箭头
var arrowCommon = { foldback: 0.7, fillStyle: "gray", width: 14 },
overlays = [
[ "Arrow", { location: 1}, arrowCommon ],
[ "Arrow", { location: 0, direction: -1 }, arrowCommon ]//-1表示反向箭头
];
//人口到法人
jsPlumb.connect({uuids:["rk_1_2", "fr_3_2"], overlays:overlays});
//可拖动
jsPlumb.draggable($('._jsPlumb_endpoint_anchor_'));
});
</script>
</head>
<body>
<!-- 人口 begin -->
<div id="jx_rk" class="item">镜像</div>
<div id="sqy_rk" class="item">省全员</div>
<div id="rk_1" class="item">人口</div>
<!-- 人口 end -->
<!-- 法人 begin -->
<div id="fr_3" class="item">法人</div>
<!-- 法人 end -->
</body>
</html>