|
|
|
@ -75,11 +75,6 @@
|
|
|
|
|
data () { |
|
|
|
|
return { |
|
|
|
|
graph: null, |
|
|
|
|
// Used to calculate the context menu location |
|
|
|
|
originalScrollPosition: { |
|
|
|
|
left: 0, |
|
|
|
|
top: 0 |
|
|
|
|
}, |
|
|
|
|
editable: true, |
|
|
|
|
dragging: { |
|
|
|
|
// Distance from the mouse to the top-left corner of the dragging element |
|
|
|
@ -227,7 +222,6 @@
|
|
|
|
|
|
|
|
|
|
this.registerX6Shape() |
|
|
|
|
this.bindGraphEvent() |
|
|
|
|
this.originalScrollPosition = graph.getScrollbarPosition() |
|
|
|
|
}, |
|
|
|
|
/** |
|
|
|
|
* Register custom shapes |
|
|
|
@ -248,10 +242,9 @@
|
|
|
|
|
this.scale = sx |
|
|
|
|
}) |
|
|
|
|
// right click |
|
|
|
|
this.graph.on('node:contextmenu', ({ x, y, cell }) => { |
|
|
|
|
const { left, top } = this.graph.getScrollbarPosition() |
|
|
|
|
const o = this.originalScrollPosition |
|
|
|
|
this.$refs.contextMenu.show(x + (o.left - left), y + (o.top - top)) |
|
|
|
|
this.graph.on('node:contextmenu', ({ x, y, cell, e }) => { |
|
|
|
|
const { x: pageX, y: pageY } = this.graph.localToPage(x, y) |
|
|
|
|
this.$refs.contextMenu.show(pageX, pageY) |
|
|
|
|
this.$refs.contextMenu.setCurrentTask({ |
|
|
|
|
name: cell.data.taskName, |
|
|
|
|
type: cell.data.taskType, |
|
|
|
@ -697,41 +690,20 @@
|
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
onDrop (e) { |
|
|
|
|
const { type } = this.dragging |
|
|
|
|
const { x, y } = this.calcGraphCoordinate(e.clientX, e.clientY) |
|
|
|
|
const { type, x: eX, y: eY } = this.dragging |
|
|
|
|
const { x, y } = this.graph.clientToLocal(e.clientX, e.clientY) |
|
|
|
|
this.genTaskCodeList({ |
|
|
|
|
genNum: 1 |
|
|
|
|
}) |
|
|
|
|
.then((res) => { |
|
|
|
|
const [code] = res |
|
|
|
|
this.addNode(code, type, { x, y }) |
|
|
|
|
this.addNode(code, type, { x: x - eX, y: y - eY }) |
|
|
|
|
this.dagChart.openFormModel(code, type) |
|
|
|
|
}) |
|
|
|
|
.catch((err) => { |
|
|
|
|
console.error(err) |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
calcGraphCoordinate (mClientX, mClientY) { |
|
|
|
|
// Distance from the mouse to the top-left corner of the container; |
|
|
|
|
const { left: cX, top: cY } = |
|
|
|
|
this.$refs.container.getBoundingClientRect() |
|
|
|
|
const mouseX = mClientX - cX |
|
|
|
|
const mouseY = mClientY - cY |
|
|
|
|
|
|
|
|
|
// The distance that paper has been scrolled |
|
|
|
|
const { left: sLeft, top: sTop } = this.graph.getScrollbarPosition() |
|
|
|
|
const { left: oLeft, top: oTop } = this.originalScrollPosition |
|
|
|
|
const scrollX = sLeft - oLeft |
|
|
|
|
const scrollY = sTop - oTop |
|
|
|
|
|
|
|
|
|
// Distance from the mouse to the top-left corner of the dragging element; |
|
|
|
|
const { x: eX, y: eY } = this.dragging |
|
|
|
|
|
|
|
|
|
return { |
|
|
|
|
x: mouseX + scrollX - eX, |
|
|
|
|
y: mouseY + scrollY - eY |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
/** |
|
|
|
|
* Get prev nodes by code |
|
|
|
|
* @param {number} code |
|
|
|
|