fix: 调整实体关系图前进、后退逻辑

This commit is contained in:
chenjinsong
2023-09-25 21:05:41 +08:00
parent 3cf98e8db4
commit 4691b78a59

View File

@@ -85,7 +85,9 @@ export default {
/* 自己实现stack操作 */ /* 自己实现stack操作 */
stackData: { stackData: {
undo: [], // 后退 undo: [], // 后退
redo: [] // 前进 justUndo: false, // 是否刚后退了
redo: [], // 前进
justRedo: false // 是否刚前进了
}, },
center: {}, center: {},
initialData: null // 初始化数据,用于重置 initialData: null // 初始化数据,用于重置
@@ -676,6 +678,15 @@ export default {
// 手动高亮listNode // 手动高亮listNode
const _listNode = _this.graph.findById(listNode.id) const _listNode = _this.graph.findById(listNode.id)
_this.graph.emit('node:click', { item: _listNode, target: _listNode.getKeyShape() }) _this.graph.emit('node:click', { item: _listNode, target: _listNode.getKeyShape() })
console.info(_this.stackData)
if (_this.stackData.justUndo) {
_this.stackData.justUndo = false
_this.stackData.redo = []
}
if (_this.stackData.justRedo) {
_this.stackData.justRedo = false
_this.stackData.redo = []
}
} }
}) })
this.graph.on('node:mouseenter', function (e) { this.graph.on('node:mouseenter', function (e) {
@@ -917,6 +928,7 @@ export default {
handleClick: (code, graph) => { handleClick: (code, graph) => {
if (code === 'undo') { if (code === 'undo') {
const data = this.stackData.undo.pop() const data = this.stackData.undo.pop()
this.stackData.justUndo = true
data.nodes.forEach(n => { data.nodes.forEach(n => {
if (n.type === nodeType.listNode) { if (n.type === nodeType.listNode) {
const listNode = this.graph.findById(n.id) const listNode = this.graph.findById(n.id)
@@ -932,13 +944,20 @@ export default {
this.graph.removeItem(e.id) this.graph.removeItem(e.id)
}) })
this.stackData.redo.push(data) this.stackData.redo.push(data)
if (this.stackData.justRedo) {
this.stackData.justRedo = false
}
this.cleanTempNodesAndTempEdges() this.cleanTempNodesAndTempEdges()
this.graph.layout() this.graph.layout()
this.onCloseBlock() this.onCloseBlock()
} else if (code === 'redo') { } else if (code === 'redo') {
const data = this.stackData.redo.pop() const data = this.stackData.redo.pop()
this.addItems(data.nodes, data.edges, false) this.stackData.justRedo = true
this.stackData.undo.push(data) this.addItems(data.nodes, data.edges)
// this.stackData.undo.push(data)
if (this.stackData.justUndo) {
this.stackData.justUndo = false
}
this.cleanTempNodesAndTempEdges() this.cleanTempNodesAndTempEdges()
this.graph.layout() this.graph.layout()
this.onCloseBlock() this.onCloseBlock()
@@ -954,6 +973,12 @@ export default {
this.graph.clear() this.graph.clear()
this.graph.data(this.initialData) this.graph.data(this.initialData)
this.graph.render() this.graph.render()
this.stackData = {
undo: [],
redo: [],
justUndo: false,
justRedo: false
}
const rootNode = this.graph.findById(this.entity.entityName) const rootNode = this.graph.findById(this.entity.entityName)
this.graph.emit('node:click', { item: rootNode, target: rootNode.getKeyShape() }) // 手动触发rootNode的点击事件 this.graph.emit('node:click', { item: rootNode, target: rootNode.getKeyShape() }) // 手动触发rootNode的点击事件
} }