Commit 24909964 authored by techird's avatar techird

[bug fix] 你懂得~

parent 412bd81b
...@@ -10,8 +10,6 @@ define(function(require, exports, module) { ...@@ -10,8 +10,6 @@ define(function(require, exports, module) {
var COMMAND_STATE_ACTIVED = 1; var COMMAND_STATE_ACTIVED = 1;
/** /**
* @class Command
*
* 表示一个命令,包含命令的查询及执行 * 表示一个命令,包含命令的查询及执行
*/ */
var Command = kity.createClass('Command', { var Command = kity.createClass('Command', {
...@@ -72,14 +70,51 @@ define(function(require, exports, module) { ...@@ -72,14 +70,51 @@ define(function(require, exports, module) {
return 0; return 0;
}, },
/**
* @method queryCommandState()
* @for Minder
* @description 查询指定命令的状态
*
* @grammar queryCommandName(name) => {number}
*
* @param {string} name 要查询的命令名称
*
* @return {number}
* -1: 命令不存在或命令当前不可用
* 0: 命令可用
* 1: 命令当前可用并且已经执行过
*/
queryCommandState: function(name) { queryCommandState: function(name) {
return this._queryCommand(name, 'State', [].slice.call(arguments, 1)); return this._queryCommand(name, 'State', [].slice.call(arguments, 1));
}, },
/**
* @method queryCommandValue()
* @for Minder
* @description 查询指定命令当前的执行值
*
* @grammar queryCommandValue(name) => {any}
*
* @param {string} name 要查询的命令名称
*
* @return {any}
* 如果命令不存在,返回 undefined
* 不同命令具有不同返回值,具体请查看 [Command](command) 章节
*/
queryCommandValue: function(name) { queryCommandValue: function(name) {
return this._queryCommand(name, 'Value', [].slice.call(arguments, 1)); return this._queryCommand(name, 'Value', [].slice.call(arguments, 1));
}, },
/**
* @method execCommand()
* @for Minder
* @description 执行指定的命令。
*
* @grammar execCommand(name, args...)
*
* @param {string} name 要执行的命令名称
* @param {argument} args 要传递给命令的其它参数
*/
execCommand: function(name) { execCommand: function(name) {
name = name.toLowerCase(); name = name.toLowerCase();
...@@ -99,12 +134,12 @@ define(function(require, exports, module) { ...@@ -99,12 +134,12 @@ define(function(require, exports, module) {
if (!this._hasEnterExecCommand && cmd.isNeedUndo()) { if (!this._hasEnterExecCommand && cmd.isNeedUndo()) {
this._hasEnterExecCommand = true; this._hasEnterExecCommand = true;
stoped = this._fire(new MinderEvent('beforeExecCommand', eventParams, true)); stoped = this._fire(new MinderEvent('beforeExecCommand', eventParams, true));
if (!stoped) { if (!stoped) {
//保存场景 //保存场景
this._fire(new MinderEvent('saveScene')); this._fire(new MinderEvent('saveScene'));
this._fire(new MinderEvent('preExecCommand', eventParams, false)); this._fire(new MinderEvent('preExecCommand', eventParams, false));
result = cmd.execute.apply(cmd, [me].concat(cmdArgs)); result = cmd.execute.apply(cmd, [me].concat(cmdArgs));
......
...@@ -20,6 +20,14 @@ define(function(require, exports, module) { ...@@ -20,6 +20,14 @@ define(function(require, exports, module) {
}); });
kity.extendClass(MinderNode, { kity.extendClass(MinderNode, {
/**
* @private
* @method getConnect()
* @for MinderNode
* @description 获取当前节点的连线类型
*
* @grammar getConnect() => {string}
*/
getConnect: function() { getConnect: function() {
return this.data.connect || 'default'; return this.data.connect || 'default';
}, },
...@@ -28,6 +36,14 @@ define(function(require, exports, module) { ...@@ -28,6 +36,14 @@ define(function(require, exports, module) {
return _connectProviders[this.getConnect()] || _connectProviders['default']; return _connectProviders[this.getConnect()] || _connectProviders['default'];
}, },
/**
* @private
* @method getConnection()
* @for MinderNode
* @description 获取当前节点的连线对象
*
* @grammar getConnection() => {kity.Path}
*/
getConnection: function() { getConnection: function() {
return this._connection || null; return this._connection || null;
} }
......
...@@ -9,6 +9,13 @@ define(function(require, exports, module) { ...@@ -9,6 +9,13 @@ define(function(require, exports, module) {
// 导入导出 // 导入导出
kity.extendClass(Minder, { kity.extendClass(Minder, {
/**
* @method exportJson()
* @for Minder
* @description
* 导出当前脑图数据为 JSON 对象,导出的数据格式请参考 [Data](data) 章节。
* @grammar exportJson() => {plain}
*/
exportJson: function() { exportJson: function() {
/* 导出 node 上整棵树的数据为 JSON */ /* 导出 node 上整棵树的数据为 JSON */
function exportNode(node) { function exportNode(node) {
...@@ -33,7 +40,16 @@ define(function(require, exports, module) { ...@@ -33,7 +40,16 @@ define(function(require, exports, module) {
return json; return json;
}, },
importJson: function(json, params) { /**
* @method importJson()
* @for Minder
* @description 导入脑图数据,数据格式为 JSON,具体的数据字段形式请参考 [Data](data) 章节。
*
* @grammar importJson(json) => {this}
*
* @param {plain} json 要导入的数据
*/
importJson: function(json) {
function importNode(node, json, km) { function importNode(node, json, km) {
var data = json.data; var data = json.data;
...@@ -54,7 +70,12 @@ define(function(require, exports, module) { ...@@ -54,7 +70,12 @@ define(function(require, exports, module) {
if (!json) return; if (!json) return;
this._fire(new MinderEvent('preimport', params, false)); /**
* @event preimport
* @for Minder
* @when 导入数据之前
*/
this._fire(new MinderEvent('preimport', null, false));
// 删除当前所有节点 // 删除当前所有节点
while (this._root.getChildren().length) { while (this._root.getChildren().length) {
...@@ -69,12 +90,20 @@ define(function(require, exports, module) { ...@@ -69,12 +90,20 @@ define(function(require, exports, module) {
this.setTheme(json.theme || null); this.setTheme(json.theme || null);
this.refresh(); this.refresh();
this.fire('import', params); /**
* @event import,contentchange,interactchange
* @for Minder
* @when 导入数据之后
*/
this.fire('import');
this._firePharse({ this._firePharse({
type: 'contentchange' type: 'contentchange'
}); });
this._interactChange(); this._interactChange();
return this;
} }
}); });
}); });
\ No newline at end of file
...@@ -11,22 +11,75 @@ define(function(require, exports, module) { ...@@ -11,22 +11,75 @@ define(function(require, exports, module) {
}); });
} }
/**
* @class MinderEvent
* @description 表示一个脑图中发生的事件
*/
var MinderEvent = kity.createClass('MindEvent', { var MinderEvent = kity.createClass('MindEvent', {
constructor: function(type, params, canstop) { constructor: function(type, params, canstop) {
params = params || {}; params = params || {};
if (params.getType && params.getType() == 'ShapeEvent') { if (params.getType && params.getType() == 'ShapeEvent') {
/**
* @property kityEvent
* @for MinderEvent
* @description 如果事件是从一个 kity 的事件派生的,会有 kityEvent 属性指向原来的 kity 事件
* @type {KityEvent}
*/
this.kityEvent = params; this.kityEvent = params;
/**
* @property originEvent
* @for MinderEvent
* @description 如果事件是从原声 Dom 事件派生的(如 click、mousemove 等),会有 originEvent 指向原来的 Dom 事件
* @type {DomEvent}
*/
this.originEvent = params.originEvent; this.originEvent = params.originEvent;
this.getPosition = params.getPosition.bind(params);
} else if (params.target && params.preventDefault) { } else if (params.target && params.preventDefault) {
this.originEvent = params; this.originEvent = params;
} else { } else {
kity.Utils.extend(this, params); kity.Utils.extend(this, params);
} }
/**
* @property type
* @for MinderEvent
* @description 事件的类型,如 `click`、`contentchange` 等
* @type {string}
*/
this.type = type; this.type = type;
this._canstop = canstop || false; this._canstop = canstop || false;
}, },
/**
* @method getPosition()
* @for MinderEvent
* @description 如果事件是从一个 kity 事件派生的,会有 `getPosition()` 获取事件发生的坐标
*
* @grammar getPosition(refer) => {kity.Point}
*
* @param {string|kity.Shape} refer
* 参照的坐标系,
* `"screen"` - 以浏览器屏幕为参照坐标系
* `"minder"` - (默认)以脑图画布为参照坐标系
* `{kity.Shape}` - 指定以某个 kity 图形为参照坐标系
*/
getPosition: function(refer) {
if (!this.kityEvent) return;
if (!refer || refer == 'minder') {
return this.kityEvent.getPosition(this.minder.getRenderContainer());
}
return this.kityEvent.getPosition.call(this.kityEvent, refer);
},
/**
* @method getTargetNode()
* @for MinderEvent
* @description 当发生的事件是鼠标事件时,获取事件位置命中的脑图节点
*
* @grammar getTargetNode() => {MinderNode}
*/
getTargetNode: function() { getTargetNode: function() {
var findShape = this.kityEvent && this.kityEvent.targetShape; var findShape = this.kityEvent && this.kityEvent.targetShape;
if (!findShape) return null; if (!findShape) return null;
...@@ -38,6 +91,13 @@ define(function(require, exports, module) { ...@@ -38,6 +91,13 @@ define(function(require, exports, module) {
return node || null; return node || null;
}, },
/**
* @method stopPropagation()
* @for MinderEvent
* @description 当发生的事件是鼠标事件时,获取事件位置命中的脑图节点
*
* @grammar getTargetNode() => {MinderNode}
*/
stopPropagation: function() { stopPropagation: function() {
this._stoped = true; this._stoped = true;
}, },
...@@ -111,10 +171,6 @@ define(function(require, exports, module) { ...@@ -111,10 +171,6 @@ define(function(require, exports, module) {
}, },
_firePharse: function(e) { _firePharse: function(e) {
// //只读模式下强了所有的事件操作
// if(this.readOnly === true){
// return false;
// }
var beforeEvent, preEvent, executeEvent; var beforeEvent, preEvent, executeEvent;
if (e.type == 'DOMMouseScroll') { if (e.type == 'DOMMouseScroll') {
...@@ -152,6 +208,14 @@ define(function(require, exports, module) { ...@@ -152,6 +208,14 @@ define(function(require, exports, module) {
}, },
_fire: function(e) { _fire: function(e) {
/**
* @property minder
* @description 产生事件的 Minder 对象
* @for MinderShape
* @type {Minder}
*/
e.minder = this;
var status = this.getStatus(); var status = this.getStatus();
var callbacks = this._eventCallbacks[e.type.toLowerCase()] || []; var callbacks = this._eventCallbacks[e.type.toLowerCase()] || [];
......
...@@ -118,7 +118,7 @@ define(function(require, exports, module) { ...@@ -118,7 +118,7 @@ define(function(require, exports, module) {
}, },
getData: function(key) { getData: function(key) {
return this.data[key]; return key ? this.data[key] : this.data;
}, },
setData: function(key, value) { setData: function(key, value) {
......
...@@ -20,6 +20,7 @@ define(function(require, exports, module) { ...@@ -20,6 +20,7 @@ define(function(require, exports, module) {
_initPaper: function() { _initPaper: function() {
this._paper = new kity.Paper(); this._paper = new kity.Paper();
this._paper._minder = this;
this._paper.getNode().ondragstart = function(e) { this._paper.getNode().ondragstart = function(e) {
e.preventDefault(); e.preventDefault();
}; };
......
...@@ -364,11 +364,11 @@ define(function(require, exports, module) { ...@@ -364,11 +364,11 @@ define(function(require, exports, module) {
// 单选中根节点也不触发拖拽 // 单选中根节点也不触发拖拽
if (e.originEvent.button) return; if (e.originEvent.button) return;
if (e.getTargetNode() && e.getTargetNode() != this.getRoot()) { if (e.getTargetNode() && e.getTargetNode() != this.getRoot()) {
dragger.dragStart(e.getPosition(this.getRenderContainer())); dragger.dragStart(e.getPosition());
} }
}, },
'normal.mousemove dragtree.mousemove': function(e) { 'normal.mousemove dragtree.mousemove': function(e) {
dragger.dragMove(e.getPosition(this.getRenderContainer())); dragger.dragMove(e.getPosition());
}, },
'normal.mouseup dragtree.beforemouseup': function(e) { 'normal.mouseup dragtree.beforemouseup': function(e) {
dragger.dragEnd(); dragger.dragEnd();
......
...@@ -147,7 +147,7 @@ define(function(require, exports, module) { ...@@ -147,7 +147,7 @@ define(function(require, exports, module) {
// 不能马上变为单选,因为可能是需要拖动选中的多个节点 // 不能马上变为单选,因为可能是需要拖动选中的多个节点
else if (!this.isSingleSelect()) { else if (!this.isSingleSelect()) {
lastDownNode = downNode; lastDownNode = downNode;
lastDownPosition = e.getPosition(this.getRenderContainer()); lastDownPosition = e.getPosition();
} }
}, },
'mousemove': marqueeActivator.selectMove, 'mousemove': marqueeActivator.selectMove,
...@@ -156,7 +156,7 @@ define(function(require, exports, module) { ...@@ -156,7 +156,7 @@ define(function(require, exports, module) {
// 如果 mouseup 发生在 lastDownNode 外,是无需理会的 // 如果 mouseup 发生在 lastDownNode 外,是无需理会的
if (upNode && upNode == lastDownNode) { if (upNode && upNode == lastDownNode) {
var upPosition = e.getPosition(this.getRenderContainer()); var upPosition = e.getPosition();
var movement = kity.Vector.fromPoints(lastDownPosition, upPosition); var movement = kity.Vector.fromPoints(lastDownPosition, upPosition);
if (movement.length() < 1) this.select(lastDownNode, true); if (movement.length() < 1) this.select(lastDownNode, true);
lastDownNode = null; lastDownNode = null;
......
...@@ -114,7 +114,7 @@ define(function(require, exports, module) { ...@@ -114,7 +114,7 @@ define(function(require, exports, module) {
} }
// 点击未选中的根节点临时开启 // 点击未选中的根节点临时开启
if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2 || e.originEvent.altKey) { if (e.getTargetNode() == this.getRoot() || e.originEvent.button == 2 || e.originEvent.altKey) {
lastPosition = e.getPosition(); lastPosition = e.getPosition('view');
isTempDrag = true; isTempDrag = true;
} }
}) })
...@@ -127,7 +127,7 @@ define(function(require, exports, module) { ...@@ -127,7 +127,7 @@ define(function(require, exports, module) {
e.preventDefault(); // 阻止浏览器的后退事件 e.preventDefault(); // 阻止浏览器的后退事件
} }
if (!isTempDrag) return; if (!isTempDrag) return;
var offset = kity.Vector.fromPoints(lastPosition, e.getPosition()); var offset = kity.Vector.fromPoints(lastPosition, e.getPosition('view'));
if (offset.length() > 10) { if (offset.length() > 10) {
this.setStatus('hand', true); this.setStatus('hand', true);
var paper = dragger._minder.getPaper(); var paper = dragger._minder.getPaper();
...@@ -138,7 +138,7 @@ define(function(require, exports, module) { ...@@ -138,7 +138,7 @@ define(function(require, exports, module) {
.on('hand.beforemousedown hand.beforetouchstart', function(e) { .on('hand.beforemousedown hand.beforetouchstart', function(e) {
// 已经被用户打开拖放模式 // 已经被用户打开拖放模式
if (dragger.isEnabled()) { if (dragger.isEnabled()) {
lastPosition = e.getPosition(); lastPosition = e.getPosition('view');
e.stopPropagation(); e.stopPropagation();
var paper = dragger._minder.getPaper(); var paper = dragger._minder.getPaper();
paper.setStyle('cursor', '-webkit-grabbing'); paper.setStyle('cursor', '-webkit-grabbing');
...@@ -147,7 +147,7 @@ define(function(require, exports, module) { ...@@ -147,7 +147,7 @@ define(function(require, exports, module) {
.on('hand.beforemousemove hand.beforetouchmove', function(e) { .on('hand.beforemousemove hand.beforetouchmove', function(e) {
if (lastPosition) { if (lastPosition) {
currentPosition = e.getPosition(); currentPosition = e.getPosition('view');
// 当前偏移加上历史偏移 // 当前偏移加上历史偏移
var offset = kity.Vector.fromPoints(lastPosition, currentPosition); var offset = kity.Vector.fromPoints(lastPosition, currentPosition);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment