178 lines
5.3 KiB
JavaScript
178 lines
5.3 KiB
JavaScript
|
|
import { Meta2d, registerNode } from '@meta2d/core'
|
||
|
|
import { flowPens } from '@meta2d/flow-diagram'
|
||
|
|
import { activityDiagram } from '@meta2d/activity-diagram'
|
||
|
|
import { classPens } from '@meta2d/class-diagram'
|
||
|
|
import { sequencePens, sequencePensbyCtx } from '@meta2d/sequence-diagram'
|
||
|
|
// import { chartsPens } from '@meta2d/le5le-charts'
|
||
|
|
import {
|
||
|
|
Tools,
|
||
|
|
canvasRegister,
|
||
|
|
imageTemp,
|
||
|
|
onChangeAnimate,
|
||
|
|
onChangeAnimateLine,
|
||
|
|
myCubec,
|
||
|
|
myCubeAnchors
|
||
|
|
} from '../../L5/services/canvas.js'
|
||
|
|
import { getTopology, setTopology, dealImg, topologyImg } from '@/components/common/js/common'
|
||
|
|
export default {
|
||
|
|
data () {
|
||
|
|
return {
|
||
|
|
selectPens: [],
|
||
|
|
editFlag: false,
|
||
|
|
prevFlag: false
|
||
|
|
}
|
||
|
|
},
|
||
|
|
mounted () {
|
||
|
|
},
|
||
|
|
methods: {
|
||
|
|
init () {
|
||
|
|
const meta2dOptions = {}
|
||
|
|
const meta2d = new Meta2d(this.meta2dId, meta2dOptions)
|
||
|
|
meta2d.register(flowPens())
|
||
|
|
meta2d.register(activityDiagram())
|
||
|
|
meta2d.register(classPens())
|
||
|
|
meta2d.register(sequencePens())
|
||
|
|
meta2d.registerCanvasDraw(sequencePensbyCtx())
|
||
|
|
// meta2d.registerCanvasDraw(formPens())
|
||
|
|
// meta2d.registerCanvasDraw(chartsPens())
|
||
|
|
/* 画布绑定事件 */
|
||
|
|
meta2d.beforeAddPens = (pens) => { // 添加画笔前
|
||
|
|
console.log(pens)
|
||
|
|
if (pens.length === 1) {
|
||
|
|
if (!pens[0].type) {
|
||
|
|
this.nodeInit(pens[0])
|
||
|
|
} else {
|
||
|
|
this.lineInit(pens[0])
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return true
|
||
|
|
}
|
||
|
|
// getTopology(this.topoData)).on('translate', this.topTranslate) // 平移·
|
||
|
|
meta2d.on('active', this.pensActive) // 选中·
|
||
|
|
// meta2d.on('scale', this.topoScale) // 缩放·
|
||
|
|
// meta2d.on('translatePens', () => {}) // 移动画笔结束·
|
||
|
|
// meta2d.on('translatingPens', () => {}) // 移动画笔进行中·
|
||
|
|
meta2d.on('enter', this.penEnter) // 移入画笔·
|
||
|
|
meta2d.on('leave', this.penLeave) // 移出画笔·
|
||
|
|
// meta2d.on('add', this.appPen) // 添加新画笔·
|
||
|
|
meta2d.on('click', this.topoClick) // click画笔·
|
||
|
|
setTopology(this.meta2dId, meta2d)
|
||
|
|
console.log(getTopology(this.meta2dId))
|
||
|
|
this.clacTopoData(this.topoData).then((data) => {
|
||
|
|
console.log(data)
|
||
|
|
meta2d.open(data)
|
||
|
|
meta2d.centerView()
|
||
|
|
meta2d.lock(1)
|
||
|
|
})
|
||
|
|
},
|
||
|
|
clacTopoData (data) { // 主要处理 属性为原始属性 处理动画属性对原始属性的影响
|
||
|
|
return new Promise(resolve => {
|
||
|
|
if (!data.pens) {
|
||
|
|
data.pens = []
|
||
|
|
}
|
||
|
|
resolve(data)
|
||
|
|
})
|
||
|
|
},
|
||
|
|
calcNode (node) { // 处理节点数据
|
||
|
|
node = { ...node, ...node.data.params }
|
||
|
|
},
|
||
|
|
nodeInit (pen) { // 初始化节点参数
|
||
|
|
pen.data = {
|
||
|
|
params: { // 用于编辑时 重置为节点初始状态
|
||
|
|
background: '#22222200',
|
||
|
|
color: '#222222ff',
|
||
|
|
textColor: '#222222ff',
|
||
|
|
image: ''
|
||
|
|
},
|
||
|
|
imageId: '',
|
||
|
|
valueMapping: [],
|
||
|
|
legend: '',
|
||
|
|
statistics: '',
|
||
|
|
enable: {
|
||
|
|
valueMapping: true,
|
||
|
|
tooltip: true
|
||
|
|
},
|
||
|
|
tooltip: {
|
||
|
|
title: '',
|
||
|
|
titleShow: true,
|
||
|
|
chartType: 'line',
|
||
|
|
content: '',
|
||
|
|
legends: [] // {legend: '' , alias}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
pen.background = '#22222200'
|
||
|
|
pen.textAlign = 'center'
|
||
|
|
pen.textBaseline = 'middle'
|
||
|
|
pen.color = '#222222ff'
|
||
|
|
pen.textColor = '#222222ff'
|
||
|
|
pen.image = ''
|
||
|
|
pen.imageId = ''
|
||
|
|
pen.imageRatio = false
|
||
|
|
pen.ratio = false
|
||
|
|
pen.rotate = 0
|
||
|
|
pen.globalAlpha = 1
|
||
|
|
pen.borderType = 0
|
||
|
|
pen.lineWidth = 1
|
||
|
|
pen.lineDash = []
|
||
|
|
pen.borderRadius = 0
|
||
|
|
console.log(pen)
|
||
|
|
},
|
||
|
|
lineInit (pen) { // 初始化连线参数
|
||
|
|
pen.data = {
|
||
|
|
params: {
|
||
|
|
animateColor: '#FA901CFF',
|
||
|
|
borderColor: '#22222200',
|
||
|
|
color: '#222222FF'
|
||
|
|
}
|
||
|
|
}
|
||
|
|
pen.lineAnimateType = 0
|
||
|
|
pen.animateSpan = 1
|
||
|
|
pen.animateReverse = false
|
||
|
|
pen.fromArrow = ''
|
||
|
|
pen.animateColor = '#FA901CFF'
|
||
|
|
pen.borderColor = '#22222200'
|
||
|
|
pen.borderWidth = 0
|
||
|
|
pen.color = '#222222ff'
|
||
|
|
pen.toArrow = ''
|
||
|
|
pen.borderType = 0
|
||
|
|
pen.lineWidth = 1
|
||
|
|
pen.lineDash = []
|
||
|
|
},
|
||
|
|
pensActive (pens, e) { // 选中节点
|
||
|
|
console.log(pens, 'active', e)
|
||
|
|
this.selectPens = pens
|
||
|
|
},
|
||
|
|
topoClick (params, e) { // 点击节点
|
||
|
|
console.log(this.$refs.meta2dProps)
|
||
|
|
if (!params.pen && this.$refs.meta2dProps) {
|
||
|
|
this.$refs.meta2dProps.activeName = 'canvas'
|
||
|
|
this.selectPens = []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
penEnter (pens) { // 移入节点
|
||
|
|
// console.log(pens)
|
||
|
|
},
|
||
|
|
penLeave (pens) { // 移出节点
|
||
|
|
// console.log(pens)
|
||
|
|
},
|
||
|
|
updatePens (pen, key) { // 更新对应的节点
|
||
|
|
console.log(pen, key, 'update')
|
||
|
|
// meta2d.setValue({ id: pen.id, text: 'new text' }, { render: false });
|
||
|
|
const obj = { id: pen.id }
|
||
|
|
obj[key] = pen[key]
|
||
|
|
if (key === 'lineName') {
|
||
|
|
getTopology(this.meta2dId).updateLineType(pen, pen[key])
|
||
|
|
}
|
||
|
|
getTopology(this.meta2dId).setValue(obj)
|
||
|
|
if (key === 'lineAnimateType') {
|
||
|
|
console.log('lineAnimateType', 'start')
|
||
|
|
if (!pen[key]) {
|
||
|
|
getTopology(this.meta2dId).stopAnimate(pen.id)
|
||
|
|
return
|
||
|
|
}
|
||
|
|
getTopology(this.meta2dId).startAnimate(pen.id)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|