Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
kityminder-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
吴志俊
kityminder-core
Commits
d548c9ba
Commit
d548c9ba
authored
Dec 17, 2013
by
techird
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
架构设计修改
parent
b63fe9ad
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
46 deletions
+65
-46
Architecture.md
doc/Architecture.md
+65
-46
No files found.
doc/Architecture.md
View file @
d548c9ba
...
...
@@ -27,11 +27,11 @@
# Kity Minder 整体设计
整体设计脑图地址:
[
Architect
rue.mmap
](
Architectru
e.mmap
)
整体设计脑图地址:
[
Architect
ure.mmap
](
Architectur
e.mmap
)
## `abstract` Command
表示一条在 KityMinder 上执行的命令
表示一条在 KityMinder 上执行的命令
,以及其相关的查询接口
### `method` execute(Minder minder [,args...] )
命令执行,如果该命令可撤销,应自行保存需要的状态
...
...
@@ -104,88 +104,107 @@ MinderTreeNode 维护的树关系和数据只是作为一个脑图的结构和
## KityMinder
脑图使用类
### `static method` registerCommand( name, commandClass )
注册一个命令
### 构造函数
### `static method` registerModule( name, moduleClass )
注册一个模块
`constructor`
KityMinder(id, option)
### `constructor` KityMinder()
创建脑图画布。KityMinder 实例化的时候,会从模块池中取出模块,并且实例化这些模块,然后加载。
### `method` getRoot() : MinderNode
`id`
实例的 id
`option`
其他选项(当前没有)
### 公开接口
`.getRoot() : MinderNode`
获取脑图根节点
### `method` execCommand( name [, params...] )
执行指定的命令。该方法执行的时候,会在命令池中去获取命令
`.execCommand( name [, params...] ) : this`
执行指定的命令。该方法执行的时候,会实例化指定类型的命令,并且把命令参数传给命令执行
`.update(MinderNode node) : this`
### `method` update(MinderNode node) : this
更新指定节点及其子树的呈现,如果不指定节点,则更新跟节点的呈现(整棵树)
### `method` export() : object
`.export() : object`
以导出节点以及所有子树的数据(data上所有的字段会被导出)
### `method` import(object data) : this
`.import(object data) : this`
导入节点数据,会节点以及所有子树结构以及子树数据
### `event` beforecommand(e), precommand(e), command(e), aftercommand(e)
执行命令前后触发的事件,其中 beforecommand 中可以取消命令的执行,而 precommand 已经确定了命令要执行
`.getSelectedNodes() : MinderNode[]`
`.select(MinderNode[] nodes | MinderNode node) : this`
添加一个或多个节点到节点选择列表中
`.unselect(MinderNode[] nodes | MinderNode node) : this`
从节点选择列表中移除一个或多个节点
`.clearSelection() : this`
清除节点选中列表
### 事件机制
`e.command`
调用的命令实例
#### 事件分类
`e.cancel`
是否要阻止命令的执行
KityMinder 的事件分为:
### `event` beforeselectionchange(e), preselectionchange(e), selectionchange(e), afterselectionchange(e)
选区变化过程中发生的事件
*
交互事件:
`click`
,
`dblclick`
,
`mousedown`
,
`mousemove`
,
`mouseup`
,
`keydown`
,
`keyup`
,
`keypress`
,
`touchstart`
,
`touchend`
,
`touchmove`
`e.currentSelection`
当前选中的节点列表
*
Command 事件:
`beforecommand`
,
`precommand`
,
`aftercommand`
`e.addNodes`
选区改变过程中添加的节点
*
交互事件:
`selectionchange`
,
`contentchange`
,
`interactchange`
`e.removeNodes`
选区改变过程中移除的节点
*
模块事件:模块自行触发与上述不同名的事件
### `event` beforeinsert(e), preinsert(e), insert(e), afterinsert(e)
发生节点插入的前后触发的事件
#### 事件接口
`
e.targetNode`
获取要插入新节点的目标节点
`
.on(event, callback)`
侦听指定事件
`
e.insertNode`
获取插入的节点
`
.once(event, callback)`
侦听指定事件一次,当 callback 被调用之后,后面再发生该事件不再被调用
`
e.insertIndex`
获取插入的位置
`
.off(event, callback)`
取消对事件的侦听
`
e.cancel`
是否要阻止节点的插入(仅在 before 的时候有效)
`
.fire(event, params)`
触发指定的事件,params 是自定义的 JSON 数据,会合并到事件对象
### `event` beforeremove(e), preremove(e), remove(e), afterremove(e)
发生节点移除的前后触发的事件
`e.targetNode`
获取要移除节点的目标节点
#### 回调函数接口
`e.removeNode`
获取将要被移除的节点
回调函数接收唯一的参数 e
`e.removeIndex`
获取被移除的节点在目标节点的位置
对于交互事件,e 是原生 event 对象的一个拓展;对于需要坐标的事件,用 e.getPosition() 可以获得在 Kity Paper 上的坐标值
`e.cancel`
是否要阻止节点的移除(仅在 before 的时候有效)
对 command 事件:
### `event` beforedatachange(e), predatachange(e), datachange(e), afterdatachange(e)
*
`e.commandName`
获取执行的命令的类型
*
`e.commandArgs`
获取命令执行的参数列表
`e.targetNode`
发生数据改变的节点
对 import 事件:
`e.dataField`
改变的数据的字段
*
`e.importData`
获取导入的数据
`e.oldDataValue`
改变前数据的值
对 selectionchange 事件:
`e.dataValue`
改变的数据的值
*
`e.currentSelection`
获取当前选择的节点列表
*
`e.additionNodes`
添加到选择节点列表的那部分节点
*
`e.removalNodes`
从选择节点列表移除的那部分节点
`e.cancel`
是否要阻止数据的改变(仅在 before 的时候有效)
#### 事件触发时机
### `event` click(evt)、mousedown(evt)、mouseup(evt)、mousemove(evt)
表示节点点击的相关事件
`command`
事件只在顶级 command 执行的时候触发(Command 里调用 Command 不触发)
`
evt.targetNode`
表示事件发生的 Minder 节点
`
contentchange`
事件在顶级 command 之后会查询是否发生了内容的变化,如果发生了变化,则会触发;
`
evt.getPosition()`
获取事件发生时鼠标位置在 Paper 上的位置
`
selectionchange`
事件在顶级 command 之后会查询是否发生了选区的变化,如果发生了变化,则会触发
### `event` keydown(evt)、keyup(evt)、keypress(evt)
表示发生的键盘事件
\ No newline at end of file
`interactchange`
事件会在所有的鼠标、键盘、触摸操作后发生,并且会进行稀释;command 可以手动触发该事件,此时不会被稀释
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment