Spaces:
Build error
Build error
function neighbourhoodHighlight(params) { | |
// console.log("in nieghbourhoodhighlight"); | |
allNodes = nodes.get({ returnType: "Object" }); | |
// originalNodes = JSON.parse(JSON.stringify(allNodes)); | |
// if something is selected: | |
if (params.nodes.length > 0) { | |
highlightActive = true; | |
var i, j; | |
var selectedNode = params.nodes[0]; | |
var degrees = 2; | |
// mark all nodes as hard to read. | |
for (let nodeId in allNodes) { | |
// nodeColors[nodeId] = allNodes[nodeId].color; | |
allNodes[nodeId].color = "rgba(200,200,200,0.5)"; | |
if (allNodes[nodeId].hiddenLabel === undefined) { | |
allNodes[nodeId].hiddenLabel = allNodes[nodeId].label; | |
allNodes[nodeId].label = undefined; | |
} | |
} | |
var connectedNodes = network.getConnectedNodes(selectedNode); | |
var allConnectedNodes = []; | |
// get the second degree nodes | |
for (i = 1; i < degrees; i++) { | |
for (j = 0; j < connectedNodes.length; j++) { | |
allConnectedNodes = allConnectedNodes.concat( | |
network.getConnectedNodes(connectedNodes[j]) | |
); | |
} | |
} | |
// all second degree nodes get a different color and their label back | |
for (i = 0; i < allConnectedNodes.length; i++) { | |
// allNodes[allConnectedNodes[i]].color = "pink"; | |
allNodes[allConnectedNodes[i]].color = "rgba(150,150,150,0.75)"; | |
if (allNodes[allConnectedNodes[i]].hiddenLabel !== undefined) { | |
allNodes[allConnectedNodes[i]].label = | |
allNodes[allConnectedNodes[i]].hiddenLabel; | |
allNodes[allConnectedNodes[i]].hiddenLabel = undefined; | |
} | |
} | |
// all first degree nodes get their own color and their label back | |
for (i = 0; i < connectedNodes.length; i++) { | |
// allNodes[connectedNodes[i]].color = undefined; | |
allNodes[connectedNodes[i]].color = nodeColors[connectedNodes[i]]; | |
if (allNodes[connectedNodes[i]].hiddenLabel !== undefined) { | |
allNodes[connectedNodes[i]].label = | |
allNodes[connectedNodes[i]].hiddenLabel; | |
allNodes[connectedNodes[i]].hiddenLabel = undefined; | |
} | |
} | |
// the main node gets its own color and its label back. | |
// allNodes[selectedNode].color = undefined; | |
allNodes[selectedNode].color = nodeColors[selectedNode]; | |
if (allNodes[selectedNode].hiddenLabel !== undefined) { | |
allNodes[selectedNode].label = allNodes[selectedNode].hiddenLabel; | |
allNodes[selectedNode].hiddenLabel = undefined; | |
} | |
} else if (highlightActive === true) { | |
// console.log("highlightActive was true"); | |
// reset all nodes | |
for (let nodeId in allNodes) { | |
// allNodes[nodeId].color = "purple"; | |
allNodes[nodeId].color = nodeColors[nodeId]; | |
// delete allNodes[nodeId].color; | |
if (allNodes[nodeId].hiddenLabel !== undefined) { | |
allNodes[nodeId].label = allNodes[nodeId].hiddenLabel; | |
allNodes[nodeId].hiddenLabel = undefined; | |
} | |
} | |
highlightActive = false; | |
} | |
// transform the object into an array | |
var updateArray = []; | |
if (params.nodes.length > 0) { | |
for (let nodeId in allNodes) { | |
if (allNodes.hasOwnProperty(nodeId)) { | |
// console.log(allNodes[nodeId]); | |
updateArray.push(allNodes[nodeId]); | |
} | |
} | |
nodes.update(updateArray); | |
} else { | |
// console.log("Nothing was selected"); | |
for (let nodeId in allNodes) { | |
if (allNodes.hasOwnProperty(nodeId)) { | |
// console.log(allNodes[nodeId]); | |
// allNodes[nodeId].color = {}; | |
updateArray.push(allNodes[nodeId]); | |
} | |
} | |
nodes.update(updateArray); | |
} | |
} | |
function filterHighlight(params) { | |
allNodes = nodes.get({ returnType: "Object" }); | |
// if something is selected: | |
if (params.nodes.length > 0) { | |
filterActive = true; | |
let selectedNodes = params.nodes; | |
// hiding all nodes and saving the label | |
for (let nodeId in allNodes) { | |
allNodes[nodeId].hidden = true; | |
if (allNodes[nodeId].savedLabel === undefined) { | |
allNodes[nodeId].savedLabel = allNodes[nodeId].label; | |
allNodes[nodeId].label = undefined; | |
} | |
} | |
for (let i=0; i < selectedNodes.length; i++) { | |
allNodes[selectedNodes[i]].hidden = false; | |
if (allNodes[selectedNodes[i]].savedLabel !== undefined) { | |
allNodes[selectedNodes[i]].label = allNodes[selectedNodes[i]].savedLabel; | |
allNodes[selectedNodes[i]].savedLabel = undefined; | |
} | |
} | |
} else if (filterActive === true) { | |
// reset all nodes | |
for (let nodeId in allNodes) { | |
allNodes[nodeId].hidden = false; | |
if (allNodes[nodeId].savedLabel !== undefined) { | |
allNodes[nodeId].label = allNodes[nodeId].savedLabel; | |
allNodes[nodeId].savedLabel = undefined; | |
} | |
} | |
filterActive = false; | |
} | |
// transform the object into an array | |
var updateArray = []; | |
if (params.nodes.length > 0) { | |
for (let nodeId in allNodes) { | |
if (allNodes.hasOwnProperty(nodeId)) { | |
updateArray.push(allNodes[nodeId]); | |
} | |
} | |
nodes.update(updateArray); | |
} else { | |
for (let nodeId in allNodes) { | |
if (allNodes.hasOwnProperty(nodeId)) { | |
updateArray.push(allNodes[nodeId]); | |
} | |
} | |
nodes.update(updateArray); | |
} | |
} | |
function selectNode(nodes) { | |
network.selectNodes(nodes); | |
neighbourhoodHighlight({ nodes: nodes }); | |
return nodes; | |
} | |
function selectNodes(nodes) { | |
network.selectNodes(nodes); | |
filterHighlight({nodes: nodes}); | |
return nodes; | |
} | |
function highlightFilter(filter) { | |
let selectedNodes = [] | |
let selectedProp = filter['property'] | |
if (filter['item'] === 'node') { | |
let allNodes = nodes.get({ returnType: "Object" }); | |
for (let nodeId in allNodes) { | |
if (allNodes[nodeId][selectedProp] && filter['value'].includes((allNodes[nodeId][selectedProp]).toString())) { | |
selectedNodes.push(nodeId) | |
} | |
} | |
} | |
else if (filter['item'] === 'edge'){ | |
let allEdges = edges.get({returnType: 'object'}); | |
// check if the selected property exists for selected edge and select the nodes connected to the edge | |
for (let edge in allEdges) { | |
if (allEdges[edge][selectedProp] && filter['value'].includes((allEdges[edge][selectedProp]).toString())) { | |
selectedNodes.push(allEdges[edge]['from']) | |
selectedNodes.push(allEdges[edge]['to']) | |
} | |
} | |
} | |
selectNodes(selectedNodes) | |
} |