代码优化

This commit is contained in:
街角小林 2024-03-08 11:15:02 +08:00
parent a114631a66
commit 6055a04ec5
2 changed files with 20 additions and 7 deletions

View File

@ -31,6 +31,8 @@ class MindMap {
constructor(opt = {}) { constructor(opt = {}) {
// 合并选项 // 合并选项
this.opt = this.handleOpt(merge(defaultOpt, opt)) this.opt = this.handleOpt(merge(defaultOpt, opt))
// 预处理节点数据
this.opt.data = this.handleData(this.opt.data)
// 容器元素 // 容器元素
this.el = this.opt.el this.el = this.opt.el
@ -98,8 +100,6 @@ class MindMap {
// 配置参数处理 // 配置参数处理
handleOpt(opt) { handleOpt(opt) {
// 深拷贝一份节点数据
opt.data = this.handleData(opt.data)
// 检查布局配置 // 检查布局配置
if (!layoutValueList.includes(opt.layout)) { if (!layoutValueList.includes(opt.layout)) {
opt.layout = CONSTANTS.LAYOUT.LOGICAL_STRUCTURE opt.layout = CONSTANTS.LAYOUT.LOGICAL_STRUCTURE
@ -113,7 +113,7 @@ class MindMap {
handleData(data) { handleData(data) {
data = simpleDeepClone(data || {}) data = simpleDeepClone(data || {})
// 根节点不能收起 // 根节点不能收起
if (!data.data.expand) { if (data.data && !data.data.expand) {
data.data.expand = true data.data.expand = true
} }
return data return data
@ -319,6 +319,7 @@ class MindMap {
// 动态设置思维导图数据,纯节点数据 // 动态设置思维导图数据,纯节点数据
setData(data) { setData(data) {
data = this.handleData(data) data = this.handleData(data)
this.opt.data = data
this.execCommand('CLEAR_ACTIVE_NODE') this.execCommand('CLEAR_ACTIVE_NODE')
this.command.clearHistory() this.command.clearHistory()
this.command.addHistory() this.command.addHistory()

View File

@ -28,6 +28,8 @@ class Cooperate {
this.currentData = null this.currentData = null
// 用户信息 // 用户信息
this.userInfo = null this.userInfo = null
// 是否正在重新设置思维导图数据
this.isSetData = false
// 绑定事件 // 绑定事件
this.bindEvent() this.bindEvent()
// 处理实例化时传入的思维导图数据 // 处理实例化时传入的思维导图数据
@ -92,8 +94,8 @@ class Cooperate {
this.mindMap.on('node_tree_render_end', this.onNodeTreeRenderEnd) this.mindMap.on('node_tree_render_end', this.onNodeTreeRenderEnd)
// 监听设置思维导图数据事件 // 监听设置思维导图数据事件
this.initData = this.initData.bind(this) this.onSetData = this.onSetData.bind(this)
this.mindMap.on('set_data', this.initData) this.mindMap.on('set_data', this.onSetData)
} }
// 解绑事件 // 解绑事件
@ -104,7 +106,7 @@ class Cooperate {
this.mindMap.off('data_change', this.onDataChange) this.mindMap.off('data_change', this.onDataChange)
this.mindMap.off('node_active', this.onNodeActive) this.mindMap.off('node_active', this.onNodeActive)
this.mindMap.off('node_tree_render_end', this.onNodeTreeRenderEnd) this.mindMap.off('node_tree_render_end', this.onNodeTreeRenderEnd)
this.mindMap.off('set_data', this.initData) this.mindMap.off('set_data', this.onSetData)
this.ydoc.destroy() this.ydoc.destroy()
} }
@ -125,6 +127,10 @@ class Cooperate {
// 当前思维导图改变后的处理,触发同步 // 当前思维导图改变后的处理,触发同步
onDataChange(data) { onDataChange(data) {
if (this.isSetData) {
this.isSetData = false
return
}
const res = transformTreeDataToObject(data) const res = transformTreeDataToObject(data)
this.updateChanges(res) this.updateChanges(res)
} }
@ -143,7 +149,7 @@ class Cooperate {
createOrUpdateList.push({ createOrUpdateList.push({
uid, uid,
data: data[uid], data: data[uid],
oldData: oldData[uid], oldData: oldData[uid]
}) })
} }
}) })
@ -203,6 +209,12 @@ class Cooperate {
this.waitNodeUidMap = {} this.waitNodeUidMap = {}
} }
// 监听思维导图数据的重新设置事件
onSetData(data) {
this.isSetData = true
this.initData(data)
}
// 设置用户信息 // 设置用户信息
/** /**
* { * {