0.6.0 • Published 1 year ago

view-graph v0.6.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

view-graph

This project allows automatically render graphs for visualization and analysis. Enjoy exploring graphs directly in the web browser.

The view-graph takes descriptions of graphs in a simple JSON format, and makes diagrams in automatic mode.

Installation

npm install view-graph lit-html --save

Or use a content delivery network:

unpkg.com CDN:

<script src="https://unpkg.com/view-graph"></script>

Usage

Without bundling

Demo

With ReactJS

Demo


Options


It uses dagre under the hood for lay out directed graphs.


API

ViewGraphElementType shows methods that can be used for interact with the main element: | Name | Description | Interface | |---------------|--------------------------------------|-----------------------------------------------------------| | toggleTooltip | Can be used for showing or hiding nodes' tooltips| (isVisible: boolean, nodeKey: string) => void |

Callbacks:

NameDescriptionInterface
onClickByNodeInvokes by click on a Node(nodeId: string) => ((event: MouseEvent) => void) | void
onClickByEdgeInvokes by click on an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onEnterEdgeInvokes when a cursor enters an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onLeaveEdgeInvokes when a cursor leaves an Edge(edgeId: string) => ((event: MouseEvent) => void) | void
onEnterNodeInvokes when a cursor enters an Node(nodeId: string) => ((event: MouseEvent) => void) | void
onLeaveNodeInvokes when a cursor leaves an Node(nodeId: string) => ((event: MouseEvent) => void) | void

Set the callback property to add a reaction by click on a node or an edge.

For example, you can change styles by click:

  const onClickByNode = (event: MouseEvent) => {
    const target = event.target as SVGElement;

    if (target instanceof SVGTextElement) {
      target.style.fill = 'red';
      target.style.fontWeight = 'bold';
    }

    const id = target.parentElement!.id;

    const nodes = graphData.nodes.map((n) => ({
      ...n,
      styleId: n.id === id ? 'selectedNode' : undefined,
    }));

    data = {
      ...data,
      nodes,
    };

    this.next();
  };

  const onClickByEdge = (event: MouseEvent) => {
    const target = event.target as SVGElement;
    const parent = target.parentElement!;

    parent.childNodes.forEach((it) => {
      if (it instanceof SVGElement) {
        it.style.stroke = 'red';
      }
    });
  };

...

<ViewGraphElement
  data={data}
  callback={{ onClickByNode, onClickByEdge }}
></ViewGraphElement>

License

view-graph is licensed under the terms of the MIT License. See LICENSE for details.

0.5.0

2 years ago

0.6.0

1 year ago

0.4.0

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.4

2 years ago

0.3.3

2 years ago

0.3.2

2 years ago

0.3.1

2 years ago

0.3.0

2 years ago

0.2.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago