react-sigma
Version:
Lightweight but powerful library for drawing network graphs built on top of SigmaJS
60 lines (50 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
const palette = ["#5DA5DA", "#60BD68", "#B2912F", "#F15854", "#DECF3F", "#FAA43A", "#B276B2", "#F17CB0", "#4D4D4D"];
/*
Default node and edge transformation for NeoCypher,
class has 2 functions: node() and edge() which transform data from Neo4j format into Sigma.
Also it iterates colors assignments from palette based on node.label and edge.type.
*/
class NeoGraphItemsProducers {
constructor() {
this._currentColor = 0;
this._colorsMap = {};
}
node(node) {
return {
id: node.id,
label: node.properties.name,
x: Math.random(),
y: Math.random(),
size: 1,
color: this.colorsMap(node.labels[0]),
neo4j_labels: node.labels,
neo4j_data: node.properties
};
}
edge(edge) {
return {
id: edge.id,
label: edge.type,
source: edge.startNode,
target: edge.endNode,
color: this.colorsMap(edge.type),
neo4j_type: edge.type,
neo4j_data: edge.properties
};
}
colorsMap(label) {
let color = this._colorsMap[label];
if (!color) {
color = palette[this._currentColor++ % palette.length];
this._colorsMap[label] = color;
}
return color;
}
}
var _default = NeoGraphItemsProducers;
exports.default = _default;