From b3d16a60b8ae56e8cfefa8067067ca105a57dcd9 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: Thu, 21 Mar 2024 09:29:08 +0800 Subject: [PATCH] Doc: update --- README.md | 4 + web/src/assets/avatar/风格.jpg | Bin 0 -> 36070 bytes web/src/pages/Doc/en/introduction/index.md | 4 + web/src/pages/Doc/en/introduction/index.vue | 4 + web/src/pages/Doc/zh/introduction/index.md | 4 + web/src/pages/Doc/zh/introduction/index.vue | 4 + web/src/pages/Edit/components/Edit.vue | 173 +++++++++++++++++++- 7 files changed, 189 insertions(+), 4 deletions(-) create mode 100644 web/src/assets/avatar/风格.jpg diff --git a/README.md b/README.md index 1d963d11..8be3104f 100644 --- a/README.md +++ b/README.md @@ -302,4 +302,8 @@ const mindMap = new MindMap({ 皇登攀 + + + 风格 +

diff --git a/web/src/assets/avatar/风格.jpg b/web/src/assets/avatar/风格.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5536343f95132ed45a0d0083f91bcdcd3f29bb91 GIT binary patch literal 36070 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 f$Ssm^jOe2fX&I_ZAK?cWhOsC

皇登攀

+
+ +

风格

+
\ No newline at end of file diff --git a/web/src/pages/Doc/en/introduction/index.vue b/web/src/pages/Doc/en/introduction/index.vue index d76202ca..d88a68d6 100644 --- a/web/src/pages/Doc/en/introduction/index.vue +++ b/web/src/pages/Doc/en/introduction/index.vue @@ -285,6 +285,10 @@ full screen, support mini map

皇登攀

+
+ +

风格

+
diff --git a/web/src/pages/Doc/zh/introduction/index.md b/web/src/pages/Doc/zh/introduction/index.md index b07ace27..e774e18b 100644 --- a/web/src/pages/Doc/zh/introduction/index.md +++ b/web/src/pages/Doc/zh/introduction/index.md @@ -324,4 +324,8 @@

皇登攀

+
+ +

风格

+
\ No newline at end of file diff --git a/web/src/pages/Doc/zh/introduction/index.vue b/web/src/pages/Doc/zh/introduction/index.vue index 9489322a..de93c78c 100644 --- a/web/src/pages/Doc/zh/introduction/index.vue +++ b/web/src/pages/Doc/zh/introduction/index.vue @@ -279,6 +279,10 @@

皇登攀

+
+ +

风格

+
diff --git a/web/src/pages/Edit/components/Edit.vue b/web/src/pages/Edit/components/Edit.vue index 70d49932..7f8605b1 100644 --- a/web/src/pages/Edit/components/Edit.vue +++ b/web/src/pages/Edit/components/Edit.vue @@ -46,7 +46,7 @@ import Painter from 'simple-mind-map/src/plugins/Painter.js' import ScrollbarPlugin from 'simple-mind-map/src/plugins/Scrollbar.js' import Formula from 'simple-mind-map/src/plugins/Formula.js' // 协同编辑插件 -// import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js' +import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js' // 手绘风格插件,该插件为付费插件,详情请查看开发文档 // import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle' import OutlineSidebar from './OutlineSidebar' @@ -82,6 +82,7 @@ import handleClipboardText from '@/utils/handleClipboardText' import Scrollbar from './Scrollbar.vue' import exampleData from 'simple-mind-map/example/exampleData' import FormulaSidebar from './FormulaSidebar.vue' +import { isSameObject } from 'simple-mind-map/src/utils'; // 注册插件 MindMap.usePlugin(MiniMap) @@ -98,7 +99,11 @@ MindMap.usePlugin(MiniMap) .usePlugin(SearchPlugin) .usePlugin(Painter) .usePlugin(Formula) -// .usePlugin(Cooperate) // 协同插件 +.usePlugin(Cooperate) // 协同插件 + +const request = (data) => { + console.log(data) +} // 注册自定义主题 customThemeList.forEach(item => { @@ -305,7 +310,7 @@ export default { this.mindMap = new MindMap({ el: this.$refs.mindMapContainer, data: root, - fit: false, + fit: true, layout: layout, theme: theme.template, themeConfig: theme.config, @@ -348,6 +353,150 @@ export default { default: break } + }, + onlyOneEnableActiveNodeOnCooperate: true, + beforeCooperateUpdate: ({ type, list, data }) => { + const { title, userINumber } = this.$route.meta + // 所有节点数据 + const allData = data + // 创建或更新节点 + if (type === 'createOrUpdate') { + // 获取节点的父节点的uid + const getParentUid = uid => { + let res = null + Object.keys(allData).forEach(item => { + if (allData[item].children.includes(uid)) { + res = allData[item].data + } + }) + return res ? res.uid : '' + } + // 找出新创建的 + const crateList = list + .filter(({ oldData }) => { + return !oldData + }) + .map(({ uid }) => { + return uid + }) + // 遍历所有创建或更新的节点列表 + list.forEach(({ uid, data, oldData }) => { + // 更新版本号 + if (data.data.version === undefined) { + data.data.version = 0 + } + const newVersion = data.data.version + 1 + data.data.version = newVersion + const targetNode = this.mindMap.renderer.findNodeByUid(uid) + if (targetNode) { + targetNode.setData({ + version: newVersion + }) + } + // 调接口 + if (!oldData) { + // 新增节点 + request({ + url: `/addOneNode/${title}/${userINumber}`, + method: 'post', + data: { + parentNodeId: getParentUid(uid), + newNodeContent: JSON.stringify(data.data) + } + }) + } else { + // 更新节点 + const oldChildrenLength = oldData.children.length + const newChildrenLength = data.children.length + if (oldChildrenLength !== newChildrenLength) { + if (newChildrenLength > oldChildrenLength) { + const moveList = data.children.filter(item => { + return ( + !oldData.children.includes(item) && + !crateList.includes(item) + ) + }) + moveList.forEach(item => { + request({ + url: `/changeNodeParentNode/${title}/${userINumber}`, + method: 'post', + data: { + movedNodeId: item, + newParentNodeId: uid + } + }) + }) + } + } else { + if (!isSameObject(data.data, oldData.data)) { + // 关联线 + const associativeLineTargets = + data.data.associativeLineTargets || [] + const oldDataAssociativeLineTargets = + oldData.data.associativeLineTargets || [] + const newTargets = [] + const deleteTargets = [] + associativeLineTargets.forEach(item => { + if (!oldDataAssociativeLineTargets.includes(item)) { + newTargets.push(item) + } + }) + oldDataAssociativeLineTargets.forEach(item => { + if (!associativeLineTargets.includes(item)) { + deleteTargets.push(item) + } + }) + // 添加关联线 + if (newTargets.length > 0) { + newTargets.forEach(item => { + request({ + url: `/addAssociationLine/${title}/${userINumber}`, + method: 'post', + data: { + startNodeId: uid, + endNodeId: item + } + }) + }) + } else if (deleteTargets.length > 0) { + // 删除关联线 + deleteTargets.forEach(item => { + request({ + url: `/deleteAssociationLine/${title}/${userINumber}`, + method: 'post', + data: { + startNodeId: uid, + endNodeId: item + } + }) + }) + } else { + // 更新节点自身内容 + request({ + url: `/updateOneNodeContent/${title}/${userINumber}`, + method: 'post', + data: { + mindMapName: title, + nodeId: uid, + jsonContent: JSON.stringify(data.data) + } + }) + } + } + } + } + }) + } else if (type === 'delete') { + // 删除 + const res = this.getTopIdList(list) + request({ + url: `/deleteNodeList/${title}/${userINumber}`, + method: 'post', + data: { + idList: res + } + }) + } } // beforeShortcutRun: (key, activeNodeList) => { // console.log(key, activeNodeList) @@ -478,6 +627,22 @@ export default { // }, 5000) }, + // 获取被删除节点的顶层节点的uid列表 + getTopIdList(list) { + const res = [] + list.forEach((item) => { + const hasParent = list.find((item2) => { + return item2.data.children.includes(item.uid) + }) + if (!hasParent) { + res.push(item) + } + }) + return res.map((item) => { + return item.uid + }) + }, + // url中是否存在要打开的文件 hasFileURL() { const fileURL = this.$route.query.fileURL @@ -710,7 +875,7 @@ export default { if (this.mindMap.cooperate && this.$route.query.userName) { this.mindMap.cooperate.setProvider(null, { roomName: 'demo-room', - signalingList: ['ws://10.16.83.11:4444'] + signalingList: ['ws://10.16.83.118:4444'] }) this.mindMap.cooperate.setUserInfo({ id: Math.random(),