import React from 'react';
import ReactDOM from 'react-dom';
import $ from 'jquery';
import {Canvas, Node} from '../index';
class BaseNode extends Node {
constructor(opts) {
super(opts);
this.id = opts.id;
this.top = opts.top;
this.left = opts.left;
this.options = opts;
}
draw = (opts) => {
let container = $('<div class="force-node"></div>')
.css('top', opts.top + 'px')
.css('left', opts.left+ 'px')
.attr('id', opts.id);
container.text(opts.options.index);
return container[0];
}
}
const mockData = {
nodes: [ {id: "0", index: "0", Class: BaseNode, group: 'group_1'},
{id: "1", index: "1", Class: BaseNode, group: 'group_1'},
{id: "2", index: "2", Class: BaseNode},
{id: "3", index: "3", Class: BaseNode},
{id: "4", index: "4", Class: BaseNode},
{id: "5", index: "5", Class: BaseNode},],
edges: [ {source: "0", target: "1"},
{source: "1", target: "2"},
{source: "1", target: "3"},
{source: "1", target: "4"},
{source: "1", target: "5"},
],
groups: [
{
id: 'group_1',
top: 100,
left: 50
}
]
};
class ForceTree extends React.Component {
componentDidMount() {
let root = document.getElementById('dag-canvas');
this.canvas = new Canvas({
root: root,
disLinkable: true, // 可删除连线
linkable: false, // 可连线
draggable: true, // 可拖动
zoomable: true, // 可放大
moveable: true, // 可平移
layout: {
type: 'forceLayout',
options: {
link: {
// 线条的距离
distance: 50,
// 线条的粗细
strength: 1
}
},
},
theme: {
edge: {
type: 'Straight'
}
}
});
this.canvas.draw(mockData);
this.canvas.setMinimap(true);
}
render() {
return (
<div className='force-tree-page'>
<div className="force-tree-canvas" id="dag-canvas">
</div>
</div>
);
}
}
ReactDOM.render(
<ForceTree />, document.getElementById('root')
);