0.1.0 • Published 6 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
6 years ago