1.0.6 • Published 4 years ago

react-graph-network v1.0.6

Weekly downloads
74
License
MIT
Repository
github
Last release
4 years ago

React component for rendering svg graph based on d3-force with zoom, node dragging and other preferences.

Usage

Simple case

simple-case

import React from 'react';
import Graph from 'react-graph-network';

const data = {
  nodes: [
    {id: "HkqEDLvxE"},
    {id: "011jVS4rb"},
    {id: "PXACjDxmR"},
    {id: "kuVISwh7w"},
    {id: "UIEjvLJMd"},
    {id: "ZVi8fWDBx"},
    {id: "H-06WvsfJ"},
    {id: "Fbc9iwnJl"},
  ],
  links: [
    {"source": "HkqEDLvxE", "target": "011jVS4rb"},
    {"source": "011jVS4rb", "target": "PXACjDxmR"},
    {"source": "PXACjDxmR", "target": "kuVISwh7w"},
    {"source": "PXACjDxmR", "target": "Fbc9iwnJl"},
    {"source": "PXACjDxmR", "target": "UIEjvLJMd"},
    {"source": "kuVISwh7w", "target": "UIEjvLJMd"},
    {"source": "UIEjvLJMd", "target": "ZVi8fWDBx"},
    {"source": "ZVi8fWDBx", "target": "H-06WvsfJ"},
    {"source": "H-06WvsfJ", "target": "Fbc9iwnJl"}
  ]
};

const App = () => (
  <div style={{ height: '100vh' }}>
    <Graph data={data} id="graph" />
  </div>
);

export default App;

Advanced case

Try different preferences on demo page with Leo Tolstoy family tree data.

Props

NameTypeDefaultDescription
dataobjectMust have links and nodes props. Each node must have id prop. Each link must have source and target props with id as values.
idstringGraphTree_containerProvide id if you need more than 1 graph.
nodeDistancenumber100The more value is, the more is distance between nodes.
NodeComponentnodeHas to be svg element. Will receive concrete node prop from your data.
LineComponentnodeHas to be <line /> tag. Will receive concrete link prop from your data as id and as object it point to.
enableDragboolfalseEnable nodes dragging.
pullInboolfalseWhen enableDrag, stretch nodes back.
zoomDepthnumber0Zooming on scroll wheel. 1 will just enable dragging graph area.
hoverOpacitynumber1When hover on node all other nodes will have this value as opacity. Needs to be from 0 to 1.

LineComponent

You need to apply all rest props on your <line> tag. If you have specific logic in your Line component be sure to handle link prop both as id and object. See details and example on demo project.

data example

const data = {
    nodes: [
        {id: "HkqEDLvxE"},
        {id: "011jVS4rb"},
        {id: "PXACjDxmR"},
        {id: "kuVISwh7w"},
    ],
    links: [
        {"source": "HkqEDLvxE", "target": "011jVS4rb"},
        {"source": "HkqEDLvxE", "target": "PXACjDxmR"},
        {"source": "kuVISwh7w", "target": "011jVS4rb"},
        {"source": "kuVISwh7w", "target": "PXACjDxmR"},
        {"source": "011jVS4rb", "target": "PXACjDxmR"}
    ]
};