0.1.0 • Published 8 years ago
redux-graphed v0.1.0
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 metadataactions.add(nodes, edges): Add given nodes and edges to the graphactions.remove(nodes, edges): Remove given nodes and edges from the graphactions.addNodes(nodes): Add nodes to the graphactions.removeNodes(nodes): Remove nodes from the graph that have the same id fields as the provided onesactions.updateNodes(nodes): For every provided nodes, replace an existing node with the same id with the node providedactions.addEdges(edges): Add edges to the graphactions.removeEdges(edges): Remove edges from the graph that have the same from and to fields as the provided onesactions.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 oneactions.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
0.1.0
8 years ago