From 74a000723bc5d151e4dca87af5809583bedd8e12 Mon Sep 17 00:00:00 2001 From: wanglin2 <1013335014@qq.com> Date: Fri, 13 Oct 2023 16:09:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=9A?= =?UTF-8?q?=E8=AF=BB=E5=8F=96=E5=92=8C=E8=AE=BE=E7=BD=AE=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E7=9A=84nodeData.data=E6=94=B9=E4=B8=BA=E9=80=9A=E8=BF=87setDa?= =?UTF-8?q?ta=E5=92=8CgetData=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- simple-mind-map/src/core/render/Render.js | 24 ++++++++----- simple-mind-map/src/core/render/TextEdit.js | 2 +- simple-mind-map/src/core/render/node/Node.js | 18 +++++----- simple-mind-map/src/core/render/node/Style.js | 6 ++-- .../core/render/node/nodeCreateContents.js | 36 ++++++++++--------- .../src/core/render/node/nodeExpandBtn.js | 6 ++-- .../core/render/node/nodeGeneralization.js | 8 ++--- simple-mind-map/src/layouts/Base.js | 10 +++--- .../src/layouts/CatalogOrganization.js | 4 +-- simple-mind-map/src/layouts/Fishbone.js | 2 +- simple-mind-map/src/layouts/FishboneBottom.js | 2 +- simple-mind-map/src/layouts/FishboneTop.js | 2 +- .../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 +-- .../src/layouts/VerticalTimeline.js | 4 +-- .../src/plugins/AssociativeLine.js | 22 ++++++------ simple-mind-map/src/plugins/Drag.js | 10 +++--- simple-mind-map/src/plugins/NodeImgAdjust.js | 6 ++-- simple-mind-map/src/plugins/Painter.js | 2 +- simple-mind-map/src/plugins/RichText.js | 10 +++--- simple-mind-map/src/plugins/Search.js | 8 ++--- simple-mind-map/src/plugins/Select.js | 8 ++--- .../associativeLineControls.js | 4 +-- .../associativeLine/associativeLineText.js | 8 ++--- .../associativeLine/associativeLineUtils.js | 6 ++-- 27 files changed, 117 insertions(+), 107 deletions(-) diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 62773b35..80393a99 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -448,7 +448,7 @@ class Render { this.root, null, node => { - if (!node.nodeData.data.isActive) { + if (!node.getData('isActive')) { this.addNodeToActiveList(node) } }, @@ -625,7 +625,9 @@ class Render { } node.nodeData.children.push(newNode) // 插入子节点时自动展开子节点 - node.nodeData.data.expand = true + node.setData({ + expand: true + }) }) // 如果同时对多个节点插入子节点,需要清除原来激活的节点 if (handleMultiNodes || !openEdit) { @@ -661,7 +663,9 @@ class Render { childList = createUidForAppointNodes(childList, true) node.nodeData.children.push(...childList) // 插入子节点时自动展开子节点 - node.nodeData.data.expand = true + node.setData({ + expand: true + }) }) this.clearActiveNodeList() this.mindMap.render() @@ -961,7 +965,9 @@ class Render { (node.layerIndex === 1 && toNode.layerIndex !== 1) || (node.layerIndex !== 1 && toNode.layerIndex === 1) if (nodeLayerChanged) { - node.nodeData.data.resetRichText = true + node.setData({ + resetRichText: true + }) } } } @@ -1331,7 +1337,7 @@ class Render { this.mindMap.execCommand( 'SET_NODE_EXPAND', node, - !node.nodeData.data.expand + !node.getData('expand') ) } @@ -1410,7 +1416,7 @@ class Render { return } this.activeNodeList.forEach(node => { - if (node.nodeData.data.generalization || node.isRoot) { + if (node.getData('generalization') || node.isRoot) { return } this.mindMap.execCommand('SET_NODE_DATA', node, { @@ -1429,7 +1435,7 @@ class Render { return } this.activeNodeList.forEach(node => { - if (!node.nodeData.data.generalization) { + if (!node.getData('generalization')) { return } this.mindMap.execCommand('SET_NODE_DATA', node, { @@ -1485,7 +1491,7 @@ class Render { // 定位到指定节点 goTargetNode(node, callback = () => {}) { - let uid = typeof node === 'string' ? node : node.nodeData.data.uid + let uid = typeof node === 'string' ? node : node.getData('uid') if (!uid) return this.expandToNodeUid(uid, () => { let targetNode = this.findNodeByUid(uid) @@ -1571,7 +1577,7 @@ class Render { findNodeByUid(uid) { let res = null walk(this.root, null, node => { - if (node.nodeData.data.uid === uid) { + if (node.getData('uid') === uid) { res = node return true } diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index 19336af2..da828cdf 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -173,7 +173,7 @@ export default class TextEdit { let scale = this.mindMap.view.scale let lineHeight = node.style.merge('lineHeight') let fontSize = node.style.merge('fontSize') - let textLines = (this.cacheEditingText || node.nodeData.data.text) + let textLines = (this.cacheEditingText || node.getData('text')) .split(/\n/gim) .map(item => { return htmlEscape(item) diff --git a/simple-mind-map/src/core/render/node/Node.js b/simple-mind-map/src/core/render/node/Node.js index 9bbefcb4..f5ffa986 100644 --- a/simple-mind-map/src/core/render/node/Node.js +++ b/simple-mind-map/src/core/render/node/Node.js @@ -430,7 +430,7 @@ class Node { // 多选和取消多选 if (e.ctrlKey && enableCtrlKeyNodeSelection) { this.isMultipleChoice = true - let isActive = this.nodeData.data.isActive + let isActive = this.getData('isActive') if (!isActive) this.mindMap.emit( 'before_node_active', @@ -493,7 +493,7 @@ class Node { // 如果有且只有当前节点激活了,那么不需要重新激活 if ( !( - this.nodeData.data.isActive && + this.getData('isActive') && this.renderer.activeNodeList.length === 1 ) ) { @@ -510,7 +510,7 @@ class Node { return } e && e.stopPropagation() - if (this.nodeData.data.isActive) { + if (this.getData('isActive')) { return } this.mindMap.emit('before_node_active', this, this.renderer.activeNodeList) @@ -535,7 +535,7 @@ class Node { this.renderExpandBtn() } } else { - let { isActive, expand } = this.nodeData.data + let { isActive, expand } = this.getData() // 展开状态且非激活状态,且当前鼠标不在它上面,才隐藏 if (expand && !isActive && !this._isMouseenter) { this.hideExpandBtn() @@ -602,7 +602,7 @@ class Node { // 更新节点激活状态 updateNodeActive() { if (!this.group) return - const isActive = this.nodeData.data.isActive + const isActive = this.getData('isActive') this.group[isActive ? 'addClass' : 'removeClass']('active') } @@ -635,7 +635,7 @@ class Node { if ( this.children && this.children.length && - this.nodeData.data.expand !== false + this.getData('expand') !== false ) { let index = 0 this.children.forEach(item => { @@ -780,7 +780,7 @@ class Node { // 连线 renderLine(deep = false) { - if (this.nodeData.data.expand === false) { + if (this.getData('expand') === false) { return } let childrenLen = this.nodeData.children.length @@ -902,7 +902,7 @@ class Node { // 获取padding值 getPaddingVale() { - let { isActive } = this.nodeData.data + let { isActive } = this.getData() return { paddingX: this.getStyle('paddingX', true, isActive), paddingY: this.getStyle('paddingY', true, isActive) @@ -945,7 +945,7 @@ class Node { // 获取数据 getData(key) { - return key ? this.nodeData.data[key] || '' : this.nodeData.data + return key ? this.nodeData.data[key] : this.nodeData.data } // 是否存在自定义样式 diff --git a/simple-mind-map/src/core/render/node/Style.js b/simple-mind-map/src/core/render/node/Style.js index b7cb95e4..ecc190f7 100644 --- a/simple-mind-map/src/core/render/node/Style.js +++ b/simple-mind-map/src/core/render/node/Style.js @@ -88,7 +88,7 @@ class Style { // 获取自身自定义样式 getSelfStyle(prop) { - return this.ctx.nodeData.data[prop] + return this.ctx.getData(prop) } // 矩形 @@ -107,7 +107,7 @@ class Style { // !this.ctx.isRoot && // !this.ctx.isGeneralization && // this.ctx.mindMap.themeConfig.nodeUseLineStyle && - // !this.ctx.nodeData.data.isActive + // !this.ctx.getData('isActive') // ) { // return // } @@ -225,7 +225,7 @@ class Style { // 是否设置了自定义的样式 hasCustomStyle() { let res = false - Object.keys(this.ctx.nodeData.data).forEach(item => { + Object.keys(this.ctx.getData()).forEach(item => { if (checkIsNodeStyleDataKey(item)) { res = true } diff --git a/simple-mind-map/src/core/render/node/nodeCreateContents.js b/simple-mind-map/src/core/render/node/nodeCreateContents.js index e4487fa6..13e8ce76 100644 --- a/simple-mind-map/src/core/render/node/nodeCreateContents.js +++ b/simple-mind-map/src/core/render/node/nodeCreateContents.js @@ -12,14 +12,14 @@ import { CONSTANTS, commonCaches } from '../../../constants/constant' // 创建图片节点 function createImgNode() { - let img = this.nodeData.data.image + let img = this.getData('image') if (!img) { return } let imgSize = this.getImgShowSize() let node = new Image().load(img).size(...imgSize) - if (this.nodeData.data.imageTitle) { - node.attr('title', this.nodeData.data.imageTitle) + if (this.getData('imageTitle')) { + node.attr('title', this.getData('imageTitle')) } node.on('dblclick', e => { this.mindMap.emit('node_img_dblclick', this, e) @@ -42,7 +42,7 @@ function createImgNode() { // 获取图片显示宽高 function getImgShowSize() { - const { custom, width, height } = this.nodeData.data.imageSize + const { custom, width, height } = this.getData('imageSize') // 如果是自定义了图片的宽高,那么不受最大宽高限制 if (custom) return [width, height] return resizeImgSize( @@ -55,7 +55,7 @@ function getImgShowSize() { // 创建icon节点 function createIconNode() { - let _data = this.nodeData.data + let _data = this.getData() if (!_data.icon || _data.icon.length <= 0) { return [] } @@ -91,7 +91,7 @@ function createRichTextNode() { let g = new G() // 重新设置富文本节点内容 let recoverText = false - if (this.nodeData.data.resetRichText) { + if (this.getData('resetRichText')) { delete this.nodeData.data.resetRichText recoverText = true } @@ -102,7 +102,7 @@ function createRichTextNode() { } } if (recoverText) { - let text = this.nodeData.data.text + let text = this.getData('text') // 判断节点内容是否是富文本 let isRichText = checkIsRichText(text) // 样式字符串 @@ -116,9 +116,11 @@ function createRichTextNode() { // 非富文本 text = `

${text}

` } - this.nodeData.data.text = text + this.setData({ + text: text + }) } - let html = `
${this.nodeData.data.text}
` + let html = `
${this.getData('text')}
` if (!commonCaches.measureRichtextNodeTextSizeEl) { commonCaches.measureRichtextNodeTextSizeEl = document.createElement('div') commonCaches.measureRichtextNodeTextSizeEl.style.position = 'fixed' @@ -157,7 +159,7 @@ function createRichTextNode() { // 创建文本节点 function createTextNode() { - if (this.nodeData.data.richText) { + if (this.getData('richText')) { return this.createRichTextNode() } let g = new G() @@ -166,8 +168,8 @@ function createTextNode() { // 文本超长自动换行 let textStyle = this.style.getTextFontStyle() let textArr = [] - if (!isUndef(this.nodeData.data.text)) { - textArr = String(this.nodeData.data.text).split(/\n/gim) + if (!isUndef(this.getData('text'))) { + textArr = String(this.getData('text')).split(/\n/gim) } let maxWidth = this.mindMap.opt.textAutoWrapWidth let isMultiLine = false @@ -215,7 +217,7 @@ function createTextNode() { // 创建超链接节点 function createHyperlinkNode() { - let { hyperlink, hyperlinkTitle } = this.nodeData.data + let { hyperlink, hyperlinkTitle } = this.getData() if (!hyperlink) { return } @@ -245,7 +247,7 @@ function createHyperlinkNode() { // 创建标签节点 function createTagNode() { - let tagData = this.nodeData.data.tag + let tagData = this.getData('tag') if (!tagData || tagData.length <= 0) { return [] } @@ -274,7 +276,7 @@ function createTagNode() { // 创建备注节点 function createNoteNode() { - if (!this.nodeData.data.note) { + if (!this.getData('note')) { return null } let iconSize = this.mindMap.themeConfig.iconSize @@ -302,7 +304,7 @@ function createNoteNode() { this.mindMap.opt.customInnerElsAppendTo || document.body targetNode.appendChild(this.noteEl) } - this.noteEl.innerText = this.nodeData.data.note + this.noteEl.innerText = this.getData('note') } node.on('mouseover', () => { let { left, top } = node.node.getBoundingClientRect() @@ -312,7 +314,7 @@ function createNoteNode() { this.noteEl.style.display = 'block' } else { this.mindMap.opt.customNoteContentShow.show( - this.nodeData.data.note, + this.getData('note'), left, top + iconSize ) diff --git a/simple-mind-map/src/core/render/node/nodeExpandBtn.js b/simple-mind-map/src/core/render/node/nodeExpandBtn.js index ee79db27..4f4dee14 100644 --- a/simple-mind-map/src/core/render/node/nodeExpandBtn.js +++ b/simple-mind-map/src/core/render/node/nodeExpandBtn.js @@ -52,7 +52,7 @@ function sumNode(data = []) { } // 创建或更新展开收缩按钮内容 function updateExpandBtnNode() { - let { expand } = this.nodeData.data + let { expand } = this.getData() // 如果本次和上次的展开状态一样则返回 if (expand === this._lastExpandBtnType) return if (this._expandBtn) { @@ -129,7 +129,7 @@ function renderExpandBtn() { this.mindMap.execCommand( 'SET_NODE_EXPAND', this, - !this.nodeData.data.expand + !this.getData('expand') ) this.mindMap.emit('expand_btn_click', this) }) @@ -164,7 +164,7 @@ function showExpandBtn() { function hideExpandBtn() { if (this.mindMap.opt.alwaysShowExpandBtn || this._isMouseenter) return // 非激活状态且展开状态鼠标移出才隐藏按钮 - let { isActive, expand } = this.nodeData.data + let { isActive, expand } = this.getData() if (!isActive && expand) { setTimeout(() => { this.removeExpandBtn() diff --git a/simple-mind-map/src/core/render/node/nodeGeneralization.js b/simple-mind-map/src/core/render/node/nodeGeneralization.js index 09de5d01..61514324 100644 --- a/simple-mind-map/src/core/render/node/nodeGeneralization.js +++ b/simple-mind-map/src/core/render/node/nodeGeneralization.js @@ -3,7 +3,7 @@ import { createUid } from '../../../utils/index' // 检查是否存在概要 function checkHasGeneralization() { - return !!this.nodeData.data.generalization + return !!this.getData('generalization') } // 创建概要节点 @@ -17,7 +17,7 @@ function createGeneralizationNode() { if (!this._generalizationNode) { this._generalizationNode = new Node({ data: { - data: this.nodeData.data.generalization + data: this.getData('generalization') }, uid: createUid(), renderer: this.renderer, @@ -27,7 +27,7 @@ function createGeneralizationNode() { this._generalizationNodeWidth = this._generalizationNode.width this._generalizationNodeHeight = this._generalizationNode.height this._generalizationNode.generalizationBelongNode = this - if (this.nodeData.data.generalization.isActive) { + if (this.getData('generalization').isActive) { this.renderer.addNodeToActiveList(this._generalizationNode) } } @@ -49,7 +49,7 @@ function renderGeneralization() { this._generalizationNodeHeight = 0 return } - if (this.nodeData.data.expand === false) { + if (this.getData('expand') === false) { this.removeGeneralization() return } diff --git a/simple-mind-map/src/layouts/Base.js b/simple-mind-map/src/layouts/Base.js index 43d3713e..f8cdc6b0 100644 --- a/simple-mind-map/src/layouts/Base.js +++ b/simple-mind-map/src/layouts/Base.js @@ -91,7 +91,7 @@ class Base { // 数据上没有保存节点引用,但是通过uid找到了缓存的节点,也可以复用 newNode = this.lru.get(data.data.uid) // 保存该节点上一次的数据 - let lastData = JSON.stringify(newNode.nodeData.data) + let lastData = JSON.stringify(newNode.getData()) let isLayerTypeChange = this.checkIsLayerTypeChange( newNode.layerIndex, layerIndex @@ -132,7 +132,9 @@ class Base { } // 如果当前节点在激活节点列表里,那么添加上激活的状态 if (this.mindMap.renderer.findActiveNodeIndex(newNode) !== -1) { - newNode.nodeData.data.isActive = true + newNode.setData({ + isActive: true + }) } // 根节点 if (isRoot) { @@ -298,12 +300,12 @@ class Base { let { left, right, top, bottom } = walk(child) // 概要内容的宽度 let generalizationWidth = - child.checkHasGeneralization() && child.nodeData.data.expand + child.checkHasGeneralization() && child.getData('expand') ? child._generalizationNodeWidth + generalizationNodeMargin : 0 // 概要内容的高度 let generalizationHeight = - child.checkHasGeneralization() && child.nodeData.data.expand + child.checkHasGeneralization() && child.getData('expand') ? child._generalizationNodeHeight + generalizationNodeMargin : 0 if (left - (dir === 'h' ? generalizationWidth : 0) < _left) { diff --git a/simple-mind-map/src/layouts/CatalogOrganization.js b/simple-mind-map/src/layouts/CatalogOrganization.js index db9b2b0a..84092778 100644 --- a/simple-mind-map/src/layouts/CatalogOrganization.js +++ b/simple-mind-map/src/layouts/CatalogOrganization.js @@ -73,7 +73,7 @@ class CatalogOrganization extends Base { null, (node, parent, isRoot, layerIndex) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -114,7 +114,7 @@ class CatalogOrganization extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 调整left diff --git a/simple-mind-map/src/layouts/Fishbone.js b/simple-mind-map/src/layouts/Fishbone.js index e31f75f7..618c9880 100644 --- a/simple-mind-map/src/layouts/Fishbone.js +++ b/simple-mind-map/src/layouts/Fishbone.js @@ -112,7 +112,7 @@ class Fishbone extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } let params = { node, parent, layerIndex, ctx: this } diff --git a/simple-mind-map/src/layouts/FishboneBottom.js b/simple-mind-map/src/layouts/FishboneBottom.js index ad3aa278..54afda6d 100644 --- a/simple-mind-map/src/layouts/FishboneBottom.js +++ b/simple-mind-map/src/layouts/FishboneBottom.js @@ -127,7 +127,7 @@ class Fishbone extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 调整top diff --git a/simple-mind-map/src/layouts/FishboneTop.js b/simple-mind-map/src/layouts/FishboneTop.js index 23a320b3..2e83bf80 100644 --- a/simple-mind-map/src/layouts/FishboneTop.js +++ b/simple-mind-map/src/layouts/FishboneTop.js @@ -110,7 +110,7 @@ class Fishbone extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 调整top diff --git a/simple-mind-map/src/layouts/LogicalStructure.js b/simple-mind-map/src/layouts/LogicalStructure.js index cad0bf3d..bc7bd793 100644 --- a/simple-mind-map/src/layouts/LogicalStructure.js +++ b/simple-mind-map/src/layouts/LogicalStructure.js @@ -78,7 +78,7 @@ class LogicalStructure extends Base { null, (node, parent, isRoot, layerIndex) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -103,7 +103,7 @@ class LogicalStructure extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 判断子节点所占的高度之和是否大于该节点自身,大于则需要调整位置 diff --git a/simple-mind-map/src/layouts/MindMap.js b/simple-mind-map/src/layouts/MindMap.js index 500bbd2a..36abe5de 100644 --- a/simple-mind-map/src/layouts/MindMap.js +++ b/simple-mind-map/src/layouts/MindMap.js @@ -117,7 +117,7 @@ class MindMap extends Base { null, (node, parent, isRoot, layerIndex) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -148,7 +148,7 @@ class MindMap extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 判断子节点所占的高度之和是否大于该节点自身,大于则需要调整位置 diff --git a/simple-mind-map/src/layouts/OrganizationStructure.js b/simple-mind-map/src/layouts/OrganizationStructure.js index 2e15e068..93192c7a 100644 --- a/simple-mind-map/src/layouts/OrganizationStructure.js +++ b/simple-mind-map/src/layouts/OrganizationStructure.js @@ -79,7 +79,7 @@ class OrganizationStructure extends Base { null, (node, parent, isRoot, layerIndex) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -104,7 +104,7 @@ class OrganizationStructure extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 判断子节点所占的宽度之和是否大于该节点自身,大于则需要调整位置 diff --git a/simple-mind-map/src/layouts/Timeline.js b/simple-mind-map/src/layouts/Timeline.js index b75cf5a3..82fbc9f0 100644 --- a/simple-mind-map/src/layouts/Timeline.js +++ b/simple-mind-map/src/layouts/Timeline.js @@ -81,7 +81,7 @@ class Timeline extends Base { null, (node, parent, isRoot, layerIndex, index) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -122,7 +122,7 @@ class Timeline extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } // 调整left diff --git a/simple-mind-map/src/layouts/VerticalTimeline.js b/simple-mind-map/src/layouts/VerticalTimeline.js index 4a8f722d..bdd06189 100644 --- a/simple-mind-map/src/layouts/VerticalTimeline.js +++ b/simple-mind-map/src/layouts/VerticalTimeline.js @@ -98,7 +98,7 @@ class VerticalTimeline extends Base { null, (node, parent, isRoot, layerIndex, index) => { if ( - node.nodeData.data.expand && + node.getData('expand') && node.children && node.children.length ) { @@ -135,7 +135,7 @@ class VerticalTimeline extends Base { this.root, null, (node, parent, isRoot, layerIndex) => { - if (!node.nodeData.data.expand) { + if (!node.getData('expand')) { return } if (isRoot) return diff --git a/simple-mind-map/src/plugins/AssociativeLine.js b/simple-mind-map/src/plugins/AssociativeLine.js index c6c124a9..bb6ffa13 100644 --- a/simple-mind-map/src/plugins/AssociativeLine.js +++ b/simple-mind-map/src/plugins/AssociativeLine.js @@ -142,7 +142,7 @@ class AssociativeLine { null, cur => { if (!cur) return - let data = cur.nodeData.data + let data = cur.getData() if ( data.associativeLineTargets && data.associativeLineTargets.length > 0 @@ -161,7 +161,7 @@ class AssociativeLine { ids.forEach((uid, index) => { let toNode = idToNode.get(uid) if (!node || !toNode) return - const associativeLinePoint = (node.nodeData.data.associativeLinePoint || + const associativeLinePoint = (node.getData('associativeLinePoint') || [])[index] // 切换结构和布局,都会更新坐标 const [startPoint, endPoint] = this.updateAllLinesPos( @@ -364,7 +364,7 @@ class AssociativeLine { checkOverlapNode(x, y) { this.overlapNode = null bfsWalk(this.mindMap.renderer.root, node => { - if (node.nodeData.data.isActive) { + if (node.getData('isActive')) { this.mindMap.execCommand('SET_NODE_ACTIVE', node, false) } if (node.uid === this.creatingStartNode.uid || this.overlapNode) { @@ -377,7 +377,7 @@ class AssociativeLine { this.overlapNode = node } }) - if (this.overlapNode && !this.overlapNode.nodeData.data.isActive) { + if (this.overlapNode && !this.overlapNode.getData('isActive')) { this.mindMap.execCommand('SET_NODE_ACTIVE', this.overlapNode, true) } } @@ -386,7 +386,7 @@ class AssociativeLine { completeCreateLine(node) { if (this.creatingStartNode.uid === node.uid) return this.addLine(this.creatingStartNode, node) - if (this.overlapNode && this.overlapNode.nodeData.data.isActive) { + if (this.overlapNode && this.overlapNode.getData('isActive')) { this.mindMap.execCommand('SET_NODE_ACTIVE', this.overlapNode, false) } this.isCreatingLine = false @@ -401,7 +401,7 @@ class AssociativeLine { addLine(fromNode, toNode) { if (!fromNode || !toNode) return // 目标节点如果没有id,则生成一个id - let uid = toNode.nodeData.data.uid + let uid = toNode.getData('uid') if (!uid) { uid = uuid() this.mindMap.execCommand('SET_NODE_DATA', toNode, { @@ -409,7 +409,7 @@ class AssociativeLine { }) } // 将目标节点id保存起来 - let list = fromNode.nodeData.data.associativeLineTargets || [] + let list = fromNode.getData('associativeLineTargets') || [] // 连线节点是否存在相同的id,存在则阻止添加关联线 const sameLine = list.some(item => item === uid) if (sameLine) { @@ -425,7 +425,7 @@ class AssociativeLine { endPoint.y ) let offsetList = - fromNode.nodeData.data.associativeLineTargetControlOffsets || [] + fromNode.getData('associativeLineTargetControlOffsets') || [] // 保存的实际是控制点和端点的差值,否则当节点位置改变了,控制点还是原来的位置,连线就不对了 offsetList[list.length - 1] = [ { @@ -437,7 +437,7 @@ class AssociativeLine { y: controlPoints[1].y - endPoint.y } ] - let associativeLinePoint = fromNode.nodeData.data.associativeLinePoint || [] + let associativeLinePoint = fromNode.getData('associativeLinePoint') || [] // 记录关联的起始|结束坐标 associativeLinePoint[list.length - 1] = { startPoint, endPoint } this.mindMap.execCommand('SET_NODE_DATA', fromNode, { @@ -457,14 +457,14 @@ class AssociativeLine { associativeLinePoint, associativeLineTargetControlOffsets, associativeLineText - } = node.nodeData.data + } = node.getData() associativeLinePoint = associativeLinePoint || [] let targetIndex = getAssociativeLineTargetIndex(node, toNode) // 更新关联线文本数据 let newAssociativeLineText = {} if (associativeLineText) { Object.keys(associativeLineText).forEach(item => { - if (item !== toNode.nodeData.data.uid) { + if (item !== toNode.getData('uid')) { newAssociativeLineText[item] = associativeLineText[item] } }) diff --git a/simple-mind-map/src/plugins/Drag.js b/simple-mind-map/src/plugins/Drag.js index 37b92135..9752022f 100644 --- a/simple-mind-map/src/plugins/Drag.js +++ b/simple-mind-map/src/plugins/Drag.js @@ -109,10 +109,10 @@ class Drag extends Base { }) this.removeCloneNode() let overlapNodeUid = this.overlapNode - ? this.overlapNode.nodeData.data.uid + ? this.overlapNode.getData('uid') : '' - let prevNodeUid = this.prevNode ? this.prevNode.nodeData.data.uid : '' - let nextNodeUid = this.nextNode ? this.nextNode.nodeData.data.uid : '' + let prevNodeUid = this.prevNode ? this.prevNode.getData('uid') : '' + let nextNodeUid = this.nextNode ? this.nextNode.getData('uid') : '' // 存在重叠子节点,则移动作为其子节点 if (this.overlapNode) { this.mindMap.execCommand('SET_NODE_ACTIVE', this.overlapNode, false) @@ -205,7 +205,7 @@ class Drag extends Base { this.offsetX = this.mouseDownX - (node.left * scaleX + translateX) this.offsetY = this.mouseDownY - (node.top * scaleY + translateY) // 如果鼠标按下的节点是激活节点,那么保存当前所有激活的节点 - if (node.nodeData.data.isActive) { + if (node.getData('isActive')) { // 找出这些激活节点中的最顶层节点 this.beingDragNodeList = getTopAncestorsFomNodeList( // 过滤掉根节点和概要节点 @@ -317,7 +317,7 @@ class Drag extends Base { this.nextNode = null this.placeholder.size(0, 0) this.nodeList.forEach(node => { - if (node.nodeData.data.isActive) { + if (node.getData('isActive')) { this.mindMap.execCommand('SET_NODE_ACTIVE', node, false) } if (this.overlapNode || (this.prevNode && this.nextNode)) { diff --git a/simple-mind-map/src/plugins/NodeImgAdjust.js b/simple-mind-map/src/plugins/NodeImgAdjust.js index 9913ed33..b3a53816 100644 --- a/simple-mind-map/src/plugins/NodeImgAdjust.js +++ b/simple-mind-map/src/plugins/NodeImgAdjust.js @@ -205,7 +205,7 @@ class NodeImgAdjust { // 隐藏节点实际图片 this.hideNodeImage() // 将节点图片渲染到自定义元素上 - this.handleEl.style.backgroundImage = `url(${this.node.nodeData.data.image})` + this.handleEl.style.backgroundImage = `url(${this.node.getData('image')})` } // 鼠标移动 @@ -214,7 +214,7 @@ class NodeImgAdjust { e.preventDefault() // 计算当前拖拽位置对应的图片的实时大小 let { width: imageOriginWidth, height: imageOriginHeight } = - this.node.nodeData.data.imageSize + this.node.getData('imageSize') let newWidth = e.clientX - this.rect.x let newHeight = e.clientY - this.rect.y if (newWidth <= 0 || newHeight <= 0) return @@ -237,7 +237,7 @@ class NodeImgAdjust { // 隐藏自定义元素 this.hideHandleEl() // 更新节点图片为新的大小 - let { image, imageTitle } = this.node.nodeData.data + let { image, imageTitle } = this.node.getData() let { scaleX, scaleY } = this.mindMap.draw.transform() this.mindMap.execCommand('SET_NODE_IMAGE', this.node, { url: image, diff --git a/simple-mind-map/src/plugins/Painter.js b/simple-mind-map/src/plugins/Painter.js index 5dd0be52..388b4290 100644 --- a/simple-mind-map/src/plugins/Painter.js +++ b/simple-mind-map/src/plugins/Painter.js @@ -53,7 +53,7 @@ class Painter { ) return const style = {} - const painterNodeData = this.painterNode.nodeData.data + const painterNodeData = this.painterNode.getData() Object.keys(painterNodeData).forEach(key => { if (checkIsNodeStyleDataKey(key)) { style[key] = painterNodeData[key] diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 785abb98..092caa70 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -236,17 +236,17 @@ class RichText { this.textEditNode.style.borderRadius = (node.height || 50) + 'px' } } - if (!node.nodeData.data.richText) { + if (!node.getData('richText')) { // 还不是富文本的情况 let text = '' - if (!isUndef(node.nodeData.data.text)) { - text = String(node.nodeData.data.text).split(/\n/gim).join('
') + if (!isUndef(node.getData('text'))) { + text = String(node.getData('text')).split(/\n/gim).join('
') } let html = `

${text}

` this.textEditNode.innerHTML = this.cacheEditingText || html } else { this.textEditNode.innerHTML = - this.cacheEditingText || node.nodeData.data.text + this.cacheEditingText || node.getData('text') } this.initQuillEditor() document.querySelector('.ql-editor').style.minHeight = originHeight + 'px' @@ -256,7 +256,7 @@ class RichText { this.focus( isInserting || (selectTextOnEnterEditText && !isFromKeyDown) ? 0 : null ) - if (!node.nodeData.data.richText) { + if (!node.getData('richText')) { // 如果是非富文本的情况,需要手动应用文本样式 this.setTextStyleIfNotRichText(node) } diff --git a/simple-mind-map/src/plugins/Search.js b/simple-mind-map/src/plugins/Search.js index 77afa6df..5609295c 100644 --- a/simple-mind-map/src/plugins/Search.js +++ b/simple-mind-map/src/plugins/Search.js @@ -73,7 +73,7 @@ class Search { this.matchNodeList = [] this.currentIndex = -1 bfsWalk(this.mindMap.renderer.root, node => { - let { richText, text } = node.nodeData.data + let { richText, text } = node.getData() if (richText) { text = getTextFromHtml(text) } @@ -115,7 +115,7 @@ class Search { if (!currentNode) return let text = this.getReplacedText(currentNode, this.searchText, replaceText) this.notResetSearchText = true - currentNode.setText(text, currentNode.nodeData.data.richText, true) + currentNode.setText(text, currentNode.getData('richText'), true) this.matchNodeList = this.matchNodeList.filter(node => { return currentNode !== node }) @@ -143,7 +143,7 @@ class Search { node, { text, - resetRichText: !!node.nodeData.data.richText + resetRichText: !!node.getData('richText') }, true ) @@ -155,7 +155,7 @@ class Search { // 获取某个节点替换后的文本 getReplacedText(node, searchText, replaceText) { - let { richText, text } = node.nodeData.data + let { richText, text } = node.getData() if (richText) { return replaceHtmlText(text, searchText, replaceText) } else { diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index e910c3c0..8ce6d761 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -124,7 +124,7 @@ class Select { let cur = this.cacheActiveList[i] if ( !this.mindMap.renderer.activeNodeList.find(item => { - return item.nodeData.data.uid === cur.nodeData.data.uid + return item.getData('uid') === cur.getData('uid') }) ) { isNodeChange = true @@ -218,12 +218,12 @@ class Select { if ( checkTwoRectIsOverlap(minx, maxx, miny, maxy, left, right, top, bottom) ) { - if (node.nodeData.data.isActive) { + if (node.getData('isActive')) { return } this.mindMap.renderer.addNodeToActiveList(node) - } else if (node.nodeData.data.isActive) { - if (!node.nodeData.data.isActive) { + } else if (node.getData('isActive')) { + if (!node.getData('isActive')) { return } this.mindMap.renderer.removeNodeFromActiveList(node) diff --git a/simple-mind-map/src/plugins/associativeLine/associativeLineControls.js b/simple-mind-map/src/plugins/associativeLine/associativeLineControls.js index fbd93d24..a2a4bb90 100644 --- a/simple-mind-map/src/plugins/associativeLine/associativeLineControls.js +++ b/simple-mind-map/src/plugins/associativeLine/associativeLineControls.js @@ -64,7 +64,7 @@ function onControlPointMousemove(e) { let [, , , node, toNode] = this.activeLine let targetIndex = getAssociativeLineTargetIndex(node, toNode) let { associativeLinePoint, associativeLineTargetControlOffsets } = - node.nodeData.data + node.getData() associativeLinePoint = associativeLinePoint || [] const nodePos = this.getNodePos(node) const toNodePos = this.getNodePos(toNode) @@ -160,7 +160,7 @@ function onControlPointMouseup(e) { let [, , , node] = this.activeLine let offsetList = [] let { associativeLinePoint, associativeLineTargetControlOffsets } = - node.nodeData.data + node.getData() if (!associativeLinePoint) { associativeLinePoint = [] } diff --git a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js index 3bd77ae3..e130dc7a 100644 --- a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js +++ b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js @@ -110,8 +110,8 @@ function hideEditTextBox() { str = isDefaultText ? '' : str this.mindMap.execCommand('SET_NODE_DATA', node, { associativeLineText: { - ...(node.nodeData.data.associativeLineText || {}), - [toNode.nodeData.data.uid]: str + ...(node.getData('associativeLineText') || {}), + [toNode.getData('uid')]: str } }) this.textEditNode.style.display = 'none' @@ -123,11 +123,11 @@ function hideEditTextBox() { // 获取某根关联线的文字 function getText(node, toNode) { - let obj = node.nodeData.data.associativeLineText + let obj = node.getData('associativeLineText') if (!obj) { return '' } - return obj[toNode.nodeData.data.uid] || '' + return obj[toNode.getData('uid')] || '' } // 渲染关联线文字 diff --git a/simple-mind-map/src/plugins/associativeLine/associativeLineUtils.js b/simple-mind-map/src/plugins/associativeLine/associativeLineUtils.js index ca46b6f8..12888906 100644 --- a/simple-mind-map/src/plugins/associativeLine/associativeLineUtils.js +++ b/simple-mind-map/src/plugins/associativeLine/associativeLineUtils.js @@ -1,7 +1,7 @@ // 获取目标节点在起始节点的目标数组中的索引 export const getAssociativeLineTargetIndex = (node, toNode) => { - return node.nodeData.data.associativeLineTargets.findIndex(item => { - return item === toNode.nodeData.data.uid + return node.getData('associativeLineTargets').findIndex(item => { + return item === toNode.getData('uid') }) } @@ -231,7 +231,7 @@ export const getNodeLinePath = (startPoint, endPoint, node, toNode) => { // 控制点 let controlPoints = [] let associativeLineTargetControlOffsets = - node.nodeData.data.associativeLineTargetControlOffsets + node.getData('associativeLineTargetControlOffsets') if ( associativeLineTargetControlOffsets && associativeLineTargetControlOffsets[targetIndex]