Commit 257373fa authored by techird's avatar techird

Merge branch 'dev' of github.com:fex-team/kityminder into dev

parents 64058ae4 d0235692
......@@ -26,7 +26,9 @@
'core/render.js',
'core/theme.js',
'layout/default.js',
'layout/bottom.js',
'theme/default.js',
'theme/bottom.js',
'module/node.js',
'module/text.js',
'module/outline.js',
......
Subproject commit 38e17411060a02d0601985ca1a2553057c3f9e40
Subproject commit f62ec70beb8198072693e1b7f1748cca46b685fb
/* 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();
var i, x, y, child, childTreeBox, childContentBox;
var transform = new kity.Matrix();
x = -totalTreeWidth / 2;
for (var 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 > 1) {
x += children[i].getStyle('margin-left');
}
y = nodeContentBox.height + node.getStyle('margin-bottom') + children[i].getStyle('margin-top');
console.log(y);
children[i].setLayoutTransform(new kity.Matrix().translate(x, y));
x += childTreeBox.width / 2 + children[i].getStyle('margin-right');
}
}
// if (!children.length) return;
// var _this = this;
// // children 所占的总树高
// var totalTreeHeight = 0;
// // 计算每个 child 的树所占的矩形区域
// var childTreeBoxes = children.map(function(node, index, children) {
// var box = _this.getTreeBox([node]);
// // 计算总树高,需要把竖直方向上的 margin 加入计算
// totalTreeHeight += box.height;
// if (index > 0) {
// totalTreeHeight += children[index - 1].getStyle('margin-bottom');
// totalTreeHeight += node.getStyle('margin-top');
// }
// return box;
// });
// var nodeContentBox = parent.getContentBox();
// var i, x, y, child, childTreeBox, childContentBox;
// var transform = new kity.Matrix();
// y = -totalTreeHeight / 2 - 200;
// for (i = 0; i < children.length; i++) {
// child = children[i];
// childTreeBox = childTreeBoxes[i];
// childContentBox = child.getContentBox();
// if (!childContentBox.height) continue;
// // 水平方向上的布局
// if (side == 'right') {
// x = nodeContentBox.right - childContentBox.left;
// x += parent.getStyle('margin-right') + child.getStyle('margin-left');
// child.setLayoutVector(new kity.Vector(childContentBox.left, childContentBox.cy));
// } else {
// x = nodeContentBox.left - childContentBox.right;
// x -= parent.getStyle('margin-left') + child.getStyle('margin-right');
// child.setLayoutVector(new kity.Vector(childContentBox.right, childContentBox.cy));
// }
// // 竖直方向上的布局
// y += childTreeBox.height / 2;
// if (i > 0) {
// y += children[i].getStyle('margin-top');
// }
// children[i].setLayoutTransform(new kity.Matrix().translate(x, y));
// y += childTreeBox.height / 2 + children[i].getStyle('margin-bottom');
// }
// if (parent.isRoot()) {
// var branchBox = this.getBranchBox(children);
// var dy = branchBox.cy - nodeContentBox.cy;
// children.forEach(function(child) {
// child.getLayoutTransform().translate(0, -dy);
// });
// }
// }
}
}));
\ No newline at end of file
KityMinder.registerModule("LayoutDefault", function () {
KityMinder.registerModule("LayoutDefault", function() {
var _target = this.getRenderTarget();
function getMinderSize() {
......@@ -9,9 +9,9 @@ KityMinder.registerModule("LayoutDefault", function () {
}
var minder = this;
//收缩-展开子树的节点
var ShIcon = kity.createClass("DefaultshIcon", (function () {
var ShIcon = kity.createClass("DefaultshIcon", (function() {
return {
constructor: function (node) {
constructor: function(node) {
this._show = false;
this._node = node;
var iconShape = this.shape = new kity.Group();
......@@ -34,7 +34,7 @@ KityMinder.registerModule("LayoutDefault", function () {
iconShape.addShapes([circle, plus, dec]);
this.update();
},
switchState: function (val) {
switchState: function(val) {
if (val === true || val === false)
this._show = !val;
if (!this._show) {
......@@ -48,7 +48,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
return this._show;
},
update: function () {
update: function() {
var node = this._node;
var Layout = node.getLayout();
var nodeShape = node.getRenderContainer();
......@@ -61,13 +61,13 @@ KityMinder.registerModule("LayoutDefault", function () {
}
this.shape.setTranslate(nodeX, nodeY);
},
remove: function () {
remove: function() {
this.shape.remove();
}
};
})());
//求并集
var uSet = function (a, b) {
var uSet = function(a, b) {
for (var i = 0; i < a.length; i++) {
var idx = b.indexOf(a[i]);
if (idx !== -1) {
......@@ -120,7 +120,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
};
//更新背景
var updateBg = function (node) {
var updateBg = function(node) {
var nodeType = node.getType();
var nodeStyle = nodeStyles[nodeType];
var Layout = node.getLayout();
......@@ -143,7 +143,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
};
//初始化样式
var initLayout = function (node) {
var initLayout = function(node) {
var Layout = node.getLayout();
var nodeType = node.getType();
var nodeStyle = nodeStyles[nodeType];
......@@ -157,7 +157,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
};
//根据内容调整节点尺寸
var updateShapeByCont = function (node) {
var updateShapeByCont = function(node) {
var contRc = node.getContRc();
var nodeType = node.getType();
var nodeStyle = nodeStyles[nodeType];
......@@ -197,7 +197,7 @@ KityMinder.registerModule("LayoutDefault", function () {
contRc.translate(0, nodeStyle.padding[0] - rBox.top);
};
//计算节点在垂直方向的位置
var updateLayoutVertical = function (node, parent, action) {
var updateLayoutVertical = function(node, parent, action) {
var root = minder.getRoot();
var effectSet = [node];
if (action === "remove") {
......@@ -208,10 +208,10 @@ KityMinder.registerModule("LayoutDefault", function () {
var nodeType = node.getType();
var nodeStyle = nodeStyles[nodeType];
var appendside = Layout.appendside;
var countBranchHeight = function (node, side) {
var countBranchHeight = function(node, side) {
var nodeStyle = nodeStyles[node.getType()];
var selfHeight = node.getRenderContainer().getHeight() + nodeStyle.margin[0] + nodeStyle.margin[2];
var childHeight = (function () {
var childHeight = (function() {
var sum = 0;
var children;
if (!side) {
......@@ -257,12 +257,12 @@ KityMinder.registerModule("LayoutDefault", function () {
}
}
//自顶向下更新受影响一侧的y值
var updateSide = function (appendside) {
var updateSide = function(appendside) {
var _buffer = [root];
while (_buffer.length > 0) {
var _buffer0Layout = _buffer[0].getLayout();
var children = _buffer0Layout[appendside + "List"] || _buffer[0].getChildren();
children = (function () {
children = (function() {
var result = [];
for (var len = 0; len < children.length; len++) {
var l = children[len].getLayout();
......@@ -293,7 +293,7 @@ KityMinder.registerModule("LayoutDefault", function () {
return effectSet;
};
//计算节点在水平方向的位置
var updateLayoutHorizon = function (node) {
var updateLayoutHorizon = function(node) {
var nodeType = node.getType();
var parent = node.getParent();
var effectSet = [node];
......@@ -302,7 +302,7 @@ KityMinder.registerModule("LayoutDefault", function () {
while (_buffer.length !== 0) {
var prt = _buffer[0].getParent();
var children = _buffer[0].getChildren();
children = (function () {
children = (function() {
var result = [];
for (var len = 0; len < children.length; len++) {
var l = children[len].getLayout();
......@@ -336,7 +336,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
return effectSet;
};
var translateNode = function (node) {
var translateNode = function(node) {
var Layout = node.getLayout();
var nodeShape = node.getRenderContainer();
var align = Layout.align;
......@@ -355,7 +355,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
node.setPoint(Layout.x, Layout.y);
};
var updateConnectAndshIcon = function (node) {
var updateConnectAndshIcon = function(node) {
var nodeType = node.getType();
var Layout = node.getLayout();
var nodeStyle = nodeStyles[node.getType()];
......@@ -439,10 +439,10 @@ KityMinder.registerModule("LayoutDefault", function () {
};
var _style = {
getCurrentLayoutStyle: function () {
getCurrentLayoutStyle: function() {
return nodeStyles;
},
initStyle: function () {
initStyle: function() {
//渲染根节点
var _root = minder.getRoot();
var historyPoint = _root.getPoint();
......@@ -486,7 +486,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
_root.setPoint(_root.getLayout().x, _root.getLayout().y);
},
updateLayout: function (node) {
updateLayout: function(node) {
node.getContRc().clear();
this._firePharse(new MinderEvent("RenderNodeLeft", {
node: node
......@@ -518,7 +518,7 @@ KityMinder.registerModule("LayoutDefault", function () {
this.highlightNode(node)
}
},
expandNode: function (ico) {
expandNode: function(ico) {
var isExpand, node;
if (ico instanceof MinderNode) {
node = ico;
......@@ -564,7 +564,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
}
},
appendChildNode: function (parent, node, sibling) {
appendChildNode: function(parent, node, sibling) {
minder.handelNodeInsert(node);
node.clearLayout();
node.getContRc().clear();
......@@ -671,11 +671,11 @@ KityMinder.registerModule("LayoutDefault", function () {
var shicon = parent.getLayout().shicon;
if (shicon) shicon.switchState(true);
},
appendSiblingNode: function (sibling, node) {
appendSiblingNode: function(sibling, node) {
var parent = sibling.getParent();
this.appendChildNode(parent, node, sibling);
},
removeNode: function (nodes) {
removeNode: function(nodes) {
nodes = utils.isArray(nodes) ? nodes : [nodes];
while (nodes.length !== 0) {
var parent = nodes[0].getParent();
......@@ -720,7 +720,7 @@ KityMinder.registerModule("LayoutDefault", function () {
}
}
},
highlightNode: function (node) {
highlightNode: function(node) {
var highlight = node.isHighlight();
var nodeType = node.getType();
var nodeStyle = nodeStyles[nodeType];
......
KityMinder.registerTheme('bottom', {
'root-color': '#430',
'root-background': '#e9df98',
'root-stroke': 'none',
'root-font-size': 24,
'root-padding': [15, 25],
'root-margin': 100,
'root-radius': 30,
'root-space': 10,
'main-color': '#333',
'main-background': '#a4c5c0',
'main-stroke': 'none',
'main-font-size': 16,
'main-padding': [6, 20],
'main-margin': [30, 0, 10, 0],
'main-radius': 10,
'main-space': 5,
'sub-color': 'white',
'sub-background': 'none',
'sub-stroke': 'white',
'sub-font-size': 12,
'sub-padding': [5, 10],
'sub-margin': [5, 15, 10, 5],
'sub-radius': 5,
'sub-space': 5,
'connect-color': 'white',
'connect-width': 2,
'connect-radius': 5,
'selected-background': 'rgb(254, 219, 0)'
});
\ No newline at end of file
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