0.1.0 • Published 6 years ago

redux-graphed v0.1.0

Weekly downloads
9
License
MIT
Repository
-
Last release
6 years ago

redux-graphed

A library to handle business logic relating to a graph entity, and perform operations as add/remove/update of nodes and edges.

Below is a list of possible actions that this library expose:

  • actions.set(nodes, edges, metadata): Replace the current graph with a new graph with given nodes, edges and metadata
  • actions.add(nodes, edges): Add given nodes and edges to the graph
  • actions.remove(nodes, edges): Remove given nodes and edges from the graph
  • actions.addNodes(nodes): Add nodes to the graph
  • actions.removeNodes(nodes): Remove nodes from the graph that have the same id fields as the provided ones
  • actions.updateNodes(nodes): For every provided nodes, replace an existing node with the same id with the node provided
  • actions.addEdges(edges): Add edges to the graph
  • actions.removeEdges(edges): Remove edges from the graph that have the same from and to fields as the provided ones
  • actions.updateEdges(edges): For every provided edge, take its from and to fields to search for an existing edge. If it exists, replace the edge with the provided one
  • actions.updateMetadata(metadata): Set graph metadata

How to use it

Add the library's reducers to the Redux store slice you would like to use to put the graph state:

import { combineReducers } from 'redux-immutable';
import graphed from 'redux-graphed';

const appReducer = combineReducers({
   ...
  graphed: graphed.reducers,
});

Then, you can use the library actions to manipulate the graph, e.g.:

import graphed from 'redux-graphed';

const nodes = [{ id: 1, { id: 2 }];
const edges = [{ source: 1, target: 2 }];

store.dispatch(graphed.actions.add(nodes, edges))

Consistency checks

There are some consistency checks when performing actions

  • It automatically filters out duplicate nodes (by id) and duplicate edges (by from and to)
  • It won't add or will automatically delete dangling edges that refer to no longer existing nodes in from or to or both fields
  • An edge must have existing target and destination, otherwise it won't be plotted