|
|
-
- var nodes;
-
- var edges;
-
-
- const options = {
- nodes: {
- borderWidth:4,
- size:30,
- color: {
- border: '#222222',
- background: '#666666'
- },
- font:{color:'#eeeeee'}
- },
- edges: {
- color: 'lightgray'
- }
- };
-
- function alreadyInGraph(userID)
- {
- for(var i = 0; i < nodes.length; i++)
- {
- if(nodes[i].id === userID)
- {
- return true;
- }
- }
- return false;
- }
-
-
- function addPersonToGraph(profileData)
- {
- nodes.push(
- {
- id:profileData.id,
- name:profileData.login,
- shape: 'circularImage',
- image:profileData.avatar_url
- });
- }
-
- function addFriends(username, apiPath)
- {
- return new Promise(function(resolve, reject)
- {
- queryAPIByUser(apiPath, username, function(data)
- {
- for(var i = 0; i < data.length; i++)
- {
- if(!alreadyInGraph(data[i].id))
- {
- addPersonToGraph(data[i]);
- }
- }
- resolve();
- },
- function(error)
- {
- reject(error);
- })
- });
- }
-
-
-
- function addConnection(person1, person2)
- {
- edges.push(
- {
- from: person1.id,
- to: person2.id
- });
- }
-
-
- function processUserConnections(userName)
- {
- return new Promise(function(resolve, reject)
- {
- queryAPIByUser(API_FOLLOWING, userName,
- function(data)
- {
- for(var i = 0; i < data.length; i++)
- {
-
- }
-
- queryAPIByUser(API_FOLLOWERS, userName, function(data2)
- {
- for(var i = 0; i < data2.length; i++)
- {
-
- }
- resolve();
- },
- function(error)
- {
- reject(error);
- });
- },
- function(error)
- {
- reject(error);
- })
- });
- }
-
- function createConnections()
- {
- return new Promise(function(resolve, reject)
- {
- var prom = [];
- for(var i = 0; i < nodes.length; i++)
- {
- prom.push(processUserConnections(nodes[i].name));
- }
-
- Promise.all(prom).then(function()
- {
- resolve();
- }).catch(function(error)
- {
- reject(error);
- });
- });
- }
-
-
- function addSelfToGraph(username)
- {
- return new Promise(function(resolve, reject)
- {
- queryAPIByUser("", username, function(data)
- {
- addPersonToGraph(data);
- resolve();
- },
- function(error)
- {
- reject(error);
- });
-
- });
- }
-
-
-
- function createFriendsGraph(username, containerName, graphsTitle)
- {
- nodes = [];
- edges = [];
- addSelfToGraph(username).then(function()
- {
- addFriends(username, API_FOLLOWERS).then(function()
- {
- addFriends(username, API_FOLLOWING).then(function()
- {
- createConnections().then(function()
- {
- var container = document.getElementById(containerName);
- var data =
- {
- nodes: nodes,
- edges: edges
- };
- var network = new vis.Network(container, data, options);
- });
- });
- })
- }).catch(function(error)
- {
- console.log(error);
- $("#" + graphsTitle).html("Error Fetching Data From API");
- });
- }
|