diff --git a/README.md b/README.md index 7f8fe810..c10c720e 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,17 @@ 2.`web` -使用`simple-mind-map`工具库,基于`vue2.x`、`ElementUI`搭建的在线思维导图。 +使用`simple-mind-map`工具库,基于`vue2.x`、`ElementUI`搭建的在线思维导图。特性: + +- [x] 工具栏,支持插入节点、删除节点;编辑节点图片、图标、超链接、备注、标签、概要 + +- [x] 侧边栏,基础样式设置面板、节点样式设置面板、大纲面板、主题选择面板、结构选择面板 + +- [x] 导入导出功能;数据默认保存在浏览器本地存储,也支持直接创建、打开、编辑电脑本地文件 + +- [x] 右键菜单,支持展开、收起、整理布局等操作 + +- [x] 底部栏,支持节点数量、字数统计;支持切换编辑和只读模式;支持放大缩小;支持全屏切换 3.`dist` @@ -91,7 +101,7 @@ npm run build # 安装 -> 当然仓库版本:0.2.8,当前npm版本:0.2.8 +> 当然仓库版本:0.2.9,当前npm版本:0.2.9 ```bash npm i simple-mind-map @@ -303,8 +313,6 @@ v0.1.7+。切换模式为只读或编辑。 | RESET_LAYOUT(v0.2.0+) | 一键整理布局 | | | SET_NODE_SHAPE(v0.2.4+) | 设置节点形状 | node(要设置的节点)、shape(形状,全部形状:https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/Shape.js) | - - #### setData(data) 动态设置思维导图数据,纯节点数据 @@ -319,6 +327,14 @@ v0.2.7+ `data`:完整数据,结构可参考[exportFullData](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exportFullData.json) +#### getData(withConfig) + +v0.2.9+ + +获取思维导图数据 + +`withConfig`:`Boolean`,默认为`false`,即获取的数据只包括节点树,如果传`true`则会包含主题、布局、视图等数据 + #### export(type, isDownload, fileName) 导出 diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index b8738a54..6ed87c18 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -17,6 +17,7 @@ import { SVG } from '@svgdotjs/svg.js' import xmind from './src/parse/xmind' +import { simpleDeepClone } from './src/utils'; // 默认选项配置 const defaultOpt = { @@ -355,6 +356,31 @@ class MindMap { } } + /** + * javascript comment + * @Author: 王林 + * @Date: 2022-09-24 14:42:07 + * @Desc: 获取思维导图数据,节点树、主题、布局等 + */ + getData(withConfig) { + let nodeData = this.command.getCopyData() + let data = {} + if (withConfig) { + data = { + layout: this.getLayout(), + root: nodeData, + theme: { + template: this.getTheme(), + config: this.getCustomThemeConfig() + }, + view: this.view.getTransformData() + } + } else { + data = nodeData + } + return simpleDeepClone(data) + } + /** * @Author: 王林 * @Date: 2021-07-01 22:06:38 diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index 4fa34939..960626ea 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -1,6 +1,6 @@ { "name": "simple-mind-map", - "version": "0.2.8", + "version": "0.2.9", "description": "一个简单的web在线思维导图", "authors": [ { diff --git a/simple-mind-map/src/Export.js b/simple-mind-map/src/Export.js index f3b25a96..13baac0b 100644 --- a/simple-mind-map/src/Export.js +++ b/simple-mind-map/src/Export.js @@ -249,21 +249,7 @@ class Export { * @Desc: 导出为json */ json (name, withConfig = true) { - let nodeData = this.mindMap.command.getCopyData() - let data = {} - if (withConfig) { - data = { - layout: this.mindMap.getLayout(), - root: nodeData, - theme: { - template: this.mindMap.getTheme(), - config: this.mindMap.getCustomThemeConfig() - }, - view: this.mindMap.view.getTransformData() - } - } else { - data = nodeData - } + let data = this.mindMap.getData(withConfig) let str = JSON.stringify(data) let blob = new Blob([str]) return URL.createObjectURL(blob) diff --git a/web/src/.DS_Store b/web/src/.DS_Store index b6ab7531..568d022a 100644 Binary files a/web/src/.DS_Store and b/web/src/.DS_Store differ diff --git a/web/src/api/index.js b/web/src/api/index.js index 33b52155..fc3cea4d 100644 --- a/web/src/api/index.js +++ b/web/src/api/index.js @@ -1,5 +1,6 @@ import exampleData from "simple-mind-map/example/exampleData" import { simpleDeepClone } from 'simple-mind-map/src/utils/index' +import Vue from 'vue' const SIMPLE_MIND_MAP_DATA = 'SIMPLE_MIND_MAP_DATA' @@ -47,6 +48,7 @@ export const storeData = (data) => { try { let originData = getData() originData.root = copyMindMapTreeData({}, data) + Vue.prototype.$bus.$emit('write_local_file', originData) let dataStr = JSON.stringify(originData) localStorage.setItem(SIMPLE_MIND_MAP_DATA, dataStr) } catch (error) { @@ -66,6 +68,7 @@ export const storeConfig = (config) => { ...originData, ...config } + Vue.prototype.$bus.$emit('write_local_file', originData) let dataStr = JSON.stringify(originData) localStorage.setItem(SIMPLE_MIND_MAP_DATA, dataStr) } catch (error) { diff --git a/web/src/assets/.DS_Store b/web/src/assets/.DS_Store index a1654cd4..96b41531 100644 Binary files a/web/src/assets/.DS_Store and b/web/src/assets/.DS_Store differ diff --git a/web/src/assets/icon-font/.DS_Store b/web/src/assets/icon-font/.DS_Store index 3f691a8f..5008ddfc 100644 Binary files a/web/src/assets/icon-font/.DS_Store and b/web/src/assets/icon-font/.DS_Store differ diff --git a/web/src/assets/icon-font/demo_index.html b/web/src/assets/icon-font/demo_index.html index 30c6b028..830536f3 100644 --- a/web/src/assets/icon-font/demo_index.html +++ b/web/src/assets/icon-font/demo_index.html @@ -3,8 +3,8 @@ iconfont Demo - - + + @@ -54,6 +54,36 @@