`

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" } ]  
    ]
});


 

分享到:
评论

相关推荐

    流程图渲染实现及分支节点展开收起功能

    在IT行业中,流程图是一种非常重要的工具,它用于可视化地表示程序、系统或业务过程中的步骤顺序。...理解并掌握这些知识点,不仅可以帮助我们创建出美观易用的流程图,还能提升我们在软件开发中的综合能力。

    下载的资源,下载后解压

    python->exe

    前段web开发实战-哪吒2哪吒闹海网站(超酷哪吒主题网页,HTML+CSS 带你畅游)

    宝子们,快来看看这个超炫的哪吒主题网页!用 HTML 和 CSS 精心打造,有酷炫的头部导航、精彩的横幅内容,还有各种哪吒相关人物介绍和超燃票房海报。代码简单易懂,非常适合前端小白学习,一起动手搭建属于自己的哪吒世界吧!

    Java毕业设计-SpringBoot+Vue的家乡特色推荐系统(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    2023年专升本计算机复习题.pdf

    2023年专升本计算机复习题.pdf

    基于SSM+JSP的班级同学录网站+数据库(Java毕业设计,包括源码,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:jsp 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    【工程项目】MATLAB虫害监测(带识别率).zip

    【工程项目】MATLAB虫害监测(带识别率)

    金刚石化学机械抛光(CMP)中层状双氢氧化物催化作用研究及应用

    内容概要:本文详细研究了金刚石(Single Crystal Diamond, SCD)化学机械抛光(CMP)过程中,抛光浆料的组成成分对其表面质量的影响。通过对浆料的化学成分(氧化剂种类及浓度、催化剂种类)及机械因素(磨料粒径)进行系统性探索,研究揭示了氧化剂、磨料和催化剂之间复杂的相互作用关系。重点介绍了层状双氢氧化物(Layered Double Hydroxides, LDH)的应用和芬顿反应机理,探讨其对提高抛光效果的独特贡献,特别是表面粗糙度和质量的提升。实验中通过一系列对照测试比较不同浆料配置对抛光结果的不同影响,得出了具体的最优配置参数,实现了Ra约为0.109 nm的原子级平整表面。 适合人群:从事CMP工艺研究的专业人士、材料科学及物理学相关背景研究人员和技术人员、关注高端材料制备与处理的企业研发人员。 使用场景及目标:适用于需要深入了解CMP技术细节及应用的科学研究项目;针对希望提升超硬材料如金刚石表面加工品质的实际工业生产环境。本研究所建立的最佳浆料配比及相应抛光参数对实现高效能CMP处理流程有着重要的指导意义,尤其有助于优化半导体器件制造和其他高精度要求的技术

    基于JAVA的机场航班起降与协调管理系统&毕业设计&毕业论文&数据库&演示视频&源代码

    本次项目是设计一个基于JAVA的机场航班起降与协调管理系统。 (1)在经济可行性上来分析的话,该软件是机场内部使用的一个指挥协调软件,属于航空安全投资,本软件开发成本并不高,软件和服务器数据库可以用机场原有的数据库进行开发,比起空难给航空公司造成的损失来说九牛一毛。 (2)在技术可行性上来分析的话,该软件主要运用了Java技术、jQuery-easyui和Mysql数据库技术。Java是到目前来说最稳定的、最可靠的软件开发工具;jQuery-easyui虽然是比较新的前台开发技术,但是他的界面新颖整洁,适合于功能性软件的开发;Mysql数据库也是许多大公司都采用的软件项目开发数据库,不仅稳定而且性能可靠,可以用作本次软件的开发。 (3)在法律可行性上来分析的话,该软件使用的技术都为开源的软件开发工具和语言,虽然Java等开发技术都存在Sun公司的版权问题,但是Java技术是可以免费使用的,没有涉及到法律上的侵权。 (4)在方案可行性上来分析的话,此次软件开发的很大一部分精力都放在了软件的需求分析和设计方面,设计出来的软件可以很好地去实现我们所要完成的软件预先设计的功能。

    2023年计算机组成与系统结构实验报告.pdf

    2023年计算机组成与系统结构实验报告.pdf

    基于Springboot的漫画网站--论文.zip

    Java项目基于springboot的课程设计,包含源码+数据库+毕业论文

    Java毕业设计-SpringBoot+Vue的准妈妈孕期交流平台(附源码,数据库).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    【工程项目】MATLAB打印纸缺陷检测GUI(不同缺陷类型,GUI界面).zip

    【工程项目】MATLAB打印纸缺陷检测GUI(不同缺陷类型,GUI界面)

    基于ssm+vue的房屋租赁系统求租合同Vue(java毕业设计,包括源码,数据库,教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SSM 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:vue/html5 后台框架:SSM 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4

    C++ 实现判断是否为平衡二叉树(最小二叉树)算法及应用实例

    内容概要:本文档介绍了一个用C++编写的判断是否为平衡二叉树(也称为最小二叉树)的完整代码示例。主要内容涵盖二叉树相关操作,包括定义节点结构、计算树的高度、检查树是否平衡以及插入新元素等功能模块,并给出具体应用演示。首先定义了一个二叉树的结点结构——TreeNode结构体;接着实现了辅助函数,比如计算某结点的最大深度的方法height(), 插入指定值到正确位置的方法insert(),对整个树进行中序遍历的方法inorder();然后重点给出了isBalanced()方法的具体逻辑实现来判定是否是一棵平衡二叉树,它是通过比较左右两个分支的高度之差不大于1,同时递归检查所有孩子结点所在的分支满足同样条件。最后通过主函数完成实际案例构造和测试。 适合人群:对于有一定C++基础的学生或者工程师来说是非常好的学习资料。 使用场景及目标:适用于希望深入理解和掌握二叉树这一常见数据结构特性的学习者,在实际软件项目尤其是涉及快速查找排序时能够灵活运用。 其他说明:此文档提供了详细的注释帮助使用者更容易读懂每一行关键语句的作用机理,还展示了怎样用程序去解决真实问题的全过程。

    Java毕业设计-SpringBoot+Vue的教师人事档案管理系统(附源码,数据库).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    基于SpringBoot+Vue的藏区特产销售平台 (2)(Java毕业设计,包括源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    Java毕业设计-SpringBoot+Vue的书籍学习平台(附源码、数据库、教程).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

    23软件2班(1).zip

    23软件2班(1).zip

    Java毕业设计-SpringBoot+Vue的大学生社团活动平台(附源码,数据库).zip

    Java 项目, Java 毕业设计,Java 课程设计,基于 SpringBoot 开发的,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行! 1. 技术组成 前端:html、javascript、Vue 后台框架:SpringBoot 开发环境:idea 数据库:MySql(建议用 5.7 版本,8.0 有时候会有坑) 数据库工具:navicat 部署环境:Tomcat(建议用 7.x 或者 8.x 版本), maven 2. 部署 如果部署有疑问的话,可以找我咨询 Java工具包下载地址: https://pan.quark.cn/s/eb24351ebac4 后台路径地址:localhost:8080/项目名称/admin/dist/index.html 前台路径地址:localhost:8080/项目名称/front/index.html (无前台不需要输入)

Global site tag (gtag.js) - Google Analytics