1.demo:大纲支持点击后定位节点,支持添加节点;2.完善问题

This commit is contained in:
wanglin2
2023-03-21 09:35:34 +08:00
parent 5313b9b69c
commit 6bd10d9451
14 changed files with 100 additions and 16 deletions

View File

@@ -92,6 +92,10 @@ export default {
margin: 10px 0;
}
h4 {
margin-bottom: 10px;
}
p {
margin-bottom: 20px;
}

View File

@@ -1,5 +1,11 @@
# Changelog
## 0.4.6
optimization: 1.When adding historical data, filter data that has not changed compared to the previous time
Fix: 1.Fixed a conflict between the direction keys and the navigation function of the direction keys during node editing. 2.Fixed the issue of node id loss when dragging a mobile node, which can cause associated lines to be lost.
## 0.4.5
New: 1.Supports associative lines. 2.You can also drag the canvas by holding down the root node. 3. Hold down the ctrl key to adjust multiple selected nodes.

View File

@@ -1,6 +1,9 @@
<template>
<div>
<h1>Changelog</h1>
<h2>0.4.6</h2>
<p>optimization: 1.When adding historical data, filter data that has not changed compared to the previous time</p>
<p>Fix: 1.Fixed a conflict between the direction keys and the navigation function of the direction keys during node editing. 2.Fixed the issue of node id loss when dragging a mobile node, which can cause associated lines to be lost.</p>
<h2>0.4.5</h2>
<p>New: 1.Supports associative lines. 2.You can also drag the canvas by holding down the root node. 3. Hold down the ctrl key to adjust multiple selected nodes.</p>
<h2>0.4.4</h2>

View File

@@ -269,8 +269,8 @@ redo. All commands are as follows:
| SELECT_ALL | Select all | |
| BACK | Go back a specified number of steps | step (the number of steps to go back, default is 1) |
| FORWARD | Go forward a specified number of steps | step (the number of steps to go forward, default is 1) |
| INSERT_NODE | Insert a sibling node, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective | |
| INSERT_CHILD_NODE | Insert a child node, the active node will be the operation node | |
| INSERT_NODE | Insert a sibling node, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective | openEditv0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is `true` |
| INSERT_CHILD_NODE | Insert a child node, the active node will be the operation node | openEditv0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is `true` |
| UP_NODE | Move node up, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective. Using this command on the root node or the first node in the list will be invalid | |
| DOWN_NODE | Move node down, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective. Using this command on the root node or the last node in the list will be invalid | |
| REMOVE_NODE | Remove node, the active node will be the operation node | |

View File

@@ -531,12 +531,12 @@ redo. All commands are as follows:</p>
<tr>
<td>INSERT_NODE</td>
<td>Insert a sibling node, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective</td>
<td></td>
<td>openEditv0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is <code>true</code></td>
</tr>
<tr>
<td>INSERT_CHILD_NODE</td>
<td>Insert a child node, the active node will be the operation node</td>
<td></td>
<td>openEditv0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is <code>true</code></td>
</tr>
<tr>
<td>UP_NODE</td>

View File

