Skip to content

Commit

Permalink
fix bugs and release
Browse files Browse the repository at this point in the history
  • Loading branch information
techird committed Jul 9, 2014
1 parent fb43458 commit b193204
Show file tree
Hide file tree
Showing 11 changed files with 266 additions and 170 deletions.
22 changes: 11 additions & 11 deletions dist/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,26 +7,26 @@
<meta name="description" content="百度脑图,便捷的脑图编辑工具。让您在线上直接创建、保存并分享你的思路。">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

<script src="lib/jquery-2.1.0.min.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/ZeroClipboard.min.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/jquery-2.1.0.min.js?_=1404914306873" charset="utf-8"></script>
<script src="lib/ZeroClipboard.min.js?_=1404914306873" charset="utf-8"></script>
<script type="text/javascript">
ZeroClipboard.setDefaults( { moviePath: 'lib/ZeroClipboard.swf' } );
</script>

<script src="lib/kity.min.js?_=1404819457295" charset="utf-8"></script>
<script src="kityminder.all.min.js?_=1404819457295" charset="utf-8"></script>
<script src="kityminder.config.js?_=1404819457295" charset="utf-8"></script>
<script src="lang/zh-cn/zh-cn.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/kity.min.js?_=1404914306873" charset="utf-8"></script>
<script src="kityminder.all.min.js?_=1404914306873" charset="utf-8"></script>
<script src="kityminder.config.js?_=1404914306873" charset="utf-8"></script>
<script src="lang/zh-cn/zh-cn.js?_=1404914306873" charset="utf-8"></script>

<script src="lib/zip.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/zip.js?_=1404914306873" charset="utf-8"></script>
<script>
zip.inflateJSPath = 'lib/inflate.js';
</script>

<script src="lib/jquery.xml2json.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/baidu-frontia-js-full-1.0.0.js?_=1404819457295" charset="utf-8"></script>
<script src="social/draftmanager.js?_=1404819457295" charset="utf-8"></script>
<script src="social/social.js?_=1404819457295" charset="utf-8"></script>
<script src="lib/jquery.xml2json.js?_=1404914306873" charset="utf-8"></script>
<script src="lib/baidu-frontia-js-full-1.0.0.js?_=1404914306873" charset="utf-8"></script>
<script src="social/draftmanager.js?_=1404914306873" charset="utf-8"></script>
<script src="social/social.js?_=1404914306873" charset="utf-8"></script>
<link href="social/social.css" rel="stylesheet">

