项目中需要将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-23
- 使用ajax跨域调用springboot框架的api传输文件 2023-02-23
- Ajax+smarty技术实现无刷新分页 2022-12-15
- HTML clearfix清除浮动讲解 2022-11-20
- JS滚动到顶部踩坑解决记录 2023-07-10
- 在实战中可能碰到的几种ajax请求方法详解 2023-02-01
- uniapp开发微信小程序自定义顶部导航栏功能实例 2022-10-21
- cocos creator游戏实现loading加载页面,游戏启动加载动画 2022-10-29
- Javascript Bootstrap的网格系统,导航栏和轮播详解 2023-08-11
- Ajax发送和接收请求 2022-12-15