项目中需要将ES数据库表字段和其他库表字段做映射,研究了下jsPlumb,做一下记录;1: yarn add jsPlumb2: import {jsPlumb} from ‘jsplumb’3: ` created(){this.plumbIns = jsPlumb.getInstance({Container:p...
项目中需要将ES数据库表字段和其他库表字段做映射,研究了下jsPlumb,做一下记录;
1: yarn add jsPlumb
2: import {jsPlumb} from ‘jsplumb’
3: `
created(){
this.plumbIns = jsPlumb.getInstance({
Container:"plumbContainer", //选择器id
ConnectionsDetachable: false, // 再次拖动时不取消选择
maxConnections: 1,
uniqueEndpoint:true,
Endpoint: "Dot",
EndpointStyle: { radius: 7, fill: "#fff", outlineRadius: 5, outlineStroke: '#47a3f8', outlineWidth: 3}, //端点样式
EndpointHoverStyle: { fill: '#47a3f8', radius:7 }, // 端点悬停样式
PaintStyle: { // 绘画样式,默认8px线宽 #456
fill: 'white',
outlineStroke: '#47a3f8',
strokeWidth: 2,
outlineStrokeWidth: 3,
radius: 7,
outlineRadius: 10
},
HoverPaintStyle: { // 默认悬停样式 默认为null
outlineStroke: 'lightblue'
},
ConnectorStyle: {
outlineStroke: '#47a3f8',
strokeWidth: 1
},
ConnectorHoverStyle: {
strokeWidth: 2
},
ConnectionOverlays:[ //连线上的默认样式 这里是箭头
["Arrow",{ width: 12, length: 12, location: 1 , paintStyle: {
stroke: '#00688B',
fill: '#00688B',
}
}]
],
Connector:["Straight",{gap:1}] //要使用的默认连接器的类型:折线,流程等
})
},
mounted(){
let ins = this.plumbIns;
ins.batch(() => {
this.initAll();
this.connectionAll();
});
},
methods:{
initAll () {
let rl = this.leftDataListCopy;
for (let i = 0; i < rl.length; i++) {
this.init(rl[i].id, 0)
}
let rl2 = this.rightDataListCopy;
for (let i = 0; i < rl2.length; i++) {
this.init(rl2[i].id, 1)
}
},
// 初始化规则使其可以连线、拖拽
init (id, type) {
let ins = this.plumbIns,
elem = document.getElementById(id);
const defaultParam = {
anchor: ["Perimeter", {anchorCount:200, shape:"Rectangle"}],
allowLoopback: false,
maxConnections: 1,
}
const common = {
// connector: 'Straight',
}
if (type === 1) {
ins.addEndpoint(elem, {
anchors: ['Left'],
uuid: id
}, {...common, isSource: false,isTarget: true})
} else {
ins.addEndpoint(elem, {
anchors: ['Right'],
uuid: id
}, {...common, isSource: true,isTarget: false})
}
ins.draggable(elem,{
containment: true
});
},
connectionAll () {
let ins = this.plumbIns;
ins.ready(() => {
for (let i = 0; i < this.connlist.length; i++) {
let conn = this.connlist[i],
connection = ins.connect({
uuids: [`${conn.sourceNodeId}`, `${conn.targetNodeId}`],
});
}
ins.bind('click', (conn, originalEvent)=> {
this.$confirm('确认删除映射么?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
ins.deleteConnection(conn)
}).catch(()=>{})
})
})
},
}`
参考链接: https://wdd.js.org/jsplumb-chinese-tutorial
https://jsplumbtoolkit.com/community
沃梦达教程
本文标题为:jsPlumb+vue创建字段映射关系
猜你喜欢
- ajax实现输入提示效果 2023-02-14
- layui数据表格以及传数据方式 2022-12-13
- vue keep-alive 2023-10-08
- javascript 判断当前浏览器版本并判断ie版本 2023-08-08
- jsPlumb+vue创建字段映射关系 2023-10-08
- 关于 html:如何从 css 表中删除边距和填充 2022-09-21
- 基于CORS实现WebApi Ajax 跨域请求解决方法 2023-02-14
- JS实现左侧菜单工具栏 2022-08-31
- 深入浅析AjaxFileUpload实现单个文件的 Ajax 文件上传库 2022-12-15
- 1 Vue - 简介 2023-10-08