前端流程图jsplumb学习笔记

1、这篇博客很好,另外两个是官网文档

http://www.cnblogs.com/leomYili/p/6346526.html

https://jsplumbtoolkit.com/community/apidocs/classes/Connector.html

https://jsplumbtoolkit.com/community/doc/connections.html#draganddrop

2、Jsplump流程图画虚线用"dashstyle": "2 4"

PaintStyle: {

lineWidth: 3,

strokeStyle: color,

"dashstyle": "2 4"

}

3、简单连接

 jsPlumb.connect({
  source:"window4",
  target:"window5",
  anchors:["BottomRight","TopLeft"],
  paintStyle:{strokeWidth:7,stroke:‘rgb(131,8,135)‘},
  hoverPaintStyle:{ stroke:"rgb(0, 0, 135)" },
  endpointStyle:{ width:40, height:40 },
  endpoint:"Rectangle",
  connector:["Flowchart", { midpoint: 0.8}],
   overlays:[
    [ "Label", {label:"FOO", id:"label", location:0.7
}]
  ] 
});

(1)connector:["Flowchart", { midpoint: 0.8}],设置折线抓点的位置,

0-1,越小离源端点越近

(2)label location 0-1, 越小离源端点越近

(3)配置项写法都是name:[“type1”,{option1:value,option2:value2}]

(4)anchors:[[ 0,0.5, -1, 0 ],"RightMiddle"], 用数组自定义anchor位置,

[x,y,dx,dy],x和y为以noder的左上角为起点,向下或向右增加到1。dx、dy指连接线出去的x、y方向矢量的分量,dx/dy组合定义出成一个角度,取值-1到1。-1为向左,向上,1为向右和向下。0分别为垂直和水平方向。

4、 Connection.连接器, Connector连接线是连接器的一个组成要素

5、用css设置connection连接器样式

jsPlumb.connect({

source:"someElement",

target:"someOtherElement",

cssClass: "redLine dashLine",

});

CSS:

svg.redLine path {

stroke: red;

stroke-width: 3;

}

svg.dashLine path {

stroke-dasharray: 5;

}

注svg虚线样式规则参照

https://segmentfault.com/a/1190000007309718

6、动态切换connection paintstyle

instance.registerConnectionType("black", {

paintStyle: {

strokeWidth: 2,

stroke: "#000000",

joinstyle: "round",

outlineStroke: "white",

outlineWidth: 2,

"dashstyle": "2 4"

},

});

var aa = instance.connect({

uuids: ["Window1BottomCenter", "Window2TopCenter"],

editable: true,

type: "black"

});

或aa.setType(“black”)

7、批量加入connection

jsPlumb.ready(function () {

var color = "#0070c0";

var instance = jsPlumb.getInstance({

Connector: ["Straight", { curviness: 2 }],

PaintStyle: {

strokeWidth: 2,

stroke: "#0070c0",

joinstyle: "round",

outlineWidth: 2

},

EndpointStyle: { radius: 1, fillStyle: color },

Container: "canvas"

});

var _addEndpoints = function (nodeId, sourceAnchors, targetAnchors) {

for (var i = 0; i < sourceAnchors.length; i++) {

var sourceUUID = nodeId + "-" + sourceAnchors[i];

instance.addEndpoint(nodeId, {

anchor: sourceAnchors[i], uuid: sourceUUID

});

}

for (var j = 0; j < targetAnchors.length; j++) {

var targetUUID = nodeId + "-" + targetAnchors[j];

instance.addEndpoint(nodeId, { anchor: targetAnchors[j], uuid: targetUUID });

}

};

instance.batch(function () {

var arrowCommon = { foldback: 0.7, fillStyle: color, width: 14 },

overlays = [

["Arrow", { location: 1 }, arrowCommon,],

];

_addEndpoints("nodeSiteInspectionRecordMainCheck", ["RightMiddle"], []);

_addEndpoints("nodeCorrectionInstructionBook", ["RightMiddle"], ["LeftMiddle"]);

_addEndpoints("nodeSiteInspectionRecordRecheck", ["RightMiddle"], ["LeftMiddle"]);

_addEndpoints("nodeCorrectiveReviewOpinions", ["RightMiddle"], ["LeftMiddle"]);

_addEndpoints("nodeArchive", [], ["LeftMiddle"]);

instance.connect({ uuids: ["nodeSiteInspectionRecordMainCheck-RightMiddle", "nodeCorrectionInstructionBook-LeftMiddle"], overlays: overlays });

instance.connect({ uuids: ["nodeCorrectionInstructionBook-RightMiddle", "nodeSiteInspectionRecordRecheck-LeftMiddle"], overlays: overlays });

instance.connect({ uuids: ["nodeSiteInspectionRecordRecheck-RightMiddle", "nodeCorrectiveReviewOpinions-LeftMiddle"], overlays: overlays });

instance.connect({ uuids: ["nodeCorrectiveReviewOpinions-RightMiddle", "nodeArchive-LeftMiddle"], overlays: overlays });

});

jsPlumb.fire("jsPlumbDemoLoaded", instance);

});

