diff --git a/demo/Layouter/IndentedTree.js b/demo/Layouter/IndentedTree.js
new file mode 100644
index 0000000..8473849
--- /dev/null
+++ b/demo/Layouter/IndentedTree.js
@@ -0,0 +1,269 @@
+
+//
+
+SV.registerLayout('Indented', {
+
+ defineOptions() {
+ return {
+ node: {
+ default: {
+ type: 'indented-tree-node',//自定义节点
+ label: '[data]',
+ size: [60, 30],
+ labelOptions: {
+ style: {
+ fontsize: 18,
+ color: '#333'
+ },
+ style: {
+ stroke: '#333',
+ fill: '#95e1d3',
+ cursor: 'pointer',
+ },
+ },
+
+ },
+
+
+ },
+
+
+ link: {
+
+ child: {
+ type: 'polyline',//折线
+ sourceAnchor: 0,
+ targetAnchor: 1,
+ style: {
+ cursor: 'pointer',
+ lineAppendWidth: 4,
+ stroke: '#333',
+ endArrow: {
+ path: G6.Arrow.triangle(8, 6, 0),
+ fill: '#333'
+ },
+ startArrow: {
+ path: G6.Arrow.circle(2, -1),
+ fill: '#333'
+ }
+ }
+ }
+
+ },
+
+ layout: {
+ xInterval: 40,
+ yInterval: 10,
+ },
+
+ };
+ },
+ /**
+ * 对子树进行递归布局
+ */
+ //判断是否是B节点
+
+ layoutItem(node,elements,layoutOptions)
+{
+ if (!node) {
+ return null;
+ }
+
+
+
+ let width = 60,
+ height = 40;
+
+
+
+
+
+
+//还是要分第一个节点
+ if (node.child) {//如果是父节点//node==B
+ let childLength = node.child.length;
+ console.log(childLength);
+ for (let i = 0; i < childLength; i++) {
+ parent = node;
+
+
+ // console.log(node.child[i].get('parent'));
+
+ node.child[i].set('x', parent.get('x') + width + layoutOptions.xInterval);
+ console.log(layoutOptions.xInterval);
+ if (this.isFirstChild(elements, node.child[i]))//如果是B节点{
+
+ {
+
+ node.child[i].set('y', 0 + height +layoutOptions.yInterval);
+ let tempY = node.child[i].get('y')
+ console.log(tempY);
+ }
+ else {
+ node.child[i].set('y', tempY + height + layoutOptions.yInterval)
+ }
+
+ tempY = node.child[i].get('y')
+ console.log(tempY);//80
+
+
+
+
+ if (node.child[i].child) {
+
+
+ this.LayoutChild(node.child[i],layoutOptions);//node.child[i]==c
+
+ }
+ if (!(node.child[i].child)) {
+
+ // tempY= node.child[i].get('y')
+
+ // console.log(node.get('tempY'));
+ tempY = node.child[i].get('y')
+
+ }
+
+
+
+ }
+
+ }
+
+ },
+
+
+
+ isFirstChild(elements,node)
+ {
+
+ console.log(elements);
+ let root = elements[0];
+
+ for (g = 0; g < root.child.length; g++)
+ {
+ if (root.child[0].id === node.id)
+ {
+ return true;
+ }
+ }
+
+ },
+
+ LayoutChild(node,layoutOptions) //node.child[0]=B
+
+ {
+
+ let parent = node;//b
+
+
+ //70
+
+ //当前节点的y坐标
+ //140 C=140
+ let xInterval = layoutOptions.xInterval,
+ yInterval = layoutOptions.yInterval;
+ for (let k = 0; k < node.child.length; k++) {
+
+ if (!(node.child[k].child))
+ {
+
+ node.child[k].set('x', parent.get('x') + 60 + xInterval)
+ console.log( node);
+ node.child[k].set('y', tempY + 40 +yInterval)//D/F的坐标
+ tempY = node.child[k].get('y')
+ console.log(tempY);
+
+
+
+
+ }//node.child[k=g]
+ if (node.child[k].child) {
+ node.child[k].set('x', parent.get('x') + 60 +xInterval)
+ node.child[k].set('y', tempY + 40 +yInterval )//c
+ tempY = node.child[k].get('y');
+ console.log(node.child[k]);
+ this.LayoutChild(node.child[k], layoutOptions)
+ }
+
+
+
+
+ }
+ },
+ //返回第一层子节点
+ // isFirstChild(elements,node) {
+ // let Root = elements[0];
+ // console.log(Root);
+ // console.log(node.id);
+ // console.log(node);
+ // for (g = 0; g < Root.child.length; g++)
+ // {
+
+ // if (Root.child[g].id === node.id) {
+ // return node;
+ // }
+
+ // }
+ // },
+
+ layout(elements, layoutOptions) {
+
+ let root = elements[0];
+
+ root.set({
+ x: 0,
+ y: 0
+ });
+
+ console.log(root.get('x'));
+ console.log(root.get('y'));
+
+ this.layoutItem(root,elements,layoutOptions);
+
+ }
+
+});
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/data.js b/demo/data.js
index c099349..ea78951 100644
--- a/demo/data.js
+++ b/demo/data.js
@@ -1,469 +1,68 @@
-const SOURCES_DATA = [{
- "GeneralizedList0": {
- "data": [{
- "type": "atom",
- "id": "0x1486ec0",
- "tag": 0,
- "data": "e",
- "root": true,
- "external": ["p"]
- }, {
- "type": "atom",
- "id": "0x1486ee0",
- "tag": 0,
- "data": "0",
- "root": true,
- "external": ["head"]
- }],
- "layouter": "GeneralizedList"
- },
- },
+const SOURCES_DATA = [
{
- "GeneralizedList": {
+ IndentedTree: {
"data": [{
- "type": "atom",
- "id": "0x1486ec0",
- "tag": 0,
- "data": "e",
- "root": true,
- "external": ["p"]
- }, {
- "type": "table",
- "id": "0x1486ee0",
- "tag": 1,
- "next": null,
- "loopNext": null,
- "root": true,
- "external": ["head"]
- }],
- "layouter": "GeneralizedList"
- }
- },
- {
- "TriTree0": {
- "data": [{
- "external": [
- "T"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0xfd9ee0",
- "0xfd9f10"
- ],
- "id": "0xfd9eb0",
- "name": "T",
- "data": "A",
- "root": true,
- "type": "default"
- },
- {
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9ee0",
- "name": "T->lchild",
- "data": "B",
- "type": "default",
- "l_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T1"
- ]
- },
- {
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f10",
- "name": "T->rchild",
- "data": "C",
- "type": "default",
- "r_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T2"
- ]
- }
- ],
- "layouter": "TriTree"
- },
- "TriTree3": {
- "data": [{
- "external": [
- "T3"
- ],
- "parent": [
- "0x0"
- ],
"child": [
- "0x0",
- "0x0"
+ "0x2",
+ "0x3",
+ "0x5",
],
- "id": "0xfd9f40",
- "name": "T3",
+ "id": "0x1",
+ "root": true,
+ "data": "A",
+ "type": "default",
+ },
+ { "child":["0x9"],
+ "id": "0x2",
+ "data": "B",
+ "type": "default",
+ },
+ {
+ "child": [
+ "0x4",
+ "0x7"
+ ],
+ "id": "0x3",
+ "data": "C",
+ "type": "default",
+ },
+ {
+ "child": [
+ "0x6",
+ ],
+ "id": "0x4",
"data": "D",
- "root": true,
- "type": "default"
- }],
- "layouter": "TriTree"
- },
- "TriTree4": {
- "data": [{
- "external": [
- "T4"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f70",
- "name": "T4",
+ "type": "default",
+ },
+ {
+ "id": "0x5",
"data": "E",
- "root": true,
- "type": "default"
- }],
- "layouter": "TriTree"
- },
- "handleUpdate": {
- "isEnterFunction": true,
- "isFirstDebug": true
- }
- }, {
- "TriTree0": {
- "data": [{
- "external": [
- "T"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0xfd9ee0",
- "0xfd9f10"
- ],
- "id": "0xfd9eb0",
- "name": "T",
- "data": "A",
- "root": true,
- "type": "default"
+ "type": "default",
+ },
+ {"child":["0x8"],
+ "id": "0x6",
+ "data": "F",
+ "type": "default",
},
{
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9ee0",
- "name": "T->lchild",
- "data": "B",
+ "id": "0x7",
+ "data": "G",
"type": "default",
- "l_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T1"
- ]
},
{
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f10",
- "name": "T->rchild",
- "data": "C",
+ "id": "0x8",
+ "data": "I",
"type": "default",
- "r_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T2"
- ]
- }
+ },
+ {
+ "id": "0x9",
+ "data": "J",
+ "type": "default",
+ },
+
],
- "layouter": "TriTree"
- },
- "TriTree3": {
- "data": [{
- "external": [
- "T3"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f40",
- "name": "T3",
- "data": "D",
- "root": true,
- "type": "default"
- }],
- "layouter": "TriTree"
- },
- "TriTree4": {
- "data": [{
- "external": [
- "T4"
- ],
- "parent": [
- "0xfd9f40"
- ],
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f70",
- "name": "T4",
- "data": "E",
- "root": true,
- "type": "default"
- }],
- "layouter": "TriTree"
- },
- "handleUpdate": {
- "isEnterFunction": false,
- "isFirstDebug": false
- }
- }, {
- "TriTree0": {
- "data": [{
- "external": [
- "T"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0xfd9ee0",
- "0xfd9f10"
- ],
- "id": "0xfd9eb0",
- "name": "T",
- "data": "A",
- "root": true,
- "type": "default"
- },
- {
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9ee0",
- "name": "T->lchild",
- "data": "B",
- "type": "default",
- "l_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T1"
- ]
- },
- {
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f10",
- "name": "T->rchild",
- "data": "C",
- "type": "default",
- "r_parent": [
- "0xfd9eb0"
- ],
- "external": [
- "T2"
- ]
- }
- ],
- "layouter": "TriTree"
- },
- "TriTree3": {
- "data": [{
- "external": [
- "T3"
- ],
- "parent": [
- "0x0"
- ],
- "child": [
- "0xfd9f70",
- "0x0"
- ],
- "id": "0xfd9f40",
- "name": "T3",
- "data": "D",
- "root": true,
- "type": "default"
- },
- {
- "child": [
- "0x0",
- "0x0"
- ],
- "id": "0xfd9f70",
- "name": "T3->lchild",
- "data": "E",
- "type": "default",
- "l_parent": [
- "0xfd9f40"
- ],
- "external": [
- "T4"
- ]
- }
- ],
- "layouter": "TriTree"
- },
- "handleUpdate": {
- "isEnterFunction": false,
- "isFirstDebug": false
- }
- }, {
- "force0": {
- "data": [{
- "id": "0x617eb1",
- "data": "A",
- "next": "0x617eb2"
- },
- {
- "id": "0x617eb2",
- "data": "B",
- "next": "0x617eb3"
- },
- {
- "id": "0x617eb3",
- "data": "C",
- "next": "0x617eb5"
- },
- {
- "id": "0x617eb5",
- "data": "D",
- "next": "0x617eb3"
- },
- {
- "id": "0x617eb6",
- "data": "D",
- "next": "0x617eb5"
- },
- {
- "id": "0x617eb7",
- "data": "D",
- "next": "0x617eb6"
- },
- {
- "id": "0x617eb8",
- "data": "D",
- "next": "0x617eb7"
- },
- {
- "id": "0x617eb9",
- "data": "D",
- "next": "0x617eb8"
- },
- {
- "id": "0x617eba",
- "data": "D",
- "next": "0x617eb9"
- },
- {
- "id": "0x617ebb",
- "data": "D",
- "next": "0x617eba"
- },
- {
- "id": "0x617ebc",
- "data": "D",
- "next": "0x617ebb"
- },
- {
- "id": "0x617ebd",
- "data": "D",
- "next": "0x617ebc"
- },
- {
- "id": "0x617ebe",
- "data": "D",
- "next": "0x617ebd"
- },
- {
- "id": "0x627ebe",
- "data": "D",
- "next": "0x617ebe"
- },
- {
- "id": "0x637ebe",
- "data": "D",
- "next": "0x627ebe"
- },
- {
- "id": "0x647ebe",
- "data": "D",
- "next": "0x637ebe"
- },
- {
- "id": "0x657ebe",
- "data": "D",
- "next": "0x647ebe"
- },
- {
- "id": "0x667ebe",
- "data": "D",
- "next": "0x657ebe"
- },
- {
- "id": "0x677ebe",
- "data": "D",
- "next": "0x667ebe"
- },
- {
- "id": "0x687ebe",
- "data": "D",
- "next": "0x677ebe"
- },
- {
- "id": "0x697ebe",
- "data": "D",
- "next": "0x687ebe"
- },
- {
- "id": "0x6a7ebe",
- "data": "D",
- "next": "0x697ebe"
- },
- {
- "id": "0x6b7ebe",
- "data": "D",
- "next": "0x6a7ebe"
- },
- {
- "id": "0x6c7ebe",
- "data": "D",
- "next": "0x6b7ebe"
- },
- {
- "id": "0x6d7ebe",
- "data": "X",
- "next": "0x6c7ebe"
- },
- {
- "id": "0x6e7ebe",
- "data": "Y",
- "next": "0x6d7ebe"
- },
- ],
- "layouter": "Force"
+ "layouter": "Indented"
}
}
+
];
\ No newline at end of file
diff --git a/demo/demo.html b/demo/demo.html
index 2323828..27a3806 100644
--- a/demo/demo.html
+++ b/demo/demo.html
@@ -87,6 +87,7 @@
+