jquery.jsPlumb实现拓扑图

作者:飞翔的飞起 时间:2024-05-09 10:15:49 

基于jquery.jsPlumb编写拓扑图,供大家参考,具体内容如下

要求:实现公司组织结构拓扑关系,可展开,可收拢;动态数据展示;叶子节点可点击;

实现办法:  

1 国内还有一个插件也比较简单,但是该插件只能全部展开,并不能收拢,放弃了该办法;

 2 最后选择了这个插件,因为相关资料很少,所以每步都是自己摸索出来的;

对数据的要求:因为该插件的每个节点都是一个具有独立不同id的div模块,所以json数据要求有一个id属性,并且所有的id都要不一样;

实现的原理:  

1 先定位所有的节点(这个还简单点,只要依次遍历数据就行);

2 添加拓扑关系;(这个地方比较复杂,尤其是点击节点时,其他节点收缩,直接点展开,里面的循环量特别大,几乎都是在一个大循环里面套用了很多的子循环)

1 html部分(注意事项,里面的图片自己设置)

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
? ? <script type="text/javascript" src="scripts/jquery-1.7.2.js"></script>
? ? <script type="text/javascript" src="scripts/jquery.jsPlumb-1.4.0-all.js"></script>
? ? <script type="text/javascript" src="scripts/test.js"></script>
? ? <style type="text/css">
? ? ? ? .rootNode {
? ? ? ? ? // ?background-color: #79deff;
? ? ? ? ? ? width: 36px;
? ? ? ? ? ? height: 36px;
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? background-image: url(images/monitor_server.png);
? ? ? ? ? ? background-size: 32px 32px;
? ? ? ? ? ? background-repeat: no-repeat;
? ? ? ? ? ? background-position:center;
? ? ? ? ?/* ? -webkit-box-shadow: #909090 0px 0px 10px;
? ? ? ? ? ? -moz-box-shadow: #909090 0px 0px 10px;
? ? ? ? ? ? box-shadow: #909090 0px 0px 10px;*/
? ? ? ? }
? ? ? ? .instanceNode {
? ? ? ? ? // ?background-color: #50d4ff;
? ? ? ? ? ? width: 36px;
? ? ? ? ? ? height: 36px;
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? background-image: url(images/instance_big.png);
? ? ? ? ? ? background-size: 32px 32px;
? ? ? ? ? ? background-repeat: no-repeat;
? ? ? ? ? ? background-position:center;
? ? ? ? ? ? -moz-background-size: 32px 32px;
? ? ? ? ? ? filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/instance_big.png', sizingMethod='scale')\9;
? ? ? ? ? ? -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/instance_big.png',sizingMethod='scale')"\9;
? ? ? ? ? ? cursor:pointer;
? ? ? ? ? ? /* -webkit-box-shadow: #666 0px 0px 10px;
? ? ? ? ? ? -moz-box-shadow: #666 0px 0px 10px;
? ? ? ? ? ? box-shadow: #666 0px 0px 10px; */
? ? ? ? }
? ? ? ? .instanceNode_leaf {
? ? ? ? ? // ?background-color: #50d4ff;
? ? ? ? ? ? width: 36px;
? ? ? ? ? ? height: 36px;
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? background-image: url(images/user_online.png);
? ? ? ? ? ? background-size: 32px 32px;
? ? ? ? ? ? background-repeat: no-repeat;
? ? ? ? ? ? background-position:center;
? ? ? ? ? ? -moz-background-size: 32px 32px;
? ? ? ? ? ? filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/user_online.png', sizingMethod='scale')\9;
? ? ? ? ? ? -ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='images/user_online.png',sizingMethod='scale')"\9;
? ? ? ? ? ? cursor:pointer;
? ? ? ? ? ? /* -webkit-box-shadow: #666 0px 0px 10px;
? ? ? ? ? ? -moz-box-shadow: #666 0px 0px 10px;
? ? ? ? ? ? box-shadow: #666 0px 0px 10px; */
? ? ? ? }
?
? ? ? ? .nodeWord{
? ? ? ? ? ? //font-weight: bold;
? ? ? ? ? ? font-size: 12px;
? ? ? ? ? ? color:white;
? ? ? ? ? ? text-align: center;
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? bottom: -20px;
? ? ? ? ? ? width: 100%;
? ? ? ? ? ??
? ? ? ? }
? ? ? ? .cursorEndpoint{
? ? ? ? ? ? cursor:pointer;
? ? ? ? }
? ? ? ? body{
? ? ? ? ? ? background:#27363F;
? ? ? ? }
? ? </style>
?
</head>
?
<body style="overflow: scroll;">
<div id="top_server" class="rootNode"><div style=""></div></div>
</body>
</html>

2 test.js

