优化目录组织图布局
This commit is contained in:
parent
be9668c7b8
commit
7bde59f664
@ -115,7 +115,7 @@ class CatalogOrganization extends Base {
|
|||||||
let areaWidth = this.getNodeAreaWidth(node)
|
let areaWidth = this.getNodeAreaWidth(node)
|
||||||
let difference = areaWidth - node.width
|
let difference = areaWidth - node.width
|
||||||
if (difference > 0) {
|
if (difference > 0) {
|
||||||
this.updateBrothersLeft(node, difference / 2)
|
this.updateBrothersLeft(node, difference)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 调整top
|
// 调整top
|
||||||
@ -130,7 +130,14 @@ class CatalogOrganization extends Base {
|
|||||||
this.updateBrothersTop(node, totalHeight)
|
this.updateBrothersTop(node, totalHeight)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
null,
|
(node, parent, isRoot) => {
|
||||||
|
if (isRoot) {
|
||||||
|
let { right, left } = this.getNodeBoundaries(node, 'h')
|
||||||
|
let childrenWidth = right - left
|
||||||
|
let offset = (node.left - left) - (childrenWidth - node.width) / 2
|
||||||
|
this.updateChildren(node.children, 'left', offset)
|
||||||
|
}
|
||||||
|
},
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -142,38 +149,15 @@ class CatalogOrganization extends Base {
|
|||||||
let index = childrenList.findIndex(item => {
|
let index = childrenList.findIndex(item => {
|
||||||
return item === node
|
return item === node
|
||||||
})
|
})
|
||||||
// 存在大于一个节点时,第一个或最后一个节点自身也需要移动,否则两边不对称
|
|
||||||
if (
|
|
||||||
(index === 0 || index === childrenList.length - 1) &&
|
|
||||||
childrenList.length > 1
|
|
||||||
) {
|
|
||||||
let _offset = index === 0 ? -addWidth : addWidth
|
|
||||||
node.left += _offset
|
|
||||||
if (
|
|
||||||
node.children &&
|
|
||||||
node.children.length &&
|
|
||||||
!node.hasCustomPosition()
|
|
||||||
) {
|
|
||||||
this.updateChildren(node.children, 'left', _offset)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
childrenList.forEach((item, _index) => {
|
childrenList.forEach((item, _index) => {
|
||||||
if (item.hasCustomPosition()) {
|
if (item.hasCustomPosition() || _index <= index) {
|
||||||
// 适配自定义位置
|
// 适配自定义位置
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let _offset = 0
|
item.left += addWidth
|
||||||
if (_index < index) {
|
|
||||||
// 左边的节点往左移
|
|
||||||
_offset = -addWidth
|
|
||||||
} else if (_index > index) {
|
|
||||||
// 右边的节点往右移
|
|
||||||
_offset = addWidth
|
|
||||||
}
|
|
||||||
item.left += _offset
|
|
||||||
// 同步更新子节点的位置
|
// 同步更新子节点的位置
|
||||||
if (item.children && item.children.length) {
|
if (item.children && item.children.length) {
|
||||||
this.updateChildren(item.children, 'left', _offset)
|
this.updateChildren(item.children, 'left', addWidth)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
// 更新父节点的位置
|
// 更新父节点的位置
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user