Skip to content

Commit eebd2a9

Browse files
DymoneLewisboyongjiong
authored andcommitted
fix: 优化堆叠模式相关代码
1 parent dbd1241 commit eebd2a9

File tree

3 files changed

+39
-37
lines changed

3 files changed

+39
-37
lines changed

packages/core/src/model/GraphModel.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,6 @@ export class GraphModel {
255255
}
256256
// 默认情况下节点与边按照 zIndex 排序
257257
const elements = sortElement([...this.nodes, ...this.edges])
258-
console.log('sortElement run', [...this.nodes, ...this.edges], elements)
259-
// 在 EDGE_TOP 模式下,分别为节点和边进行排序,然后再以节点先,边后的方式塞到渲染数据里,保证边始终在顶部。
260-
// if (this.overlapMode === OverlapMode.EDGE_TOP) {
261-
// elements = [...sortElement(this.nodes), ...sortElement(this.edges)]
262-
// }
263258

264259
// 只显示可见区域的节点和边
265260
const visibleElements: (BaseNodeModel | BaseEdgeModel)[] = []
@@ -789,7 +784,6 @@ export class GraphModel {
789784
*/
790785
@action
791786
toFront(id: string) {
792-
console.log('toFront run', id)
793787
const element = this.nodesMap[id]?.model || this.edgesMap[id]?.model
794788
if (element) {
795789
// 静态模式toFront不做处理
@@ -804,7 +798,6 @@ export class GraphModel {
804798
// 默认模式(节点在上)和边在上模式下,将原置顶元素重新恢复原有层级,将需指定元素zIndex设置为最大zIndex
805799
this.topElement?.setZIndex()
806800
element.setZIndex(ELEMENT_MAX_Z_INDEX)
807-
console.log('setZIndex run', element.zIndex)
808801
this.topElement = element
809802
}
810803
}

packages/core/src/model/edge/BaseEdgeModel.ts

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,7 @@ export class BaseEdgeModel<P extends PropertiesType = PropertiesType>
145145
this.isShowAdjustPoint = adjustEdgeStartAndEnd
146146
assign(this, pickEdgeConfig(data))
147147
const { overlapMode, eventCenter } = this.graphModel
148-
if (overlapMode !== OverlapMode.DEFAULT) {
149-
this.zIndex =
150-
overlapMode === OverlapMode.EDGE_TOP ? 1 : data.zIndex || getZIndex()
151-
}
148+
this.updateZIndexByOverlap(overlapMode, data.zIndex || getZIndex())
152149
// 设置边的 anchors,也就是边的两个端点
153150
// 端点依赖于 edgeData 的 sourceNode 和 targetNode
154151
this.setAnchors()
@@ -159,17 +156,7 @@ export class BaseEdgeModel<P extends PropertiesType = PropertiesType>
159156

160157
eventCenter.on('overlap:change', (data) => {
161158
const { overlapMode: newMode } = data
162-
switch (newMode) {
163-
case OverlapMode.DEFAULT:
164-
this.zIndex = 0
165-
break
166-
case OverlapMode.EDGE_TOP:
167-
this.zIndex = 1
168-
break
169-
default:
170-
this.zIndex = data.zIndex || getZIndex()
171-
break
172-
}
159+
this.updateZIndexByOverlap(newMode, data.zIndex || getZIndex())
173160
})
174161
}
175162

@@ -767,6 +754,24 @@ export class BaseEdgeModel<P extends PropertiesType = PropertiesType>
767754
this.updateStartPoint({ x: startPoint.x, y: startPoint.y })
768755
this.updateEndPoint({ x: endPoint.x, y: endPoint.y })
769756
}
757+
758+
// 堆叠模式变化时,更新zIndex
759+
@action
760+
updateZIndexByOverlap(overlapMode: OverlapMode, defaultZIndex) {
761+
switch (overlapMode) {
762+
case OverlapMode.DEFAULT:
763+
this.zIndex = 0
764+
break
765+
case OverlapMode.EDGE_TOP:
766+
this.zIndex = 1
767+
break
768+
case OverlapMode.INCREASE:
769+
this.zIndex = defaultZIndex
770+
break
771+
default:
772+
break
773+
}
774+
}
770775
}
771776

772777
export default BaseEdgeModel

packages/core/src/model/node/BaseNodeModel.ts

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -207,23 +207,10 @@ export class BaseNodeModel<P extends PropertiesType = PropertiesType>
207207
assign(this, pickNodeConfig(data))
208208

209209
const { overlapMode, eventCenter } = this.graphModel
210-
if (overlapMode !== OverlapMode.DEFAULT) {
211-
this.zIndex =
212-
overlapMode === OverlapMode.EDGE_TOP ? 0 : data.zIndex || getZIndex()
213-
}
210+
this.updateZIndexByOverlap(overlapMode, data.zIndex || getZIndex())
214211
eventCenter.on('overlap:change', (data) => {
215212
const { overlapMode: newMode } = data
216-
switch (newMode) {
217-
case OverlapMode.DEFAULT:
218-
this.zIndex = 1
219-
break
220-
case OverlapMode.EDGE_TOP:
221-
this.zIndex = 0
222-
break
223-
default:
224-
this.zIndex = data.zIndex || getZIndex()
225-
break
226-
}
213+
this.updateZIndexByOverlap(newMode, this.zIndex || getZIndex())
227214
})
228215
}
229216

@@ -935,6 +922,23 @@ export class BaseNodeModel<P extends PropertiesType = PropertiesType>
935922
@action updateAttributes(attributes: any) {
936923
assign(this, attributes)
937924
}
925+
// 堆叠模式变化时,更新zIndex
926+
@action
927+
updateZIndexByOverlap(overlapMode: OverlapMode, defaultZIndex) {
928+
switch (overlapMode) {
929+
case OverlapMode.DEFAULT:
930+
this.zIndex = 1
931+
break
932+
case OverlapMode.EDGE_TOP:
933+
this.zIndex = 0
934+
break
935+
case OverlapMode.INCREASE:
936+
this.zIndex = defaultZIndex
937+
break
938+
default:
939+
break
940+
}
941+
}
938942
}
939943

940944
export namespace BaseNodeModel {

0 commit comments

Comments
 (0)