<link href="themes/default/css/import.css" type="text/css" rel="stylesheet" />
Expand Down
208 changes: 129 additions & 79 deletions dist/kityminder.all.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*!
* ====================================================
* kityminder - v1.1.3 - 2014-07-08
* kityminder - v1.1.3 - 2014-07-09
* https://github.com/fex-team/kityminder
* GitHub: https://github.com/fex-team/kityminder.git
* Copyright (c) 2014 f-cube @ FEX; Licensed MIT
Expand Down Expand Up @@ -2367,6 +2367,30 @@ kity.extendClass(MinderNode, {
return this;
},

setVertexIn: function(p) {
this._vertexIn = p;
},

setVertexOut: function(p) {
this._vertexOut = p;
},

getVertexIn: function() {
return this._vertexIn || new kity.Point();
},

getVertexOut: function() {
return this._vertexOut || new kity.Point();
},

getLayoutVertexIn: function() {
return this.getGlobalLayoutTransform().transformPoint(this.getVertexIn());
},

getLayoutVertexOut: function() {
return this.getGlobalLayoutTransform().transformPoint(this.getVertexOut());
},

getLayoutRoot: function() {
if (this.isLayoutRoot()) {
return this;
Expand Down Expand Up @@ -2547,21 +2571,27 @@ var Layout = kity.createClass('Layout', {
},

/**
* 工具方法:计算给点节点的子树所占的布局区域
* 工具方法:计算给定的节点的子树所占的布局区域
*
* @param {MinderNode} nodes 需要计算的节点
*
* @return {Box} 计算的结果
*/
getTreeBox: function(nodes) {

var i, node, matrix, treeBox;

var g = KityMinder.Geometry;

var box = {
x: 0,
y: 0,
height: 0,
width: 0
};
var g = KityMinder.Geometry;
var i, node, matrix, treeBox;

if (!(nodes instanceof Array)) nodes = [nodes];

for (i = 0; i < nodes.length; i++) {
node = nodes[i];
matrix = node.getLayoutTransform();
Expand All @@ -2574,6 +2604,7 @@ var Layout = kity.createClass('Layout', {

box = g.mergeBox(box, matrix.transformBox(treeBox));
}

return box;
},

Expand Down Expand Up @@ -3073,9 +3104,11 @@ KityMinder.registerLayout('default', kity.createClass({
y = -totalTreeHeight / 2;

if (side != 'left') {
parent.setLayoutVector(new kity.Vector(nodeContentBox.right, nodeContentBox.cy));
parent.setVertexOut(new kity.Point(nodeContentBox.right, nodeContentBox.cy));
parent.setLayoutVector(new kity.Vector(1, 0));
} else {
parent.setLayoutVector(new kity.Vector(nodeContentBox.left, nodeContentBox.cy));
parent.setVertexOut(new kity.Point(nodeContentBox.left, nodeContentBox.cy));
parent.setLayoutVector(new kity.Vector(-1, 0));
}

for (i = 0; i < children.length; i++) {
Expand Down Expand Up @@ -3230,68 +3263,77 @@ KityMinder.registerConnectProvider('default', function(node, parent, connection,
/* global Layout:true */
window.layoutSwitch = true;
KityMinder.registerLayout('bottom', kity.createClass({

base: Layout,

doLayout: function(node) {
var layout = this;

if (node.isLayoutRoot()) {
this.doLayoutRoot(node);
} else {
this.arrange(node);
}
},
doLayoutRoot: function(root) {
this.arrange(root);
},
arrange: function(node) {
var children = node.getChildren();
var _this = this;

if (!children.length) {
return false;
} else {
var totalTreeWidth = 0;
// 计算每个 child 的树所占的矩形区域
var childTreeBoxes = children.map(function(node, index, children) {
var box = _this.getTreeBox([node]);
totalTreeWidth += box.width;
if (index > 0) {
totalTreeWidth += children[index - 1].getStyle('margin-left');
totalTreeWidth += node.getStyle('margin-right');
}
return box;
});
var nodeContentBox = node.getContentBox();
node.setLayoutVector(new kity.Vector(nodeContentBox.cx, nodeContentBox.bottom));
var i, x, y, child, childTreeBox, childContentBox;
var transform = new kity.Matrix();
}

x = -totalTreeWidth / 2;
var me = this;

for (i = 0; i < children.length; i++) {
child = children[i];
childTreeBox = childTreeBoxes[i];
childContentBox = child.getContentBox();
if (!childContentBox.width) continue;
//水平方向上的布局
x += childTreeBox.width / 2;
if (i > 0) {
x += children[i].getStyle('margin-left');
}
y = nodeContentBox.bottom - childContentBox.top + node.getStyle('margin-bottom') + child.getStyle('margin-top');
children[i].setLayoutTransform(new kity.Matrix().translate(x, y));
x += childTreeBox.width / 2 + children[i].getStyle('margin-right');
}
// 子树的总宽度(包含间距)
var totalTreeWidth = 0;

if (node.isRoot()) {
var branchBox = this.getBranchBox(children);
var dx = branchBox.cx - nodeContentBox.cx;
// 父亲所占的区域
var nodeContentBox = node.getContentBox();

children.forEach(function(child) {
child.getLayoutTransform().translate(-dx, 0);
});
// 为每一颗子树准备的迭代变量
var i, x0, x, y, child, childTreeBox, childContentBox, matrix;

// 先最左对齐
x0 = x = nodeContentBox.left;

for (i = 0; i < children.length; i++) {

child = children[i];
childContentBox = child.getContentBox();
childTreeBox = this.getTreeBox(child);
matrix = new kity.Matrix();

// 忽略无宽度的节点(收起的)
if (!childContentBox.width) continue;

if (i > 0) {
x += child.getStyle('margin-left');
}

x -= childTreeBox.left;

// arrange x
matrix.translate(x, 0);

// 为下个位置准备
x += childTreeBox.right;

if (i < children.length - 1) x += child.getStyle('margin-right');

y = nodeContentBox.bottom - childTreeBox.top +
node.getStyle('margin-bottom') + child.getStyle('margin-top');

matrix.translate(0, y);

// 设置结果
child.setLayoutTransform(matrix);
child.setVertexIn(new kity.Point(childContentBox.cx, childContentBox.top));

}

// 设置布局矢量为向下
node.setLayoutVector(new kity.Vector(0, 1));

// 设置流出顶点
node.setVertexOut(new kity.Point(nodeContentBox.cx, nodeContentBox.bottom));

var dx = (x - x0 - nodeContentBox.width) / 2;

children.forEach(function(child) {
child.getLayoutTransform().translate(-dx, 0);
});
},

getOrderHint: function(node) {
Expand Down Expand Up @@ -3327,13 +3369,14 @@ KityMinder.registerLayout('bottom', kity.createClass({
}));

KityMinder.registerConnectProvider('bottom', function(node, parent, connection) {
var box = node.getLayoutBox(),
pBox = parent.getLayoutBox();
var pout = parent.getLayoutVertexOut(),
pin = node.getLayoutVertexIn();
var pathData = [];
pathData.push('M', new kity.Point(pBox.cx, pBox.bottom));
pathData.push('L', new kity.Point(pBox.cx, pBox.bottom + parent.getStyle('margin-bottom')));
pathData.push('L', new kity.Point(box.cx, pBox.bottom + parent.getStyle('margin-bottom')));
pathData.push('L', new kity.Point(box.cx, box.top));
var r = Math.round;
pathData.push('M', new kity.Point(r(pout.x), pout.y));
pathData.push('L', new kity.Point(r(pout.x), pout.y + parent.getStyle('margin-bottom')));
pathData.push('L', new kity.Point(r(pin.x), pout.y + parent.getStyle('margin-bottom')));
pathData.push('L', new kity.Point(r(pin.x), pin.y));
connection.setMarker(null);
connection.setPathData(pathData);
});
Expand Down Expand Up @@ -3367,10 +3410,12 @@ KityMinder.registerLayout('filetree', kity.createClass({
return box;
});
var nodeContentBox = node.getContentBox();
node.setLayoutVector(new kity.Vector(0, nodeContentBox.bottom));
var i, x, y, child, childTreeBox, childContentBox;
var transform = new kity.Matrix();

node.setVertexOut(new kity.Point(0, nodeContentBox.bottom));
node.setLayoutVector(new kity.Vector(0, 1));

y = nodeContentBox.bottom + node.getStyle('margin-bottom');

for (i = 0; i < children.length; i++) {
Expand Down Expand Up @@ -3623,10 +3668,14 @@ KityMinder.registerTheme('snow', {

KityMinder.registerTemplate('structure', {

name: '组织结构图',

getLayout: function(node) {
return 'bottom';
}
});

KityMinder.registerTemplate('filetree', {

getLayout: function(node) {
if (node.getData('layout')) return node.getData('layout');
if (node.isRoot()) return 'bottom';

Expand Down Expand Up @@ -4006,15 +4055,10 @@ KityMinder.registerModule('Expand', function() {

expander.setState(visible && node.children.length ? node.getData(EXPAND_STATE_DATA) : 'hide');

var x, y;

var pos = node.getLayoutVector();
var vector = node.getLayoutVector().normalize(expander.radius + node.getStyle('stroke-width'));
var position = node.getVertexOut().offset(vector);

pos = new kity.Vector(pos.x, pos.y);

pos = pos.normalize(pos.length() + expander.radius + 1);

this.expander.setTranslate(pos);
this.expander.setTranslate(position);
}
});
return {
Expand Down Expand Up @@ -6474,7 +6518,8 @@ KityMinder.registerModule('TextEditModule', function() {
var offset = e.getPosition(this.getRenderContainer());
dir = offset.x > lastEvtPosition.x ? 1 : (offset.x < lastEvtPosition.x ? -1 : dir);
receiver.updateSelectionByMousePosition(offset, dir)
.updateSelectionShow(dir);
.updateSelectionShow(dir)
.updateContainerRangeBySel();

lastEvtPosition = e.getPosition(this.getRenderContainer());

Expand Down Expand Up @@ -6658,7 +6703,7 @@ Minder.Receiver = kity.createClass('Receiver', {

});
}
utils.addCssRule('km_receiver_css', ' .km_receiver{white-space:nowrap;position:absolute;padding:0;margin:0;word-wrap:break-word;' + (/\?debug$/.test(location.href)?'':'clip:rect(1em 1em 1em 1em);'));
utils.addCssRule('km_receiver_css', ' .km_receiver{white-space:nowrap;position:absolute;padding:0;margin:0;word-wrap:break-word;' + (/\?debug#?/.test(location.href)?'':'clip:rect(1em 1em 1em 1em);'));
this.km.on('inputready.beforekeyup inputready.beforekeydown textedit.beforekeyup textedit.beforekeydown textedit.keypress textedit.paste', utils.proxy(this.keyboardEvents, this));
this.timer = null;
this.index = 0;
Expand Down Expand Up @@ -6750,20 +6795,25 @@ Minder.Receiver = kity.createClass('Receiver', {
}
var text = me.container.textContent.replace(/[\u200b\t\r\n]/g, '');

if (me.textShape.getOpacity() === 0) {
me.textShape.setOpacity(1);
}
//#46 修复在ff下定位到文字后方空格光标不移动问题
if (browser.gecko && /\s$/.test(text)) {
text += '\u200b';
}

if (text.length === 0) {

//如果接受框已经空了,并且已经添加了占位的a了就什么都不做了
if(text.length === 0 && me.textShape.getOpacity() === 0){
return;
}

if (text.length === 0) {
me.minderNode.setTmpData('_lastTextContent',me.textShape.getContent());
me.minderNode.setText('a');
}else {
me.minderNode.setText(text);
if (me.textShape.getOpacity() === 0) {
me.textShape.setOpacity(1);
}
}


Expand Down Expand Up @@ -7073,7 +7123,7 @@ Minder.Receiver = kity.createClass('Receiver', {
setContainerStyle: function() {
var textShapeBox = this.getBaseOffset('screen');
this.container.style.cssText = ';left:' + (browser.ipad ? '-' : '') +
textShapeBox.x + 'px;top:' + (textShapeBox.y + (/\?debug$/.test(location.href)?30:0)) +
textShapeBox.x + 'px;top:' + (textShapeBox.y + (/\?debug#?/.test(location.href)?30:0)) +
'px;width:' + textShapeBox.width + 'px;height:' + textShapeBox.height + 'px;';

return this;
Expand Down
10 changes: 5 additions & 5 deletions dist/kityminder.all.min.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion dist/lang/zh-cn/zh-cn.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
KityMinder.LANG['zh-cn'] = {
'template': {
'default': '思维导图',
'structure': '组织结构图'
'structure': '组织结构图',
'filetree': '文件夹'
},
'theme': {
'classic': '脑图经典',
Expand Down
Loading

0 comments on commit b193204

Please sign in to comment.