visjs-network
Version:
A dynamic, browser-based network visualization library.
88 lines (82 loc) • 2.44 kB
JavaScript
/**
*
* @param {json} gephiJSON
* @param {obj} optionsObj
* @returns {{nodes: Array, edges: Array}}
*/
function parseGephi(gephiJSON, optionsObj) {
var edges = []
var nodes = []
var options = {
edges: {
inheritColor: false
},
nodes: {
fixed: false,
parseColor: false
}
}
if (optionsObj !== undefined) {
if (optionsObj.fixed !== undefined) {
options.nodes.fixed = optionsObj.fixed
}
if (optionsObj.parseColor !== undefined) {
options.nodes.parseColor = optionsObj.parseColor
}
if (optionsObj.inheritColor !== undefined) {
options.edges.inheritColor = optionsObj.inheritColor
}
}
var gEdges = gephiJSON.edges
var gNodes = gephiJSON.nodes
for (var i = 0; i < gEdges.length; i++) {
var edge = {}
var gEdge = gEdges[i]
edge['id'] = gEdge.id
edge['from'] = gEdge.source
edge['to'] = gEdge.target
edge['attributes'] = gEdge.attributes
edge['label'] = gEdge.label
edge['title'] =
gEdge.attributes !== undefined ? gEdge.attributes.title : undefined
if (gEdge['type'] === 'Directed') {
edge['arrows'] = 'to'
}
// edge['value'] = gEdge.attributes !== undefined ? gEdge.attributes.Weight : undefined;
// edge['width'] = edge['value'] !== undefined ? undefined : edgegEdge.size;
if (gEdge.color && options.inheritColor === false) {
edge['color'] = gEdge.color
}
edges.push(edge)
}
for (var j = 0; j < gNodes.length; j++) {
var node = {}
var gNode = gNodes[j]
node['id'] = gNode.id
node['attributes'] = gNode.attributes
node['x'] = gNode.x
node['y'] = gNode.y
node['label'] = gNode.label
node['title'] =
gNode.attributes !== undefined ? gNode.attributes.title : gNode.title
if (options.nodes.parseColor === true) {
node['color'] = gNode.color
} else {
node['color'] =
gNode.color !== undefined
? {
background: gNode.color,
border: gNode.color,
highlight: { background: gNode.color, border: gNode.color },
hover: { background: gNode.color, border: gNode.color }
}
: undefined
}
node['size'] = gNode.size
node['fixed'] =
options.nodes.fixed && gNode.x !== undefined && gNode.y !== undefined
nodes.push(node)
}
return { nodes: nodes, edges: edges }
}
exports.parseGephi = parseGephi