8、配置事件以及label位置内容配置

label压线问题:(1)用jquery修改top。避免label压住水平方向的连线

var flowchartWindow1_flowchartWindow2_connection = jsPlumb.connect({

});

flowchartWindow1_flowchartWindow2_connection.setLabel({

label: "上级立案上级立案上级立案",

location: 0.2,

cssClass: "connection-label"

});

var label = flowchartWindow1_flowchartWindow2_connection.getLabelOverlay().canvas;

var originTop = $(label).position().top;

$(label).css("top", originTop - 30 + "px");

(2)而且将label的marginleft设置成width的一半多点,避免label压住垂直方向的连线

.remarksLabel {

color: #ff0000;

font-size: 8px;

width: 80px;

height: 40px;

margin-left: 45px;

}

1、 菱形节点,用css实现,背景图片

2、 节点旁边的标注,在nodetext边添加label标识

3、 后台连接器(connection)数据模型整理

(1)sourceNodeId string 源节点id,要与页面的id一致;

(2)targetNodeId string 目标节点id,要与页面的id一致;

(3)ConnectionCssClass string要与页面的css名类一致;;

(4)anchors:两种类型:[[ 0,0.3, -1, 0 ],"RightMiddle"]和[“LeftMiddle”,"RightMiddle"]

统一做成数值型的[[ 0,0.3, -1, 0 ], [ 0,0.3, -1, 0 ]]

(5)ConnectorMidpoint: double折点比例位置

(6)LabelText:string 连旁标签内容

(7)LabelLocation:double 标签在连线上的位置

jsPlumb.connect({

source: "flowchartWindow1",

target: "flowchartWindow2",

cssClass: "redline dashline",

anchors:[[ 0,0.3, -1, 0 ],"RightMiddle"],

connector:["Flowchart", { midpoint: 0.9}],

overlays: [

["Label", {

label: "上级立案上级立案上级立案",

id: "label",

location:0.6

}]

]

});

4、 后台节点数据模型

{

"NodeId": "nodeSiteInspectionRecordMainCheck",

"SystemName": "SiteInspectionRecord",

"WriteStateCssClassName": "finished",

"MissionId": "574A979F-4471-4441-A6B3-493B3F6479FA",

"IsWritedByApp": "false",

"HasAttachmentFiles": "true"

},

7、connection.setLabel({

label: "上级立案上级立案上级立案",

location:0.8,

cssClass:"connection-label"

});

8、 jsPlumb.select().addClass("dashLine");

获取连接器增加css类

9、anthor常用值

RightMiddle { 1, 0.5, 1, 0 }

LeftMiddle{ 0, 0.5, -1, 0 } ,

BottomCenter{ 0.5, 1, 0, 1 },

TopCenter{ 0.5, 0, 0, -1 }

右左{{ 1, 0.5, 1, 0 },{ 0, 0.5, -1, 0 } }

下上{{ 0.5, 1, 0, 1 },{ 0.5, 0, 0, -1 } }

10、项目实践

详情参见市安监

时间: 2024-11-02 21:16:02

前端流程图jsplumb学习笔记的相关文章

jsPlumb学习笔记