@@ -72,7 +72,11 @@ Copy render tree data, example:
copyRenderTree({}, this.mindMap.renderer.renderTree);
```
#### copyNodeTree(tree, root)
#### copyNodeTree(tree, root, removeActiveState, keepId)
- `removeActiveState`: `Boolean`, default is `false`, Whether to remove the active state of the node
- `keepId`: v0.4.6+, `Boolean`, default is `false`, Whether to retain the `id` of the replicated node will be deleted by default to prevent duplicate node `id`. However, for mobile node scenarios, the original `id` of the node needs to be retained
Copy node tree data, mainly eliminating the reference `node` instance `_node`
and copying the `data` of the data object, example:

View File

@@ -39,7 +39,15 @@ basic data, otherwise it will throw an error</p>
<p>Copy render tree data, example:</p>
<pre class="hljs"><code>copyRenderTree({}, <span class="hljs-built_in">this</span>.mindMap.renderer.renderTree);
</code></pre>
<h4>copyNodeTree(tree, root)</h4>
<h4>copyNodeTree(tree, root, removeActiveState, keepId)</h4>
<ul>
<li>
<p><code>removeActiveState</code>: <code>Boolean</code>, default is <code>false</code>, Whether to remove the active state of the node</p>
</li>
<li>
<p><code>keepId</code>: v0.4.6+, <code>Boolean</code>, default is <code>false</code>, Whether to retain the <code>id</code> of the replicated node will be deleted by default to prevent duplicate node <code>id</code>. However, for mobile node scenarios, the original <code>id</code> of the node needs to be retained</p>
</li>
</ul>
<p>Copy node tree data, mainly eliminating the reference <code>node</code> instance <code>_node</code>
and copying the <code>data</code> of the data object, example:</p>
<pre class="hljs"><code>copyNodeTree({}, node);

View File

@@ -1,5 +1,11 @@
# Changelog
## 0.4.6
优化1.添加历史数据时过滤和上一次相比没有改变的数据
修复1.修复节点编辑时方向键和方向键导航功能的冲突问题。 2.修复拖拽移动节点时节点id的丢失问题这会导致关联线丢失。
## 0.4.5
新增1.支持关联线。 2.按住根节点也可以拖动画布。3.按住ctrl键可以调整多选节点。

View File

@@ -1,6 +1,9 @@
<template>
<div>
<h1>Changelog</h1>
<h2>0.4.6</h2>
<p>优化1.添加历史数据时过滤和上一次相比没有改变的数据</p>
<p>修复1.修复节点编辑时方向键和方向键导航功能的冲突问题 2.修复拖拽移动节点时节点id的丢失问题这会导致关联线丢失</p>
<h2>0.4.5</h2>
<p>新增1.支持关联线 2.按住根节点也可以拖动画布3.按住ctrl键可以调整多选节点</p>
<h2>0.4.4</h2>

View File

@@ -263,8 +263,8 @@ mindMap.updateConfig({
| SELECT_ALL | 全选 | |
| BACK | 回退指定的步数 | step要回退的步数默认为1 |
| FORWARD | 前进指定的步数 | step要前进的步数默认为1 |
| INSERT_NODE | 插入同级节点,操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效 | |
| INSERT_CHILD_NODE | 插入子节点,操作节点为当前激活的节点 | |
| INSERT_NODE | 插入同级节点,操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效 | openEditv0.4.6+,是否激活新插入的节点并进入编辑模式,默认为`true` |
| INSERT_CHILD_NODE | 插入子节点,操作节点为当前激活的节点 | openEditv0.4.6+,是否激活新插入的节点并进入编辑模式,默认为`true` |
| UP_NODE | 上移节点,操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效,对根节点或在列表里的第一个节点使用无效 | |
| DOWN_NODE | 操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效,对根节点或在列表里的最后一个节点使用无效 | |
| REMOVE_NODE | 删除节点,操作节点为当前激活的节点 | |

View File

@@ -521,12 +521,12 @@ mindMap.setTheme(<span class="hljs-string">&#x27;主题名称&#x27;</span>)
<tr>
<td>INSERT_NODE</td>
<td>插入同级节点操作节点为当前激活的节点如果有多个激活节点只会对第一个有效</td>
<td></td>
<td>openEditv0.4.6+是否激活新插入的节点并进入编辑模式默认为<code>true</code></td>
</tr>
<tr>
<td>INSERT_CHILD_NODE</td>
<td>插入子节点操作节点为当前激活的节点</td>
<td></td>
<td>openEditv0.4.6+是否激活新插入的节点并进入编辑模式默认为<code>true</code></td>
</tr>
<tr>
<td>UP_NODE</td>

View File

@@ -68,7 +68,11 @@ walk(tree, null, () => {}, () => {}, false, 0, 0)
copyRenderTree({}, this.mindMap.renderer.renderTree)
```
#### copyNodeTree(tree, root)
#### copyNodeTree(tree, root, removeActiveState, keepId)
- `removeActiveState``Boolean`,默认为`false`,是否移除节点的激活状态
- `keepId`v0.4.6+`Boolean`,默认为`false`,是否保留被复制节点的`id`,默认会删除`id`防止节点`id`重复,但是对于移动节点的场景,节点原`id`需要保留
复制节点树数据,主要是剔除其中的引用`node`实例的`_node`,然后复制`data`对象的数据,示例:

View File

@@ -35,7 +35,15 @@
<p>复制渲染树数据示例</p>
<pre class="hljs"><code>copyRenderTree({}, <span class="hljs-built_in">this</span>.mindMap.renderer.renderTree)
</code></pre>
<h4>copyNodeTree(tree, root)</h4>
<h4>copyNodeTree(tree, root, removeActiveState, keepId)</h4>
<ul>
<li>
<p><code>removeActiveState</code><code>Boolean</code>默认为<code>false</code>是否移除节点的激活状态</p>
</li>
<li>
<p><code>keepId</code>v0.4.6+<code>Boolean</code>默认为<code>false</code>是否保留被复制节点的<code>id</code>默认会删除<code>id</code>防止节点<code>id</code>重复但是对于移动节点的场景节点原<code>id</code>需要保留</p>
</li>
</ul>
<p>复制节点树数据主要是剔除其中的引用<code>node</code>实例的<code>_node</code>然后复制<code>data</code>对象的数据示例</p>
<pre class="hljs"><code>copyNodeTree({}, node)
</code></pre>

View File

@@ -7,12 +7,12 @@
:expand-on-click-node="false"
default-expand-all
>
<span class="customNode" slot-scope="{ node, data }">
<span class="customNode" slot-scope="{ node, data }" @click="onClick($event, node)">
<span
class="nodeEdit"
:key="getKey()"
contenteditable="true"
@keydown.stop
@keydown.stop="onKeydown($event, node)"
@keyup.stop
@blur="onBlur($event, node)"
v-html="node.label"
@@ -48,7 +48,8 @@ export default {
label(data) {
return data.data.text.replaceAll(/\n/g, '</br>')
}
}
},
notHandleDataChange: false,
}
},
computed: {
@@ -65,6 +66,11 @@ export default {
},
created() {
this.$bus.$on('data_change', data => {
// 激活节点会让当前大纲失去焦点
if (this.notHandleDataChange) {
this.notHandleDataChange = false
return
}
this.data = [this.mindMap.renderer.renderTree]
})
},
@@ -75,7 +81,39 @@ export default {
getKey() {
return Math.random()
}
},
onKeydown(e) {
if (e.keyCode === 13 && !e.shiftKey) {
e.preventDefault()
this.insertNode()
}
if (e.keyCode === 9) {
e.preventDefault()
this.insertChildNode()
}
},
// 插入兄弟节点
insertNode() {
this.notHandleDataChange = false
this.mindMap.execCommand('INSERT_NODE', false)
},
// 插入下级节点
insertChildNode() {
this.notHandleDataChange = false
this.mindMap.execCommand('INSERT_CHILD_NODE', false)
},
// 激活当前节点且移动当前节点到画布中间
onClick(e, data) {
this.notHandleDataChange = true
let node = data.data._node
if (node.nodeData.data.isActive) return
node.mindMap.renderer.moveNodeToCenter(node)
node.active()
},
}
}
</script>