JsPlum样例

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>

转载于:https://my.oschina.net/sniperLi/blog/496959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值