自以为会了D3就可以无敌于可视化了,不过项目中却要求用jsPlumb.在我看来,这就是一个给元素画连接线的工具. <!DOCTYPE html> <html> <head> <title>jsPlumb</title> <style> .item{ width:100px; height:50px; border:3px solid green; position: absolute; } .item1{ left:400px; to

前端总结的学习笔记

血的教训 当用li标签包裹住a标签,鼠标经过,让其它元素显示时.要写li:hover   div{各种样式}而不能写ul li  a:hover  div{各种样式} 事件代理:为后来添加的元素添加上事件,优化引擎 - Gecko内核   css前缀为"-moz-"  火狐浏览器 - Presto内核   css前缀为"-o-"             Opera(欧朋) - Trident内核 css前缀为"-ms-"           IE

前端开发入门学习笔记(一)

HTML:超文本标记语言. html:是一个基础结构. CSS:就是跟网页做装修的,修饰HTML的基础内容:样式. JavaScript:一个网页的行为,动作,动态的东西. html标准文件格式:<!DOCTYPE html><html><head><meta charset="UTF-8"/><title>标题</title></head><!--我是头部 周围包括的符号为注释--><

学习-【前端】-sass学习笔记

后缀: sass有两种后缀文件:一种后缀名为sass,不使用大括号和分号:另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号. 下面举出 后缀为sass文件写法: body background:#eee font-size:12px 导入 sass的导入(@import)规则和css的有所不同,编译时会将@import的scss文件合并进来只生成一个css @import "reset.scss" @import "a"

学好前端:thinkPHP学习笔记(2)

1.调试模式 设置调试模式部分代码如下: 1 <?php 2 define('APP_DEBUG',TRUE); // 开启调试模式 常量定义代码 3 require '/ThinkPHP框架所在目录/ThinkPHP.php'; 关闭调试模式代码如下: define('APP_DEBUG',false); 2.配置 1 // 项目配置文件 2 return array( 3 '配置参数' => '配置值', 4 // 更多配置参数 5 //... 6 ); 3.控制器 代码如下: 1 cla

springmvc学习笔记(4)-前端控制器

springmvc学习笔记(4)-前端控制器 springmvc学习笔记4-前端控制器 本文通过前端控制器源码分析springmvc执行过程 1.前端控制器接收请求 调用doDispatch方法 protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpServletRequest processedRequest = request; Ha

WEB前端学习笔记 一

最近时间比较充裕,整理了一下学习过的笔记,此篇笔记包含了:Html.Css.JavaScript.Jquery.以及使用帝国CMS或是织梦CMS建立自己的网站,也许也会整理一下PHP的笔记,如果时间允许会整理完全. 虽然笔记是从最基础的开始,但是,并不包含电脑的基础知识,所以你必须已经掌握了一些电脑的基本操作,比如开关机,你的电脑用的是什么操作系统,至少也要会用word和wps吧.浏览器是做什么的,什么拷贝.复制.粘贴.知道最基本的文件类型,如,文本文件,视频文件,图片文件,什么是可执行文件,分

WEB前端学习笔记 三

接上一篇,web学习笔记 二,web学习笔记刚刚发出,就发现被其他网站采集了,在此感谢您的采集和转发,但请注明文章出自网知博学. 1.7  开发工具的选择 增强文本编辑器:EditPlus.Notepad++ 特点:比较小.占用系统资源比较少.代码颜色高亮显示.但没有代码自动补功能 IDE:(Integrated Development Environment,集成开发环境).IDE集成开发环境(简称IDE)开发环境就是指在开发软件的时候需要用到的软件.这些软件包括代码编辑器.编译器.调试工具和

web前端之网站seo优化学习笔记

这两天因为一些公司业务上的原因,学习了一些关于网站seo优化的方法和技巧. 之前在码代码的过程中其实还没有考虑过对于网站导流和优化网站关键字搜索排名的问题. 在了解了一些这方面的资料之后,觉得这是一个很有意思的领域.把这几天的学习笔记记下来. 个人理解是在一个项目基本上完成主要需求后需要运营需求加入的时候,此时seo优化就非常重要.所以在网站开发的最开始有经验的前端coder们在搭架子的时候就应该提前把以后运营汪们可能会提出的运营需求,特别是一些针对影响关键字排名和与搜索引擎相关的部分就可以考虑