From 1620a013ba75b41a9c49ed93bbb3f83ee2823f4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A1=97=E8=A7=92=E5=B0=8F=E6=9E=97?= <1013335014@qq.com> Date: Tue, 13 Aug 2024 10:57:01 +0800 Subject: [PATCH] =?UTF-8?q?Feat=EF=BC=9Awalk=E6=96=B9=E6=B3=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=A5=96=E5=85=88=E5=88=97=E8=A1=A8=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/layouts/CatalogOrganization.js | 4 ++-- simple-mind-map/src/layouts/Fishbone.js | 4 ++-- simple-mind-map/src/layouts/LogicalStructure.js | 4 ++-- simple-mind-map/src/layouts/MindMap.js | 4 ++-- .../src/layouts/OrganizationStructure.js | 4 ++-- simple-mind-map/src/layouts/Timeline.js | 4 ++-- simple-mind-map/src/layouts/VerticalTimeline.js | 4 ++-- simple-mind-map/src/utils/index.js | 17 ++++++++++++----- 8 files changed, 26 insertions(+), 19 deletions(-) diff --git a/simple-mind-map/src/layouts/CatalogOrganization.js b/simple-mind-map/src/layouts/CatalogOrganization.js index 7fc01868..bc02bff8 100644 --- a/simple-mind-map/src/layouts/CatalogOrganization.js +++ b/simple-mind-map/src/layouts/CatalogOrganization.js @@ -32,8 +32,8 @@ class CatalogOrganization extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/layouts/Fishbone.js b/simple-mind-map/src/layouts/Fishbone.js index cf3ce45f..1b986db0 100644 --- a/simple-mind-map/src/layouts/Fishbone.js +++ b/simple-mind-map/src/layouts/Fishbone.js @@ -36,9 +36,9 @@ class Fishbone extends Base { walk( this.renderer.renderTree, null, - (node, parent, isRoot, layerIndex, index) => { + (node, parent, isRoot, layerIndex, index, ancestors) => { // 创建节点 - let newNode = this.createNode(node, parent, isRoot, layerIndex) + let newNode = this.createNode(node, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/layouts/LogicalStructure.js b/simple-mind-map/src/layouts/LogicalStructure.js index ff3b6051..703cace4 100644 --- a/simple-mind-map/src/layouts/LogicalStructure.js +++ b/simple-mind-map/src/layouts/LogicalStructure.js @@ -35,8 +35,8 @@ class LogicalStructure extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) newNode.sortIndex = sortIndex sortIndex++ // 根节点定位在画布中心位置 diff --git a/simple-mind-map/src/layouts/MindMap.js b/simple-mind-map/src/layouts/MindMap.js index 156a67df..e8c37ba9 100644 --- a/simple-mind-map/src/layouts/MindMap.js +++ b/simple-mind-map/src/layouts/MindMap.js @@ -34,8 +34,8 @@ class MindMap extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/layouts/OrganizationStructure.js b/simple-mind-map/src/layouts/OrganizationStructure.js index b0a666b4..475bf7c6 100644 --- a/simple-mind-map/src/layouts/OrganizationStructure.js +++ b/simple-mind-map/src/layouts/OrganizationStructure.js @@ -33,8 +33,8 @@ class OrganizationStructure extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/layouts/Timeline.js b/simple-mind-map/src/layouts/Timeline.js index 1917f397..38daa9ff 100644 --- a/simple-mind-map/src/layouts/Timeline.js +++ b/simple-mind-map/src/layouts/Timeline.js @@ -34,8 +34,8 @@ class Timeline extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/layouts/VerticalTimeline.js b/simple-mind-map/src/layouts/VerticalTimeline.js index 2ce28e71..c11e9dbb 100644 --- a/simple-mind-map/src/layouts/VerticalTimeline.js +++ b/simple-mind-map/src/layouts/VerticalTimeline.js @@ -34,8 +34,8 @@ class VerticalTimeline extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index dad28394..aca748e4 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -14,11 +14,12 @@ export const walk = ( afterCallback, isRoot, layerIndex = 0, - index = 0 + index = 0, + ancestors = [] ) => { let stop = false if (beforeCallback) { - stop = beforeCallback(root, parent, isRoot, layerIndex, index) + stop = beforeCallback(root, parent, isRoot, layerIndex, index, ancestors) } if (!stop && root.children && root.children.length > 0) { let _layerIndex = layerIndex + 1 @@ -30,11 +31,13 @@ export const walk = ( afterCallback, false, _layerIndex, - nodeIndex + nodeIndex, + [...ancestors, root] ) }) } - afterCallback && afterCallback(root, parent, isRoot, layerIndex, index) + afterCallback && + afterCallback(root, parent, isRoot, layerIndex, index, ancestors) } // 广度优先遍历树 @@ -948,7 +951,11 @@ export const addDataToAppointNodes = (appointNodes, data = {}) => { // 给指定的节点列表树数据添加uid,会修改原数据 // createNewId默认为false,即如果节点不存在uid的话,会创建新的uid。如果传true,那么无论节点数据原来是否存在uid,都会创建新的uid -export const createUidForAppointNodes = (appointNodes, createNewId = false, handle = null) => { +export const createUidForAppointNodes = ( + appointNodes, + createNewId = false, + handle = null +) => { const walk = list => { list.forEach(node => { if (!node.data) {