var tree_json=[
? ? {
? ? ? ? "id": "1",
? ? ? ? "text": "国核院",
? ? ? ? "iconCls": "icon-org",
? ? ? ? "state": "closed",
? ? ? ? "children": [
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "id": "2",
? ? ? ? ? ? ? ? "text": "土木工程部",
? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "3",
? ? ? ? ? ? ? ? ? ? ? ? "text": "科室一",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "4",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u110",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "5",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u120",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "51",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u120",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "6",
? ? ? ? ? ? ? ? ? ? ? ? "text": "财务",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "7",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u111",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "71",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u111",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ]
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "id": "8",
? ? ? ? ? ? ? ? "text": "建筑工程部",
? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "9",
? ? ? ? ? ? ? ? ? ? ? ? "text": "科室一",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "11",
? ? ? ? ? ? ? ? ? ? ? ? "text": "财务",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "12",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u114",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ]
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "id": "13",
? ? ? ? ? ? ? ? "text": "综合室",
? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "14",
? ? ? ? ? ? ? ? ? ? ? ? "text": "u113",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "141",
? ? ? ? ? ? ? ? ? ? ? ? "text": "u113",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ]
? ? ? ? ? ? },
? ? ? ? ? ? {
? ? ? ? ? ? ? ? "id": "15",
? ? ? ? ? ? ? ? "text": "重庆公司",
? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? "id": "16",
? ? ? ? ? ? ? ? ? ? ? ? "text": "土木工程部",
? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "17",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "科室一",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "18",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "u115",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "19",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "财务",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-org",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "state": "closed",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "children": [
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "id": "20",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "text": "张文涛",
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ]
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ]
? },
? ? {
? ? ? ? "id": "21",
? ? ? ? "text": "建筑工程部",
? ? ? ? "iconCls": "icon-org",
? ? ? ? "state": "closed",
? ? ? ?  "children": [
? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? {
? ? ? ? ? ? ?  "id": "24",
? ? ? ? ? ? ?  "text": "财务",
? ? ? ? ? ? ?  "iconCls": "icon-org",
? ? ? ? ? ? ?  "state": "closed",
? ? ? ? ? ? ?  "children": [
? ? ? ? ? ? ? {
? ? ? ? ? ? ?  "id": "25",
? ? ? ? ? ? ? "text": "李小进",
? ? ? ? ? ? ? "iconCls": "icon-man"
? ? ? ? ? ? ?? }
? ? ? ? ? ? ]
? ? ? ? ?  }
? ? ? ? ? ]
? ? ?  }
? ? ]
? }
]
}
];
?
$.ajax({
? ? url: 'scripts/text.json',
? ? type: 'GET',
? ? dataType: 'json',
? ? data: {},
})
.done(function() {
? ? console.log("success");
? ? myjson=tree_json;
? ? showTopo();
})
.fail(function() {
? ? console.log("error");
})
.always(function() {
? ? console.log("complete");
});
?
?
?
function showTopo(){
?
?? ?$("#top_server").css({"left":"50%","top":"5%"});
?
? ? $(document).on({
? ? ? ? mouseover:function(){$(this).css({"background-color":"#79deff","box-shadow":"#909090 0px 0px 10px",
? ? ? ? ? ? "-webkit-box-shadow": "#909090 0px 0px 10px","-moz-box-shadow": "#909090 0px 0px 10px"});},
? ? ? ? mouseout:function(){$(this).css({"background-color":"","box-shadow":"",
? ? ? ? ? ? "-webkit-box-shadow": "","-moz-box-shadow": ""});},
? ? ? ? click:function(){alert($(this).text());}
? ? },".instanceNode_leaf");
?
?
?? ??? ??? ? var company=myjson[0]["children"]; ?//初始化 ?公司数组
?? ??? ??? ? var companyNumber=company.length; ? //
? ? ? ? ? ? ?var company_department_arr=[]; ? ? ? ? //获取部门数组
? ? ? ? ? ? ?var company_department_sec_arr=[]; ? ? //获取科室数组
?
?? ??? ??? ? //元素的摆放 先摆放公司 部门 科室 员工?
?? ??? ??? ? if(tree_json[0].hasOwnProperty("children")){
?
?? ??? ??? ? ?? ?elementLocation(company,companyNumber);
?? ??? ??? ? }
?? ??? ??? ??
? ? ? ? ? ? ?//开始定义连线和点击事件
?? ??? ??? ? jsPlumb.ready(function() {
?
?? ??? ??? ??? ?jsPlumb.draggable("top_server"); ? ? ? ?//定义可拖拽
?
?? ??? ??? ??? ?var hoverPaintStyle = { lineWidth:2,strokeStyle:"#dedede" }; ?//鼠标经过时线宽度和颜色
?
?? ??? ??? ??? ?jsPlumb.importDefaults({ ?
?? ??? ??? ??? ? ? ?DragOptions : { cursor: 'pointer'}, //拖动时鼠标停留在该元素上显示指针,通过css控制 ?
?? ??? ??? ??? ? ? ?EndpointStyles : { width:10, height:10,cursor: 'pointer'},//连接点的默认颜色 ?
?? ??? ??? ??? ? ? ?Connector : "Straight", //设置连线为直线 ?
?? ??? ??? ??? ? ? ?Endpoint : "Rectangle",//连接点的默认形状 ?
?? ??? ??? ??? ? ? ?Anchor : "Top",//连接点的默认位置 ?
?? ??? ??? ??? ? ? ?MaxConnections:1000,//同上 ?
?? ??? ??? ??? ??? ?ConnectionsDetachable:false,
?? ??? ??? ??? ??? ?HoverPaintStyle:hoverPaintStyle
?? ??? ??? ??? ?}); ?
?? ??? ??? ??? ?var defaults = { ?
?? ??? ??? ??? ? ? ?paintStyle:{ fillStyle:"#B4B9C5" },//设置连接点的颜色 ?
?? ??? ??? ??? ? ? ?connectorStyle:{ strokeStyle:"#B4B9C5", lineWidth:2 },//连线颜色、粗细 ?
?? ??? ??? ??? ? ? ?connector:[ "Flowchart", { stub:[10, 20], gap:5, cornerRadius:2} ],
?? ??? ??? ??? ? ? ?isSource:true,
?? ??? ??? ??? ? ? ?isTarget:true,
?? ??? ??? ??? ? ? ?endpoint:"Blank"
?? ??? ??? ??? ?};?
?
?? ??? ??? ??? ?var rootnode={
?? ??? ??? ??? ??? ?endpoint:["Image", { src:"images/sub.png" }],//设置连接点的形状为圆形 ?
?? ??? ??? ??? ? ? ?paintStyle:{ fillStyle:"#B4B9C5" },//设置连接点的颜色 ?
?? ??? ??? ??? ? ? ?connectorStyle:{ strokeStyle:"green", lineWidth:2 },//连线颜色、粗细 ?
?? ??? ??? ??? ? ? ?//connector:["Straight",{gap:5}],
?? ??? ??? ??? ? ? ?connector:[ "Flowchart", { stub:[10, 20], gap:10, cornerRadius:2} ],
?? ??? ??? ??? ? ? ?cssClass:"cursorEndpoint"
?? ??? ??? ??? ?};
?? ??? ??? ?
?
?? ??? ? ? ? ?var s1=jsPlumb.addEndpoint("top_server", {anchor:"Bottom"},rootnode);//根节点设置?
? ? ? ? ? ? ? //添加拓扑关系
? ? ? ? ? ? ? for(var i=0;i<companyNumber;i++){ ?
? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ?var company_department=company[i].children; ?//四个公司下面的部门
? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.draggable("instance_"+company[i].id); ?//设置四个公司可拖拽
? ? ? ? ? ? ? ? ? ? ? ?var s2=jsPlumb.addEndpoint("instance_"+company[i].id,defaults); ? //设置四个公司的节点
? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.connect({source:s1, target:s2}); ? ? ? ? ? ? ? ? ? ? ? ? ?//连接服务器和是个公司;
? ? ? ? ? ? ? ? ? ? ? ?if(company_department.length>0){
?
? ? ? ? ? ? ? ? ? ? ? ? ? var s2_root=jsPlumb.addEndpoint("instance_"+company[i].id, {anchor:"Bottom"},rootnode); ?//把四个公司设置成根节点
? ? ? ? ? ? ? ? ? ? ? ? ? ? //对公司绑定click事件
? ? ? ? ? ? ? ? ? ? ? ? ? ? s2_root.bind("click", function(endpoint) {?
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(endpoint.getParameter("img")&&endpoint.getParameter("img")=="add"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.setParameter("img","sub");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.setImage("images/sub.png");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(var k=0;k<endpoint.connections.length;k++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.connections[k].setVisible(true);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $("#"+endpoint.connections[k].targetId).show();
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var oid=endpoint.connections[k].targetId.split("_")[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.show("instance_"+oid,true);
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ?//隐藏其他部门以及部门下的组织
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? for(var m=0;m<company.length;m++){?
? ? ? ? ? ? ?if(endpoint.elementId!="instance_"+company[m].id){ ? ??
? ? ? ? ? ? ? ?var conn=jsPlumb.select({source:"instance_"+company[m].id});
? ? ? ? ? ? ? ?  for(var n=0;n<conn.length;n++){
? ? ? ? ? ? ? ? ?$("#"+conn.get(n).targetId).hide();
? ? ? ? ? ? ? ? ? jsPlumb.hide(conn.get(n).targetId,true);
? ? ? ? ? ? ? ? ? var oid=conn.get(n).targetId.split("_")[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ? ? ? var conn_org=jsPlumb.select({source:"instance_"+oid});
? ? ? ? ? ? ? ? ? ?for(var n1=0;n1<conn_org.length;n1++)
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ?$("#"+conn_org.get(n1).targetId).hide();?
? ? ? ? ? ? ? ? ? jsPlumb.hide(conn_org.get(n1).targetId,true);
?
? ? ? ? ? ? ? ? ?var oid_1=conn_org.get(n1).targetId.split("_")[1]; ?
? ? ? ? ? ? ? ? ?var conn_org_l1=jsPlumb.select({source:"instance_"+oid_1});
? ? ? ? ? ? ? ? ? ? ?for(var nn1=0;nn1<conn_org_l1.length;nn1++)
? ? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?  $("#"+conn_org_l1.get(nn1).targetId).hide();?
? ? ? ? ? ? ? ? ? ? ? ??}
?
? ? ? ? ? ? ? ? ? ?? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? conn.get(0).endpoints[0].setParameter("img","add");
? ? ? ? ? ? ? ? conn.get(0).endpoints[0].setImage("images/add.png");
? ? ? ? ? ? ? ? conn.setVisible(false);
? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ?  else
? ? ? ? ? ? {
? ? ? ? ? ? ? var company_department_orgnize=company[m].children;
? ? ? ? ? ? ?  for(var kk=0;kk<company_department_orgnize.length;kk++)
? ? ? ? ? ? ?? {
? ? ? ? ? ? ? ? ? if(company_department_orgnize[kk].hasOwnProperty("children"))
? ? ? ? ? ?  {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize[kk].id}).setVisible(false);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize[kk].id}).get(0).endpoints[0].setParameter("img","add");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize[kk].id}).get(0).endpoints[0].setImage("images/add.png");?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ?? }
? ? ? ? ? ? }
?
? ? ? ? ? }
? ?  ? }
? ? ?? }else{
? ? ? ? ?endpoint.setParameter("img","add");
? ? ? ? ?endpoint.setImage("images/add.png");
? ? ? ?  for(var k=0;k<endpoint.connections.length;k++){
? ? ? ? ? endpoint.connections[k].setVisible(false);
? ? ? ? ? ?$("#"+endpoint.connections[k].targetId).hide();
? ? ? ? ? ?jsPlumb.hide(endpoint.connections[k].targetId,true);
? ? ? ? ? ? ? var oid=endpoint.connections[k].targetId.split("_")[1];
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ?var conn_org=jsPlumb.select({source:"instance_"+oid});
? ? ? ? ? ? ? ? ? for(var n1=0;n1<conn_org.length;n1++)
? ? ? ? ? ? ? ? ?  {
? ? ? ? ? ? ? ? ? ? ? ? $("#"+conn_org.get(n1).targetId).hide();?
? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.hide(conn_org.get(n1).targetId,true);
?
? ? ? ? ? ? ? ? ? ? ? ? var oid_1=conn_org.get(n1).targetId.split("_")[1]; ?
? ? ? ? ? ? ? ? ? ? ? ? var conn_org_l1=jsPlumb.select({source:"instance_"+oid_1});
? ? ? ? ? ? ? ? ? ? ? ? for(var nn1=0;nn1<conn_org_l1.length;nn1++)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?$("#"+conn_org_l1.get(nn1).targetId).hide();?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ?  }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ?  if (window.navigator.userAgent.indexOf('MSIE') > -1) { ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.repaintEverything();
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ??
??//添加部门拓扑关系,也就是连接公司到部门,遍历部门
? ? for(var i1=0;i1<company_department.length;i1++)
? ? ? ? ? {
? ? ? ?  var company_department_orgnize=company_department[i1].children; ?//四个公司下面的部门的组织
?
? ? ? ? jsPlumb.draggable("instance_"+company_department[i1].id); ?//设置部门可拖拽
? ? ? ? var s3=jsPlumb.addEndpoint("instance_"+company_department[i1].id,defaults); ? //设置部门的节点
? ? ? ? jsPlumb.connect({source:s2_root, target:s3}); ? //连接四个公司到部门
? ? ? ? ?? company_department_arr.push(company_department[i1]);
? ? ? ? ? ?if(company_department[i1].hasOwnProperty("children")){?
?
? ? ? ? ? ?var s3_root=jsPlumb.addEndpoint("instance_"+company_department[i1].id, {anchor:"Bottom"},rootnode); ?//把部门设置成根节点
? ? ? ? ? //对部门绑定click事件
? ? ? ? ? ??s3_root.bind("click", function(endpoint) {?
? ? ? ? ? ? ?if(endpoint.getParameter("img")&&endpoint.getParameter("img")=="add"){
? ? ? ? ? ? ? ?endpoint.setParameter("img","sub");
? ? ? ? ? ? ? ?endpoint.setImage("images/sub.png");
? ? ? ? ? ? ? ?for(var k1=0;k1<endpoint.connections.length;k1++){?
? ? ? ? ? ? ? ? ? ? endpoint.connections[k1].setVisible(true);
? ? ? ? ? ? ? ? ? ? ? $("#"+endpoint.connections[k1].targetId).show();
?
? ? ? ? ? ? ? ? ? ? ? var oid1=endpoint.connections[k1].targetId.split("_")[1];?
?
? ? ? ? ? ? ? ? ? ? ? jsPlumb.show("instance_"+oid1,true);
? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? $("#instance_"+oid1).show();?
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
}
? ? //隐藏其他部门下的科室
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ?  for(var mm=0;mm<company_department_arr.length;mm++){?
? ? ? ?if(endpoint.elementId!="instance_"+company_department_arr[mm].id){?
? ? ? ? ? var conn_org1=jsPlumb.select({source:"instance_"+company_department_arr[mm].id});
?
? ? ? ? ? ? ?if(company_department_arr[mm].hasOwnProperty("children"))
? ? ? ? ? ? ? ? {
?
?              for(var nn=0;nn<conn_org1.length;nn++){
? ? ? ? ? ? ? ? ? $("#"+conn_org1.get(nn).targetId).hide();
? ? ? ? ? ? ? ? ? jsPlumb.hide(conn_org1.get(nn).targetId,true);
? ? ? ? ? ? ? ? ? var oid_s=conn_org1.get(nn).targetId.split("_")[1];
?
? ? ? ? ? ? ? ? ?var conn_org_l2=jsPlumb.select({source:"instance_"+oid_s});?
? ? ? ? ? ? ? ? ? for(var nnn1=0;nnn1<conn_org_l2.length;nnn1++)
? ? ? ? ? ? ? ? ? ? ? ?{ ??
? ? ? ? ? ? ? ? ? ? ? ?$("#"+conn_org_l2.get(nnn1).targetId).hide();
?
? ? ? ? ? ? ? ? ? ? ?  jsPlumb.hide(conn_org_l2.get(nnn1).targetId,true);
?
?
? ? ? ? ? ? ? ? ? ? ? var oid_11=conn_org_l2.get(nnn1).targetId.split("_")[1]; ?
? ? ? ? ? ? ? ? ? ? ? var conn_org_l11=jsPlumb.select({source:"instance_"+oid_11});
? ? ? ? ? ? ? ? ? ? ? for(var nnn2=0;nnn2<conn_org_l11.length;nnn2++)
? ? ? ? ? ? ? ? ? ? ? ?  ? {?
? ? ? ? ? ? ? ? ? ? ? ? ? ?  ?$("#"+conn_org_l11.get(nnn2).targetId).hide();?
? ? ? ? ? ? ? ? ? ? ? ?  }
?
?
? ? ? ? ? ? ? ?}
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
     }
?
?        conn_org1.get(0).endpoints[0].setParameter("img","add");
? ? ? ? ?conn_org1.get(0).endpoints[0].setImage("images/add.png");
? ? ? ? ?conn_org1.setVisible(false);
? ? ? ? ? ? ? ?? }
? ?? }
?
? ? ?  else
? ? ? { ??
? ? ? ? ? ?var company_department_orgnize_sec=company_department_arr[mm].children;
? ? ? ? ? ?for(var kkk=0;kkk<company_department_orgnize_sec.length;kkk++)
? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ?  if(company_department_orgnize_sec[kkk].hasOwnProperty("children"))
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize_sec[kkk].id}).setVisible(false); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize_sec[kkk].id}).get(0).endpoints[0].setParameter("img","add");  ? ? ? ? ?jsPlumb.select({source:"instance_"+company_department_orgnize_sec[kkk].id}).get(0).endpoints[0].setImage("images/add.png");?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ?  }else{
? ? ? ? ? endpoint.setParameter("img","add");?
? ? ? ? ? endpoint.setImage("images/add.png");
? ? ? ? ? ?for(var k1=0;k1<endpoint.connections.length;k1++){
? ? ? ? ? ?  endpoint.connections[k1].setVisible(false);
? ? ? ? ? ? $("#"+endpoint.connections[k1].targetId).hide();
? ? ? ? ? ? jsPlumb.hide(endpoint.connections[k1].targetId,true);
? ? ? ? ? ? var oidss=endpoint.connections[k1].targetId.split("_")[1];
?
? ? ? ? ? ?var conn_org_l2=jsPlumb.select({source:"instance_"+oidss});
? ? ? ? ? ? ?for(var nnn1=0;nnn1<conn_org_l2.length;nnn1++)
? ? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? $("#"+conn_org_l2.get(nnn1).targetId).hide();
?
? ? ? ? ? ? ? ? ? ? ?jsPlumb.hide(conn_org_l2.get(nnn1).targetId,true);
?
?
? ? ? ? ? ? ? ? ? ? ??var oid_11=conn_org_l2.get(nnn1).targetId.split("_")[1]; ?
? ? ? ? ? ? ? ? ? ? ? var conn_org_l11=jsPlumb.select({source:"instance_"+oid_11});
? ? ? ? ? ? ? ? ? ? ?  for(var nnn2=0;nnn2<conn_org_l11.length;nnn2++)
? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ?$("#"+conn_org_l11.get(nnn2).targetId).hide();?
? ? ? ? ? ? ? ? ? ? ? ? }
?
?
? ? ? ? ? ? ?  ?}?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (window.navigator.userAgent.indexOf('MSIE') > -1) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.repaintEverything();
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//添加科室拓扑关系,也就是连接部门到科室;
? ? ? ? ? ? ? ? ? ? ? ? ? ? for(var i2=0;i2<company_department_orgnize.length;i2++)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var staff=company_department_orgnize[i2].children; ?//组织下面的个人
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.draggable("instance_"+company_department_orgnize[i2].id); ?//设置组织可拖拽
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var s4=jsPlumb.addEndpoint("instance_"+company_department_orgnize[i2].id,defaults); ? //设置组织的节点
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.connect({source:s3_root, target:s4}); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //连接连接部门到组织
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? company_department_sec_arr.push(company_department_orgnize[i2]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(company_department_orgnize[i2].hasOwnProperty("children"))
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?var s4_root=jsPlumb.addEndpoint("instance_"+company_department_orgnize[i2].id, {anchor:"Bottom"},rootnode); ?//把组织设置成根节点
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//绑定科室点击事件
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s4_root.bind("click", function(endpoint) {?
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(endpoint.getParameter("img")&&endpoint.getParameter("img")=="add"){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.setParameter("img","sub");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.setImage("images/sub.png");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? for(var k2=0;k2<endpoint.connections.length;k2++){?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? endpoint.connections[k2].setVisible(true);
? ? ? ? ? ? ? ? ? ?  $("#"+endpoint.connections[k2].targetId).show();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ?  }
? ?//隐藏其他科室下的人
? ? ? ? for(var mmm=0;mmm<company_department_sec_arr.length;mmm++){?
? ? ? ? ? ? ?  if(endpoint.elementId!="instance_"+company_department_sec_arr[mmm].id){
? ? ? ? ? ? ?  var conn_org_2=jsPlumb.select({source:"instance_"+company_department_sec_arr[mmm].id});
?
? ? ? ? ? ? ??if(company_department_sec_arr[mmm].hasOwnProperty("children"))
? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? for(var nn1=0;nn1<conn_org_2.length;nn1++){
? ? ? ? ? ? ? ? ? ? $("#"+conn_org_2.get(nn1).targetId).hide();
? ? ? ? ? ? ? ? ? ?  jsPlumb.hide(conn_org_2.get(nn1).targetId,true);
? ? ? ? ? ? ? ? ? ? //var oid=conn_org_2.get(nn1).targetId.split("_")[1];?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
?
? ? ? ? ? ? ? ? conn_org_2.get(0).endpoints[0].setParameter("img","add");
? ? ? ? ? ? ? ? conn_org_2.get(0).endpoints[0].setImage("images/add.png");
? ? ? ? ? ? ? ? conn_org_2.setVisible(false);
? ? ? ? ? ? ? ? ?? }
? ? ? ? }
? ? ? }
?  }else{
? ? ? ? ? ? endpoint.setParameter("img","add");
? ? ? ? ? ? endpoint.setImage("images/add.png");
? ? ? ? ? ? ? ? ?for(var k2=0;k2<endpoint.connections.length;k2++){
? ? ? ? ? ? ? ? ? ? endpoint.connections[k2].setVisible(false);
? ? ? ? ? ? ? ? ? ? $("#"+endpoint.connections[k2].targetId).hide();
? ? ? ? ? ? ? ? ? ? jsPlumb.hide(endpoint.connections[k2].targetId,true);
? ? ? ? ? ? ? ? ? ?  var oid=endpoint.connections[k2].targetId.split("_")[1];
? ? ? ? ? ? ? ? ? ?  //$("div[id*=_"+oid+"_]").hide();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (window.navigator.userAgent.indexOf('MSIE') > -1) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.repaintEverything();
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? });
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ?  for(var i3=0;i3<staff.length;i3++)
? ? ? ? ? ? ?? {
? ? ? ? ? ? ? ? ? //var staff=company_department_orgnize[i2].children; ?//组织下面的个人
? ? ? ? ? ? ? ? ? jsPlumb.draggable("instance_"+staff[i3].id); ?//设置组织可拖拽
? ? ? ? ? ? ? ? ? var s5=jsPlumb.addEndpoint("instance_"+staff[i3].id,defaults); ? //设置组织的节点
? ? ? ? ? ? ? ? ? jsPlumb.connect({source:s4_root, target:s5}); ? //连接连接部门到组织
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ?}?

?
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? }

?
? ? ? ? ? ? ? }
?
s1.bind("click", function(endpoint) {
? ? if(endpoint.getParameter("img")&&endpoint.getParameter("img")=="add"){
? ? ? ? ? ? endpoint.setParameter("img","sub");
? ? ? ? ? ? endpoint.setImage("images/sub.png");
? ? ? ? ? ? ?jsPlumb.select({source:"top_server"}).setVisible(true);?
? ? ? ? ? ? ? ?for(var i=0;i<company.length;i++){
? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.show("instance_"+company[i].id,true);
? ? ? ? ? ? ? ? ? ? ? ? ? ? $("#instance_"+company[i].id).show();
? ? ? ? ? ? ? ? ? ? ? ? ? ? var company_department=company[i].children; //alert(company[i].id);?
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(company_department.length>0){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.select({source:"instance_"+company[i].id}).setVisible(false);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.select({source:"instance_"+company[i].id}).get(0).endpoints[0].setParameter("img","add");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.select({source:"instance_"+company[i].id}).get(0).endpoints[0].setImage("images/add.png");
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? endpoint.setParameter("img","add");
? ? ? ? ? ? endpoint.setImage("images/add.png");
? ? ? ? ? ? ?  jsPlumb.hide("top_server");
? ? ? ? ? ? ?  for(var i=0;i<company.length;i++){
? ? ? ? ? ? ? ? ? var company_department=company[i].children;
? ? ? ? ? ? ? ? ? jsPlumb.hide("instance_"+company[i].id,true);
? ? ? ? ? ? ? ? ? for(var j=0;j<company_department.length;j++){
? ? ? ? ? ? ? ? ? ? ?  jsPlumb.hide("instance_"+company_department[j].id,true);
? ? ? ? ? ? ? ? ? ? ?  if(company_department[j].hasOwnProperty("children"))
? ? ? ? ? ? ? ? ? ? ? ? ?  {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? var orgnize=company_department[j].children;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?for(var j1=0;j1<orgnize.length;j1++)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.hide("instance_"+orgnize[j1].id,true);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? $(".nodeWord").parent().hide();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? if (window.navigator.userAgent.indexOf('MSIE') > -1) {
? ? ? ? ? ? ? ? ? ? ? ? jsPlumb.repaintEverything();
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });
? ? ?
?
? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ??
?
? ? ? ? ? ? ? ? ? $(window).resize(function(){
? ? ? ? ? ? ? ? ? ? jsPlumb.repaintEverything();
? ? ? ? ? ? ? ? });
?
?? ??? ? ? ??
?? ??? ??? ?
?? ??? ??? ? });
}
?
?
/*
?* 元素摆放位置--对称分布
?*/
function elementLocation(nodeArr,nodeNumber){
?? ?if(nodeNumber%2==1){//总节点数是奇数
?? ??? ?
?? ??? ??? ?//var num=parseInt(nodeNumber/2);
?? ??? ??? ?for(var i=0;i<nodeArr.length;i++){ ?
?
? ? ? ? ? ?if(i<parseInt(nodeNumber/2)){
? ? ? ? ? ? ? ? leftLoc=50-10*(i+1);
? ? ? ? ? ??
? ? ? ? ? ? }else if(i>parseInt(nodeNumber/2)){?
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? leftLoc=50+10*(i-parseInt(nodeNumber/2));?
? ? ? ? ? ? ? ??
? ? ? ? ? ? }else{
? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? leftLoc=50;
? ? ? ? ? ? ? ??
? ? ? ? ? ? }
?
?? ??? ??? ??? ?if(nodeArr[i].hasOwnProperty("children")){
?
?? ??? ??? ??? ??? ?var html="<div id='instance_"+nodeArr[i].id+"' class=\"instanceNode\" style='top:20%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+nodeArr[i].text+"</div></div>";
?? ??? ??? ??? ?$("body").append(html);
?
?? ??? ??? ??? ?var companyLoc=leftLoc; ?//在本例中表示公司横向定位,做这个是方便公司下面的部门定位;
?? ??? ??? ??? ?var companyDepartArr=nodeArr[i].children;
? ? ? ? ? ? ? ? var companyDepartArrLength=companyDepartArr.length;
?? ??? ??? ??? ? ? ?companyDepartLocation(companyLoc,companyDepartArr,companyDepartArrLength); ?//部门定位
?
?? ??? ??? ??? ?}
?
?? ??? ??? ??? ?else{
?? ??? ??? ??? ??? ?var html="<div id='instance_"+nodeArr[i].id+"' class=\"instanceNode_leaf\" style='top:20%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+nodeArr[i].text+"</div></div>";
?? ??? ??? ??? ?$("body").append(html);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?
?? ??? ?
?? ?}else if(nodeNumber%2==0){//总节点数是偶数
?? ?
?? ??? ??? ?//var num=parseInt(nodeNumber/2);
?? ??? ??? ?for(var i=0;i<nodeArr.length;i++){
?
? ? ? ? ? ? ? ? ? ? if(i+1<=parseInt(nodeNumber/2)){?
? ? ? ? ? ? ? ? leftLoc=50-5-10*i;?
? ? ? ? ? ??
? ? ? ? ? ? }
? ? ? ? ? ? else if(i+1>parseInt(nodeNumber/2)){?
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? leftLoc=50+5+10*(i-parseInt(nodeNumber/2));
? ? ? ? ? ? ? ??
? ? ? ? ? ? }
?
?? ??? ??? ??? ?if(nodeArr[i].hasOwnProperty("children")){
?? ??? ??? ??? ??? ?var html="<div id='instance_"+nodeArr[i].id+"' class=\"instanceNode\" style='top:20%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+nodeArr[i].text+"</div></div>";
?? ??? ??? ??? ?$("body").append(html);
?? ??? ??? ??? ?var companyLoc = leftLoc;
?? ??? ??? ??? ?var companyDepartArr=nodeArr[i].children;
? ? ? ? ? ? ? ? var companyDepartArrLength=companyDepartArr.length;
?? ??? ??? ??? ? ? ?companyDepartLocation(companyLoc,companyDepartArr,companyDepartArrLength); ?//部门定位
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?var html="<div id='instance_"+nodeArr[i].id+"' class=\"instanceNode_leaf\" style='top:20%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+nodeArr[i].text+"</div></div>";
?? ??? ??? ??? ?$("body").append(html);
?? ??? ??? ??? ?}
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ?
?? ??? ?
?? ?}
}
?
//部门定位
function companyDepartLocation(nodeLoc,nodeArr,nodeNumber){
?? ?if(nodeNumber%2==1){
?? ??? ?for(var j=0;j<nodeNumber;j++){
?? ??? ??? ?var department=nodeArr[j],leftLoc;
?? ??? ??? ?if(j<parseInt(nodeNumber/2)){
?? ??? ??? ??? ?leftLoc=nodeLoc-5*(j+1);
?? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?else if(j>parseInt(nodeNumber/2)){
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5*j;
?? ??? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?else{
?? ??? ??? ??? ?
?? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc;
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?
?? ??? ??? ?if(department.hasOwnProperty("children")){
?
?? ??? ??? ??? ?var html="<div id='instance_"+department.id+"' class='instanceNode' style='top:40%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+department.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?? ? ? ? ? ? ? ?var departmentOrgnize=department.children;
? ? ? ? ? ? ? ? var departmentOrgnizeLength=departmentOrgnize.length;
?? ? ? ? ? ? ? ?var departmentOrgnizeLoc=leftLoc;
?? ? ? ? ? ? ? ? departmentOrgnizeLocation(departmentOrgnizeLoc,departmentOrgnize,departmentOrgnizeLength); ?//组织定位
?? ??? ??? ?}
?
?? ??? ??? ?else{
?
?? ??? ??? ??? ?var html="<div id='instance_"+department.id+"' class='instanceNode_leaf' style='top:40%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+department.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?
?? ??? ??? ?}
?? ??? ??? ?
?
?? ? ? ? ?
?
?? ??? ?}
?? ?}else if(nodeNumber%2==0){?
?
?? ??? ?for(var j=0;j<nodeNumber;j++){
?
?? ??? ??? ?var department=nodeArr[j],leftLoc;
?
?? ??? ??? ?if(j+1<=parseInt(nodeNumber/2)){?
?? ??? ??? ??? ?leftLoc=nodeLoc-5-5*j;?
?? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?else if(j+1>parseInt(nodeNumber/2)){?
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5+5*(j-parseInt(nodeNumber/2));
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?? ??? ??? ?if(department.hasOwnProperty("children")){
?
?
?? ??? ??? ?var html="<div id='instance_"+department.id+"' class='instanceNode' style='top:40%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+department.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?
?? ? ? ? ? ? ? ? ? var departmentOrgnize=department.children;
? ? ? ? ? ? ? ? ? ?var departmentOrgnizeLength=departmentOrgnize.length;
? ? ? ? ? ? ? ? ? ?var departmentOrgnizeLoc=leftLoc; ?
? ? ? ? ? ? ? ? ? ?departmentOrgnizeLocation(departmentOrgnizeLoc,departmentOrgnize,departmentOrgnizeLength); ?//组织定位
?? ? ? ? ? ? ? ? ?
?
?? ??? ??? ?}
?
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?var html="<div id='instance_"+department.id+"' class='instanceNode_leaf' style='top:40%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+department.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?
?? ??? ??? ?}
?
?
?? ??? ?}
?? ?}
}
?
//组织定位
function departmentOrgnizeLocation(nodeLoc,nodeArr,nodeNumber){?
?
? ? ? ? ? ? if(nodeNumber%2==1){
?? ??? ?
?? ??? ?for(var j=0;j<nodeNumber;j++){
?? ??? ??? ?var orgnize=nodeArr[j],leftLoc;
?? ??? ??? ?if(j<parseInt(nodeNumber/2)){
?? ??? ??? ??? ?leftLoc=nodeLoc-5*(j+1);
?? ??? ??? ?
?? ??? ??? ?}else if(j>parseInt(nodeNumber/2)){
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5*(j-parseInt(nodeNumber/2));
?? ??? ??? ??? ?
?? ??? ??? ?}else{
?? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc;
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?? ??? ??? ?if(orgnize.hasOwnProperty("children")){
?? ??? ??? ??? ?var html="<div id='instance_"+orgnize.id+"' class='instanceNode' style='top:60%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+orgnize.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?
?? ? ? ? ? ? ? ? ? var staffArr=orgnize.children;
? ? ? ? ? ? ? ? ? ?var staffLength=staffArr.length; ?
? ? ? ? ? ? ? ? ? ?var staffLoc=leftLoc;?
? ? ? ? ? ? ? ? ? ?staffLocation(staffLoc,staffArr,staffLength); ?//员工定位
?
?
?? ??? ??? ?}
?
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?var html="<div id='instance_"+orgnize.id+"' class='instanceNode_leaf' style='top:60%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+orgnize.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?? ??? ??? ?}
?? ??? ??? ?
?
?
?? ??? ?}
?? ?}
?
?? ?else if(nodeNumber%2==0){?
?? ?
?? ??? ?for(var j=0;j<nodeNumber;j++){
?? ??? ??? ?var orgnize=nodeArr[j],leftLoc;
?? ??? ??? ?if(j+1<=parseInt(nodeNumber/2)){
?? ??? ??? ??? ?leftLoc=nodeLoc-5-5*j;?
?? ??? ??? ??? ?
?? ??? ??? ?}else if(j+1>parseInt(nodeNumber/2)){
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5+5*(j-parseInt(nodeNumber/2));
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?? ??? ??? ?if(orgnize.hasOwnProperty("children")){?
?? ??? ??? ?var html="<div id='instance_"+orgnize.id+"' class='instanceNode' style='top:60%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+orgnize.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?
?? ? ? ? ? ? ? ? ? var staffArr=orgnize.children;
? ? ? ? ? ? ? ? ? ?var staffLength=staffArr.length; ?
? ? ? ? ? ? ? ? ? ?var staffLoc=leftLoc;?
? ? ? ? ? ? ? ? ? ? ? ?staffLocation(staffLoc,staffArr,staffLength); ?//员工定位
?? ? ? ? ? ? ?}
?
?? ? ? ? ? ? ?else
?? ? ? ? ? ? ?{
?? ? ? ? ? ? ??? ?var html="<div id='instance_"+orgnize.id+"' class='instanceNode_leaf' style='top:60%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+orgnize.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?? ? ? ? ? ? ?}
?
?? ? ? ? ? ??
?? ??? ?}
?? ?}
?
}
?
//员工定位
function staffLocation(nodeLoc,nodeArr,nodeNumber){?
?
?? ? ?if(nodeNumber%2==1){?
?? ??? ?
?? ??? ?for(var j=0;j<nodeNumber;j++){
?? ??? ??? ?var staff=nodeArr[j],leftLoc;
?? ??? ??? ?if(j<parseInt(nodeNumber/2)){
?? ??? ??? ??? ?leftLoc=nodeLoc-5*(j+1);
?? ??? ??? ?
?? ??? ??? ?}else if(j>parseInt(nodeNumber/2)){
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5*(j-parseInt(nodeNumber/2)); ?
?? ??? ??? ??? ?
?? ??? ??? ?}else{
?? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc;
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?? ??? ??? ?if(staff.hasOwnProperty("children")){
?? ??? ??? ??? ?var html="<div id='instance_"+staff.id+"' class='instanceNode' style='top:80%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+staff.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?
?? ? ? ? ??
?
?
?? ??? ??? ?}
?
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?var html="<div id='instance_"+staff.id+"' class='instanceNode_leaf' style='top:80%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+staff.text+"</div></div>";
?? ? ? ? ? ? ? ?$("body").append(html);
?? ??? ??? ?}
?? ??? ??? ?
?
?
?? ??? ?}
?? ?}
?
?? ?else if(nodeNumber%2==0){?
?? ?
?? ??? ?for(var j=0;j<nodeNumber;j++){
?? ??? ??? ?var staff=nodeArr[j],leftLoc;
?? ??? ??? ?if(j+1<=parseInt(nodeNumber/2)){
?? ??? ??? ??? ?leftLoc=nodeLoc-5-5*j;?
?? ??? ??? ??? ?
?? ??? ??? ?}else if(j+1>parseInt(nodeNumber/2)){
?? ??? ??? ??? ?
?? ??? ??? ??? ??? ?leftLoc=nodeLoc+5+5*(j-parseInt(nodeNumber/2));
?? ??? ??? ??? ?
?? ??? ??? ?}
?
?? ??? ??? ?if(staff.hasOwnProperty("children")){
?? ??? ??? ?var html="<div id='instance_"+staff.id+"' class='instanceNode' style='top:80%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+staff.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?
?? ? ? ? ? ? ?}
?
?? ? ? ? ? ? ?else
?? ? ? ? ? ? ?{
?? ? ? ? ? ? ??? ?var html="<div id='instance_"+staff.id+"' class='instanceNode_leaf' style='top:80%;left:"+parseInt(leftLoc)+"%'><div class='nodeWord'>"+staff.text+"</div></div>";
?? ? ? ? ? ? ? ? ?$("body").append(html);
?? ? ? ? ? ? ?}
?
?? ? ? ? ? ??
?? ??? ?}
?? ?}
?
?
}

3、最后的效果

jquery.jsPlumb实现拓扑图

来源:https://blog.csdn.net/sinat_34783352/article/details/76653657

标签:jquery.jsPlumb,拓扑图
0
投稿

猜你喜欢

  • asp三天学好ADO对象之第二天

    2008-10-09 12:49:00
  • python利用7z批量解压rar的实现

    2021-05-02 18:58:31
  • 使用MyISAM表和InnoDB的一些记录

    2009-12-20 18:21:00
  • Python中带时区的日期转换工具类总结

    2023-04-02 11:05:40
  • MySQL中进行跨库查询的方法示例

    2024-01-26 10:27:39
  • Python基于yaml文件配置logging日志过程解析

    2022-04-02 10:50:36
  • Pandas中的unique()和nunique()区别详解

    2022-02-06 21:51:05
  • vuejs实现ready函数加载完之后执行某个函数的方法

    2024-05-29 22:48:43
  • python socket网络编程之粘包问题详解

    2023-10-13 17:40:10
  • pytorch实现ResNet结构的实例代码

    2022-12-31 01:50:48
  • 巧用Dreamweaver MX设计导航栏特效

    2009-07-10 13:17:00
  • vue 项目代码拆分的方案

    2024-06-05 09:17:56
  • 深入解析python中的实例方法、类方法和静态方法

    2022-07-23 09:05:57
  • asp无组件实现画简单图形的类

    2004-06-17 13:30:00
  • Python 格式化打印json数据方法(展开状态)

    2023-10-07 05:29:50
  • matplotlib画混淆矩阵与正确率曲线的实例代码

    2021-09-21 05:41:10
  • 在ASP.NET 2.0中操作数据之十二:在GridView控件中使用TemplateField

    2023-07-07 07:02:50
  • 详细讲解HTTP协议工作方式

    2022-01-08 11:55:59
  • SQL Server使用导出向导功能

    2024-01-26 08:52:30
  • JavaScript观察者模式(经典)

    2024-04-22 22:42:05
  • asp之家 网络编程 m.aspxhome.com