添加多种数据结构支持
This commit is contained in:
@@ -43,6 +43,11 @@ class BinaryTree extends Engine {
|
||||
offset: 14,
|
||||
style: {
|
||||
fill: '#f08a5d'
|
||||
},
|
||||
labelOptions: {
|
||||
style: {
|
||||
fill: '#000099'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -165,63 +170,26 @@ const BTree = function(container) {
|
||||
return{
|
||||
engine: new BinaryTree(container),
|
||||
data: [
|
||||
// [
|
||||
// { id: 1, child: [2, 3], root: true, external: ['treeA', 'gear'] },
|
||||
// { id: 2, child: [null, 6] },
|
||||
// { id: 3, child: [5, 4] },
|
||||
// { id: 4, external: 'foo' },
|
||||
// { id: 5 },
|
||||
// { id: 6, external: 'bar', child: [null, 7] },
|
||||
// { id: 7 },
|
||||
// { id: 8, child: [9, 10], root: true },
|
||||
// { id: 9, child: [11, null] },
|
||||
// { id: 10 },
|
||||
// { id: 11 }
|
||||
// ],
|
||||
// [
|
||||
// { id: 1, child: [2, 3], root: true, external: 'treeA' },
|
||||
// { id: 2, external: 'gear' },
|
||||
// { id: 3, child: [5, 4] },
|
||||
// { id: 4, external: 'foo' },
|
||||
// { id: 5, child: [12, 13] },
|
||||
// { id: 12 }, { id: 13 }
|
||||
// ]
|
||||
[
|
||||
{
|
||||
"external": [
|
||||
"r",
|
||||
"T1"
|
||||
],
|
||||
"child": [
|
||||
6385376,
|
||||
6385424
|
||||
],
|
||||
"id": 6385328,
|
||||
"name": "T1",
|
||||
"data": "Z",
|
||||
"root": true
|
||||
},
|
||||
{
|
||||
"child": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"id": 6385376,
|
||||
"name": "T1.lchild",
|
||||
"data": "A"
|
||||
},
|
||||
{
|
||||
"external": [
|
||||
"t"
|
||||
],
|
||||
"child": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"id": 6385424,
|
||||
"name": "T1.rchild",
|
||||
"data": "B"
|
||||
}
|
||||
{ id: 1, child: [2, 3], root: true, external: ['treeA', 'gear'] },
|
||||
{ id: 2, child: [null, 6] },
|
||||
{ id: 3, child: [5, 4] },
|
||||
{ id: 4, external: 'foo', child: [5, null] },
|
||||
{ id: 5 },
|
||||
{ id: 6, external: 'bar', child: [null, 7] },
|
||||
{ id: 7 },
|
||||
{ id: 8, child: [9, 10], root: true },
|
||||
{ id: 9, child: [11, null] },
|
||||
{ id: 10 },
|
||||
{ id: 11 }
|
||||
],
|
||||
[
|
||||
{ id: 1, child: [2, 3], root: true, external: 'treeA' },
|
||||
{ id: 2, external: 'gear' },
|
||||
{ id: 3, child: [5, 4] },
|
||||
{ id: 4, external: 'foo' },
|
||||
{ id: 5, child: [12, 13] },
|
||||
{ id: 12 }, { id: 13 }
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -41,11 +41,11 @@ class Graph extends Engine {
|
||||
radius = layoutOptions.radius,
|
||||
intervalAngle = 2 * Math.PI / nodes.length;
|
||||
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
let [x, y] = Vector.rotation(-intervalAngle * i, [0, -radius]);
|
||||
for (let i = 0; i < nodes.length; i++) {
|
||||
let [x, y] = Vector.rotation(-intervalAngle * i, [0, -radius]);
|
||||
|
||||
nodes[i].set({x, y});
|
||||
}
|
||||
nodes[i].set({x, y});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class RingArray extends Engine {
|
||||
defineOptions() {
|
||||
return {
|
||||
element: {
|
||||
default: {
|
||||
type: 'rect',
|
||||
label: '[id]',
|
||||
size: [60, 30],
|
||||
style: {
|
||||
stroke: '#333',
|
||||
fill: '#95e1d3'
|
||||
}
|
||||
}
|
||||
},
|
||||
pointer: {
|
||||
external: {
|
||||
offset: 8,
|
||||
style: {
|
||||
fill: '#f08a5d'
|
||||
}
|
||||
}
|
||||
},
|
||||
interaction: {
|
||||
dragNode: false
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
layout(elements) {
|
||||
let arr = elements.default,
|
||||
width = arr[0].get('size')[0],
|
||||
radius = width * 1.1 / (2 * Math.sin(Math.PI / arr.length)),
|
||||
intervalAngle = 2 * Math.PI / arr.length;
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
let [x, y] = Vector.rotation(-intervalAngle * i, [0, radius]);
|
||||
|
||||
arr[i].set({x, y});
|
||||
arr[i].set('rotation', intervalAngle * i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const RA = function(container) {
|
||||
return{
|
||||
engine: new RingArray(container),
|
||||
data: [[
|
||||
{ id: 1 },
|
||||
{ id: 2 },
|
||||
{ id: 3 },
|
||||
{ id: 4 },
|
||||
{ id: 5 },
|
||||
{ id: 6 },
|
||||
{ id: 7 },
|
||||
{ id: 8 },
|
||||
{ id: 9 },
|
||||
{ id: 10 }
|
||||
],
|
||||
[
|
||||
{ id: 1 },
|
||||
{ id: 2 },
|
||||
{ id: 3 },
|
||||
{ id: 6 },
|
||||
{ id: 7 },
|
||||
{ id: 8 }
|
||||
]]
|
||||
}
|
||||
};
|
||||
@@ -33,6 +33,23 @@ class LinkList extends Engine {
|
||||
fill: '#333'
|
||||
}
|
||||
}
|
||||
},
|
||||
loopNext: {
|
||||
type: 'arc',
|
||||
curveOffset: 50,
|
||||
sourceAnchor: 1,
|
||||
targetAnchor: 3,
|
||||
style: {
|
||||
stroke: '#333',
|
||||
endArrow: {
|
||||
path: G6.Arrow.triangle(6, 6, -2),
|
||||
fill: '#333'
|
||||
},
|
||||
startArrow: {
|
||||
path: G6.Arrow.circle(2, -1),
|
||||
fill: '#333'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
pointer: {
|
||||
@@ -107,7 +124,7 @@ const LList = function(container) {
|
||||
{ id: 2, next: 3 },
|
||||
{ id: 3, next: 4 },
|
||||
{ id: 4, next: 5 },
|
||||
{ id: 5 },
|
||||
{ id: 5, loopNext: 6 },
|
||||
{ id: 6, root: true, next: 7 },
|
||||
{ id: 7, next: 8 },
|
||||
{ id: 8, next: 4 },
|
||||
|
||||
Reference in New Issue
Block a user