`

jsplumb综合记录

阅读更多
var firstInstance = jsPlumb.getInstance();
firstInstance.importDefaults({
  Connector : [ "Bezier", { curviness: 150 } ],
  Anchors : [ "TopCenter", "BottomCenter" ]
});

firstInstance.connect({
  source:"element1", 
  target:"element2", 
  scope:"someScope" 
});

Changing Element Id
jsPlumb.setId(el, newId)
jsPlumb.setIdChanged(oldId, newId)

Component	Class
Endpoint	jsplumb-endpoint
Connector	jsplumb-connector
Overlay	jsplumb-overlay

set container
jsPlumb.Defaults.Container
jsPlumb.setContainer($("body"));
jsPlumb.setContainer(document.getElementById("foo"));
jsPlumb.setContainer("containerId");

Also Important If you happen to be using jsPlumb's draggable method to make other parts of your UI draggable (ie. not just things you're plumbing together), 
be careful not to call draggable on the element that is acting as the Container for the current instance, or you will see some odd situations occur when dragging. 
It is suggested that the best thing to do if you wish to use jsPlumb to enable dragging on non-plumbed elements is to create a new instance:
var nonPlumbing = jsPlumb.getInstance();
nonPlumbing.draggable("some element");


jsPlumb.addEndpoint(someDiv, { endpoint options });
jsPlumb.connect({ source:someDiv, target:someOtherDiv });


//挂起绘图
//默认每调用一次connect or addEndpoint就会引起关联元素的重绘(因为要画出anchor、endpoint、connector、overlay)
//这样如果有多个connect or addEndpoint操作就会引出多次绘图,在一些慢浏览器上会造成bad experience
//因此应该在需要多次connect or addEndpoint操作之前声明阻止绘图,在操作完成之后再一次过把全部图画出来(默认第二个参数为true时会调用repaintEverything方法)
jsPlumb.setSuspendDrawing(true);
...
- load up all your data here -
...
jsPlumb.setSuspendDrawing(false, true);
或者使用函数模版
jsPlumb.batch(fn, [doNotRepaintAfterwards]);	//	第二个参数设置为true时,不会把图画出来

------------------------------------------------
Anchor用来设置position和rotation

模版:
jsPlumb.addEndpoint("someElement", {
  endpoint:"Dot",
  anchor:[ 0.5, 1, 0, 1, 0, 50 ]
});

anchor:[ 0.5, 1, 0, 1, 0, 50 ]	
前两个是设置anchor的x、y坐标的(相对于someElement元素),取值范围为0-1,是一个百分比数值,x表示相对于someElement的宽度,y表示相对于someElement的高度
接着的两个参数是设置曲线的发射方向的,取值范围是1、0、-1,例如[-1,0]表示曲线由端点的左方发出,[0,1]表示曲线由端点的下方发出,[-1,1]表示曲线有端点的左下方发出
最后两个参数是设置端点离端点设定位置(就是最开始的两个参数所设定的位置)的远离距离的,也就是端点最后确定展示的位置

jsPlumb.addEndpoint("someDiv", {
    endpoint:"Dot",
    anchor:[ "Perimeter", { shape:"Square", anchorCount:150 }]
});
//anchor:["Continuous", { faces:[ "top", "left" ] } ]
------------------------------------------------

connector
"Straight", {"stub": 10, "gap": 0}  stub与gap都是设置直线离点的偏移距离

You can specify one or more overlays when making a call to jsPlumb.connect, jsPlumb.addEndpoint or 
jsPlumb.makeSource (but not jsPlumb.makeTarget: overlays are always derived from what the source of a Connection defines) 

------------------------------------------------

addEndpoint与makeSource、makeTarget的区别是前者会在元素上生成端点,而后者不会生成端点,只有在真正连接时才生成端点

Note that this does not affect existing Connections. It affects only Connections that are created after you set the new Type(s) on an Endpoint.
为端点添加type,并不会也作用到已有的connection,只会作用到之后从这端点拖拽出的connection

var endpointOptions = { 
  isTarget:true, 
  uniqueEndpoint:true,	//只产生一个端点
  endpoint:"Rectangle", 
  paintStyle:{ fillStyle:"gray" } 
};

connection很多特性默认来自endpoint的属性,而作为有source,则connection和target的特性默认来自source

------------------------------------------------

var arrowCommon = { foldback: 0.7, fillStyle: color, width: 14 },
	overlays = [
		[ "Arrow", { location: 0.7 }, arrowCommon ],
		[ "Arrow", { location: 0.3, direction: -1 }, arrowCommon ]
	];
instance.connect({source:"chartWindow2", target:"chartWindow5", overlays: overlays});	//这种声明了源和目的的只会展示一个arrow(由源点指向目的点的)
instance.connect({uuids: ["chartWindow3-bottom", "chartWindow6-top" ], overlays: overlays, detachable: true, reattach: true});//这种没有声明源和目的,会生成两个arrow

------------------------------------------------

sample:
jsPlumb.connect({
  ...
  overlays:[ 
    "Arrow", 
      [ "Label", { label:"foo", location:0.25, id:"myLabel" } ]
    ],
  ...
});

var e = jsPlumb.addEndpoint("someElement");
e.addOverlay([ "Arrow", { width:10, height:10, id:"arrow" }]); 

var c = jsPlumb.connect({
  source:"d1", 
  target:"d2", 
  overlays:[
    [ "Label", {label:"FOO", id:"label"}]
  ] 
});
var label = c.getOverlay("label");
/*	显示隐藏overlay的方法
	// now you can hide this label:
	label.setVisible(false);
	// there are also hide/show methods:
	label.show();
	label.hide();
	//或者
	c.hideOverlay("label");
	c.showOverlay("label");
	c.removeOverlay("label");
*/
console.log("Label is currently", label.getLabel());
label.setLabel("BAR");
console.log("Label is now", label.getLabel());

Both Connections and Endpoints support Label Overlays, and because changing labels is quite a common operation, 
setLabel and getLabel methods have been added to these objects:
var conn = jsPlumb.connect({
  source:"d1", 
  target:"d2",
  label:"FOO"
});
console.log("Label is currently", conn.getLabel());
conn.setLabel("BAR");
console.log("Label is now", conn.getLabel());
//setLabel through function
conn.setLabel(function(c) {
  var s = new Date();
  return s.getTime() + "milliseconds have elapsed since 01/01/1970";
});

//自定义overlay
var conn = jsPlumb.connect({
  source:"d1",
  target:"d2",
  paintStyle:{
    strokeStyle:"red",
    lineWidth:3
  },
  overlays:[
    ["Custom", {
      create:function(component) {
        return $("<select id='myDropDown'><option value='foo'>foo</option><option value='bar'>bar</option></select>");                
      },
      location:0.7,
      id:"customOverlay"
    }]
  ]
});

var common = {
    cssClass:"myCssClass"
};
jsPlumb.connect({
  source:"someDiv",
  target:"someOtherDiv",
  anchor:[ "Continuous", { faces:["top","bottom"] }],
  endpoint:[ "Dot", { radius:5, hoverClass:"myEndpointHover" }, common ],
  connector:[ "Bezier", { curviness:100 }, common ],
  overlays: [
        [ "Arrow", { foldback:0.2 }, common ],
        [ "Label", { cssClass:"labelClass" } ]  
    ]
});


 

分享到:
评论

相关推荐

    jsplumb和jsplumbtoolkit实例

    5. **状态管理**:记录和恢复状态,方便实现历史记录和撤销/重做功能。 6. **多选操作**:用户可以同时选择多个元素进行批量操作。 ### 实例应用 JSPlumb和JSPlumbToolkit的实例通常包括以下步骤: 1. **初始化**...

    jsplumb实现表格字段连线_JsPlumb 动态_jsplumb_jsplumb.min.js_jsplumb拖拽生成

    JsPlumb是一个JavaScript库,主要用于在网页上创建和管理元素之间的连接或连线。它在UI设计,特别是数据可视化和流程图构建中非常有用。在这个场景中,`jsplumb`被用于实现表格字段之间的连线,这在数据库设计中非常...

    jsplumb中文文档+示例项目

    **jsPlumb库详解及中文文档** jsPlumb是一个JavaScript库,主要用于在Web页面上创建可视化连接或关系图。它支持HTML元素之间的动态连接,并提供了一系列丰富的配置选项和功能,适用于构建各种数据可视化应用,如...

    jsPlumb社区版+demo

    **jsPlumb技术详解与示例解析** **一、jsPlumb概述** `jsPlumb` 是一个开源的JavaScript库,专门用于在Web页面上创建和管理视觉连接(也称为连线或连接器)。这个库利用HTML5 Canvas、SVG或者VML技术,允许用户在...

    jsplumb_v1.zip_jsplumb_jsplumb拖拽生成_observev77_panloh_流程 拖拽

    **JSPlumb库详解与应用** JSPlumb是一款强大的JavaScript库,主要用于在Web页面上创建可视化连接和流程图。这个库特别适用于需要动态构建和编辑流程、网络或关系图的项目。JSPlumb_v1.zip文件包含的是JSPlumb的一个...

    jsplumb-js包.zip

    **JSPlumb库详解** JSPlumb是一款强大的JavaScript库,专为在Web页面上创建可视化连接和关系图而设计。这个“jsplumb-js包.zip”文件包含了JSPlumb库的相关资源,允许开发者轻松地在HTML元素之间绘制连接线,实现...

    jsplumb-master_jsplumb_

    **JSPlumb库详解** JSPlumb是一款强大的JavaScript库,专为在Web页面上构建可交互的连接(连线)和图形布局而设计。这个库的名字来源于"JavaScript plumbing",意指它像管道工一样,帮助你搭建网页元素之间的连接。...

    jsPlumb 完整实例

    **jsPlumb 深入理解与应用** jsPlumb 是一个开源的 JavaScript 库,专为构建可拖动和可调整的流程图而设计。它利用 HTML5 的 canvas、SVG 和 VML 技术,使得在网页上创建和操作可视化连接变得简单易行。在“jsPlumb...

    一个JsPlumb demo

    **JsPlumb库详解与应用实例** JsPlumb是一个基于JavaScript的开源库,它允许开发者在Web页面上绘制各种形状之间的连接线,如箭头、曲线或直线,从而实现动态的图表、流程图或者建模工具。这个"一个JsPlumb demo...

    jsplumb学习文档

    自1.1.0版本起,jsPlumb支持与jQuery、MooTools和YUI3这三大JavaScript库集成,使得它在不同框架下都能轻松应用。该库的源代码是开源的,遵循MIT许可证,由Google托管。 在开始使用jsPlumb之前,了解其浏览器兼容性...

    基于VUE+JsPlumb的流程设计器源码.zip

    基于VUE+JsPlumb的流程设计器源码.zip基于VUE+JsPlumb的流程设计器源码.zip基于VUE+JsPlumb的流程设计器源码.zip基于VUE+JsPlumb的流程设计器源码.zip基于VUE+JsPlumb的流程设计器源码.zip基于VUE+JsPlumb的流程设计...

    jsplumb中文说明文档+demo

    **JSPlumb简介** JSPlumb是一个JavaScript库,专门用于在网页上创建视觉连接或关系图。这个库广泛应用于流程图、工作流编辑器、网络拓扑图等场景,允许用户通过直观的拖放操作来建立和修改元素之间的连接。由于提供...

    使用 jsPlumb 绘制拓扑图的通用方法

    在IT领域,尤其是在Web开发中,可视化工具的使用越来越普遍,其中之一就是利用jsPlumb库来绘制拓扑图。jsPlumb是一个JavaScript库,专门用于在HTML元素之间创建视觉连接,这在展示网络架构、系统组件关系或者流程图...

    jsplumb实例及API

    **jsPlumb简介** jsPlumb是一个JavaScript库,它允许你在网页上创建视觉连接,就像管道一样,利用了Canvas元素的特性。对于不支持Canvas的旧浏览器,它使用Google的ExplorerCanvas脚本来提供兼容性。jsPlumb可以与...

    jsPlumb-2.2.3.js

    jsPlumb-2.2.3.js

    jsPlumb-2.2.8-拖拽

    **jsPlumb库详解与拖拽连接功能** jsPlumb是一个强大的JavaScript库,专注于实现页面元素之间的连接功能。它提供了一种直观的方式来创建图形化的、交互式的UI,特别是在流程图、网络拓扑图或者关系图等领域。...

    jsPlumb连线实例

    **jsPlumb连线实例** jsPlumb是一款强大的JavaScript库,专为HTML元素之间的连线功能而设计,它在网页上创建视觉连接提供了简单易用的API。这个实例是关于如何使用jsPlumb在HTML5环境中创建连线的一个基础示例,...

    jsPlumb完整实例

    **jsPlumb库详解** `jsPlumb`是一款强大的JavaScript库,主要用于在Web页面上创建可视化连接或流程图。这个库特别适用于需要构建交互式、动态的UI元素,如流程图、工作流图表或者网络拓扑图的应用。通过`jsPlumb`,...

    最完整的jsPlumb流程图demo

    **jsPlumb库详解与流程图应用** jsPlumb是一个JavaScript库,专为网页应用程序提供图形化连接功能。它使得用户能够通过拖放操作在页面上创建和编辑流程图,适用于构建工作流、数据可视化、网络拓扑图等多种场景。这...

    jsplumb例子及中文API

    **JSPlumb库详解与应用** JSPlumb是一款强大的JavaScript库,主要用于在Web页面上创建可视化连接或工作流。这个库特别适用于需要构建图形化界面、流程图或网络拓扑结构的应用。它允许用户通过纯JavaScript来绘制和...

Global site tag (gtag.js) - Google Analytics