summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--js/preprocess.js16
-rw-r--r--js/spam.js11
2 files changed, 13 insertions, 14 deletions
diff --git a/js/preprocess.js b/js/preprocess.js
index 65d27c3..8a3e34c 100644
--- a/js/preprocess.js
+++ b/js/preprocess.js
@@ -80,19 +80,19 @@ function preprocess(data, options) {
console.log('Nodes count (after dropping loners):', data.nodes.length);
}
- // prepare data for force layout: map user IDs to indices
- var userIds_indices = {};
+ // link edges with nodes
+ var users = {};
data.nodes.forEach(function (user, i) {
- userIds_indices[user.userid] = i;
+ users[user.userid] = user;
});
- console.log('UserID to index map:', userIds_indices);
// change userID of relation edges to indices
data.edges.map(function (link) {
- link.source = userIds_indices[link.source];
- link.target = userIds_indices[link.target];
+ // replace source/target user IDs by their respective (user) nodes
+ link.source = users[link.source];
+ link.target = users[link.target];
// for faster lookup, store neighboring nodes per node
- data.nodes[link.source].relatedTo.push(link.target);
- data.nodes[link.target].relatedFrom.push(link.source);
+ link.source.relatedTo.push(link.target.userid);
+ link.target.relatedFrom.push(link.source.userid);
});
}
diff --git a/js/spam.js b/js/spam.js
index 884d4f9..92ca13d 100644
--- a/js/spam.js
+++ b/js/spam.js
@@ -206,8 +206,8 @@ function processData(data) {
// ... and also update neighboring nodes
contents.selectAll('.node')
.classed('neighbor', function (node) {
- return node.relatedTo.indexOf(d.index) >= 0 ||
- node.relatedFrom.indexOf(d.index) >= 0;
+ return node.relatedTo.indexOf(d.userid) >= 0 ||
+ node.relatedFrom.indexOf(d.userid) >= 0;
});
})
.on('mouseout', function (d) {
@@ -240,10 +240,10 @@ function processData(data) {
var nodes = {
'from': force.nodes().filter(function (edge) {
- return edge.relatedTo.indexOf(d.index) >= 0;
+ return edge.relatedTo.indexOf(d.userid) >= 0;
}),
'to': force.nodes().filter(function (edge) {
- return edge.relatedFrom.indexOf(d.index) >= 0;
+ return edge.relatedFrom.indexOf(d.userid) >= 0;
})
};
Object.keys(nodes).forEach(function (dir) {
@@ -256,8 +256,7 @@ function processData(data) {
var relations = userInfo.select('.relations-' + dir)
.selectAll('li')
.data(related, function key_func_links(d) {
- // unique keys to group by node (index)
- return d.index;
+ return d.userid;
});
relations.enter().append('li')
.text(function (d) {