Commit 52b2c282 authored by Akikonata's avatar Akikonata

changed the analyze rule

parent 9be1c436
......@@ -42,13 +42,13 @@
minder.execCommand("rendernode",_root);
//模拟生成一个初始图
for(var j=0;j<20;j++){
var appendSide = Math.random()>0.5?"left":"right";
var layerArray = _root.getData("layer"+appendSide);
var layer = parseInt(Math.random()*layerArray.length);
var layerData = layerArray[layer];
var root = layerData[parseInt(Math.random()*layerData.length)]
minder.execCommand("createchildnode",root);
}
// for(var j=0;j<20;j++){
// var appendSide = Math.random()>0.5?"left":"right";
// var layerArray = _root.getData("layer"+appendSide);
// var layer = parseInt(Math.random()*layerArray.length);
// var layerData = layerArray[layer];
// var root = layerData[parseInt(Math.random()*layerData.length)]
// minder.execCommand("createchildnode",root);
// }
</script>
</html>
\ No newline at end of file
......@@ -48,6 +48,9 @@ KityMinder.registerModule( "LayoutModule", function () {
} while ( parent );
return true;
}
};
var updateBranchWidth = function ( node, appendSide ) {
};
var reAnalyze = function ( km, layerArray, appendSide ) {
for ( var lv = 0; lv < layerArray.length; lv++ ) {
......@@ -67,6 +70,19 @@ KityMinder.registerModule( "LayoutModule", function () {
}
}
};
var getX = function ( node ) {
var parent = node.getParent();
var parentX = parent.getData( "x" );
var parentWidth = parent.getRenderContainer().getWidth();
var side = node.getData( "appendside" );
if ( side === "left" ) {
node.setData( "x", parentX - parentWidth - 50 );
} else {
node.setData( "x", parentX + parentWidth + 50 );
}
};
var createChildNode = function ( km, parent, index ) {
var root = km.getRoot();
var appendSide = parent.getData( "appendside" );
......@@ -76,16 +92,6 @@ KityMinder.registerModule( "LayoutModule", function () {
_node.setData( "appendside", appendSide );
if ( parent === root ) {
var childCount = parent.getChildren().length;
console.log( childCount );
if ( isOdd( parseInt( childCount / 5 ) ) ) {
root.setData( "appendside", "left" );
} else {
root.setData( "appendside", "right" );
}
}
var parentX = parent.getData( "x" );
var parentWidth = parent.getRenderContainer().getWidth();
......@@ -145,6 +151,20 @@ KityMinder.registerModule( "LayoutModule", function () {
}
layerData.splice( insertPos, 0, _node );
if ( parent === root ) {
var leftCount = parent.getData( "layerleft" );
var rightCount = parent.getData( "layerright" );
leftCount = leftCount[ 1 ] ? leftCount[ 1 ].length : 0;
rightCount = rightCount[ 1 ] ? rightCount[ 1 ].length : 0;
console.log( leftCount, rightCount );
if ( rightCount > leftCount && rightCount > 1 ) {
parent.setData( "appendside", "left" );
} else {
parent.setData( "appendside", "right" );
}
}
var reAnal = updateBranchHeight( _node, appendSide, root, true );
//判断是重绘全部还是只是添加节点
if ( reAnal ) {
......@@ -167,7 +187,11 @@ KityMinder.registerModule( "LayoutModule", function () {
return {
base: Command,
execute: function ( km, sibling ) {
var root = km.getRoot();
var parent = sibling.getParent();
if ( parent === root ) {
parent.setData( "appendside", sibling.getData( "appendside" ) );
}
var index = sibling.getIndex() + 1;
if ( parent ) {
return createChildNode( km, parent, index );
......@@ -218,11 +242,36 @@ KityMinder.registerModule( "LayoutModule", function () {
}
};
} )() );
var UpdateNodeCommand = kity.createClass( "UpdateNodeCommand", ( function () {
return {
base: Command,
execute: function ( km, node, feature ) {
var _root = km.getRoot();
var rerender = false;
for ( var key in feature ) {
node.setData( "key", feature[ key ] );
if ( key === "text" ) {
rerender = true;
}
}
if ( rerender ) {
km.execCommand( "rendernode", node );
node.preTraverse( function ( subnode ) {
subnode.setData( "x", getX( subnode ) );
km.execCommand( "rendernode", subnode );
} );
}
}
};
} )() );
return {
"commands": {
"createchildnode": CreateChildNodeCommand,
"createsiblingnode": CreateSiblingNodeCommand,
"removenode": RemoveNodeCommand
"removenode": RemoveNodeCommand,
"updatenode": UpdateNodeCommand
},
"events": {
......
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