Browse Source

Removed redundant code in the org page.

pull/11/head
jrtechs 5 years ago
parent
commit
f3485a638b
3 changed files with 30 additions and 245 deletions
  1. +1
    -0
      public/OrgRepoGraph.html
  2. +5
    -229
      public/js/createOrgRepoGraph.js
  3. +24
    -16
      public/js/friendsGraph.js

+ 1
- 0
public/OrgRepoGraph.html View File

@ -14,6 +14,7 @@
crossorigin="anonymous"> crossorigin="anonymous">
</script> </script>
<script src="js/githubAPI.js"></script> <script src="js/githubAPI.js"></script>
<script src="js/friendsGraph.js"></script>
<script src="js/createOrgRepoGraph.js"></script> <script src="js/createOrgRepoGraph.js"></script>
<script src="js/utilities.js"></script> <script src="js/utilities.js"></script>
<script src="js/profileGen.js"></script> <script src="js/profileGen.js"></script>

+ 5
- 229
public/js/createOrgRepoGraph.js View File

@ -1,208 +1,11 @@
var nodes;
var edges;
var options = {
nodes: {
shape: 'dot',
size: 40,
borderWidth:4,
color: {
border: '#222222',
background: '#666666'
},
font:{
color:'#eeeeee',
size: 12
},
},
edges: {
color: 'lightgray'
}
};
/**
* Checks if a user is a node in the graph
*
* @param userID
* @returns {boolean}
*/
function alreadyInGraph(userID)
{
for(var i = 0; i < nodes.length; i++)
{
if(nodes[i].id === userID)
{
return true;
}
}
return false;
}
/**
* Greedy function which checks to see if a edge is in the graphs
*
* @param id1
* @param id2
* @returns {boolean}
*/
function edgeInGraph(id1, id2)
{
for(var i = 0;i < edges.length; i++)
{
if(edges[i].from === id1 && edges[i].to === id2)
{
return true;
}
if(edges[i].to === id1 && edges[i].from === id2)
{
return true;
}
}
return false;
}
/**
* Adds a connection to the graph
*
* @param person1
* @param person2
*/
function addConnection(person1, person2)
{
if(person1.id !== person2.id)
{
if(alreadyInGraph(person2.id) && !edgeInGraph(person1.id, person2.id))
{
edges.push(
{
from: person1.id,
to: person2.id
});
}
}
}
function processConnections(user, apiPoint, page)
{
updateProgress();
return new Promise(function(resolve, reject)
{
queryAPIByUser(apiPoint + "?page=" + page, user.name,
function(data)
{
for(var i = 0; i < data.length; i++)
{
addConnection(user, data[i])
}
if(data.length === 30)
{
processConnections(user, apiPoint, page + 1).then(function()
{
resolve();
});
}
else
{
resolve();
}
}, function(error)
{
console.log(error);
resolve();
})
})
}
/**
* Processes all the connections of a user and adds them to the graph
*
* @param user has .id and .name
* @returns {Promise<any>}
*/
function processUserConnections(user)
{
return new Promise(function(resolve, reject)
{
processConnections(user, API_FOLLOWING, 1).then(function()
{
processConnections(user, API_FOLLOWERS, 1).then(function()
{
updateProgress();
resolve();
})
})
});
}
/** /**
* Creates connections between all the nodes in
* the graph.
* Add's all the members of the organization into the graphs
* node objects
* *
* @param orgname
* @param page
* @returns {Promise<any>} * @returns {Promise<any>}
*/ */
function createConnections()
{
return new Promise(function(resolve, reject)
{
var prom = [];
for(var i = 0; i < nodes.length; i++)
{
prom.push(processUserConnections(nodes[i]));
}
Promise.all(prom).then(function()
{
resolve();
}).catch(function(error)
{
console.log(error);
resolve();
});
});
}
function bringUpProfileView(id)
{
for(var i = 0; i < nodes.length; i++)
{
if(nodes[i].id === id) {
profileGen(nodes[i].name, "profileGen");
}
}
}
function addOrgUserToGraph(profileData)
{
nodes.push(
{
id:profileData.id,
name:profileData.login,
shape: 'circularImage',
image:profileData.avatar_url
});
}
function connectOrgUsers()
{
return new Promise(function(resolve, reject)
{
resolve();
})
}
function addOrgUsers(orgname, page) function addOrgUsers(orgname, page)
{ {
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
@ -211,7 +14,7 @@ function addOrgUsers(orgname, page)
{ {
for(var i = 0;i < data.length; i++) for(var i = 0;i < data.length; i++)
{ {
addOrgUserToGraph(data[i]);
addPersonToGraph(data[i]);
} }
if(data.length === 30) if(data.length === 30)
@ -235,32 +38,6 @@ function addOrgUsers(orgname, page)
}) })
} }
function bringUpProfileView(id)
{
for(var i = 0; i < nodes.length; i++)
{
if(nodes[i].id === id)
{
profileGen(nodes[i].name, "profileGen");
}
}
}
var total = 1;
var indexed = 0;
function updateProgress()
{
indexed++;
var percent = parseInt((indexed/total)*100);
$("#graphLoading").html("<div class=\"progress\">\n" +
" <div class=\"progress-bar progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width: " + percent + "%\" aria-valuenow=\"" + percent + "\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n" +
"</div>");
}
/** /**
* Creates a graph * Creates a graph
* @param username * @param username
@ -276,7 +53,6 @@ function createOrgRepoGraph(orgname, containerName, graphsTitle)
addOrgUsers(orgname, 1).then(function() addOrgUsers(orgname, 1).then(function()
{ {
createConnections().then( () => { createConnections().then( () => {
var container = document.getElementById(containerName); var container = document.getElementById(containerName);
var data = { var data = {

+ 24
- 16
public/js/friendsGraph.js View File

@ -1,9 +1,20 @@
/** Nodes in the vis js graph */
var nodes; var nodes;
/** Edges used to make the Vis JS graph*/
var edges; var edges;
/** Used for the loading bar */
var total = 1;
var indexed = 0;
var progressID;
/** Github id of the user being indexed */
var baseID;
/**
* Vis js graph options
*/
var options = { var options = {
nodes: { nodes: {
borderWidth:4, borderWidth:4,
@ -237,24 +248,17 @@ function createConnections()
} }
var total = 1;
var indexed = 0;
var progressID;
function updateProgress() function updateProgress()
{ {
indexed++; indexed++;
var percent = parseInt((indexed/total)*100);
const percent = parseInt((indexed/total)*100);
$("#" + progressID).html("<div class=\"progress\">\n" + $("#" + progressID).html("<div class=\"progress\">\n" +
" <div class=\"progress-bar progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width: " + percent + "%\" aria-valuenow=\"" + percent + "\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n" + " <div class=\"progress-bar progress-bar-striped progress-bar-animated\" role=\"progressbar\" style=\"width: " + percent + "%\" aria-valuenow=\"" + percent + "\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\n" +
"</div>"); "</div>");
console.log();
} }
var baseID;
/** /**
* Adds the base person to the graph. * Adds the base person to the graph.
* *
@ -276,11 +280,15 @@ function addSelfToGraph(username)
{ {
reject(error); reject(error);
}); });
}); });
} }
/**
* Used for the on graph click event
*
* @param github id
*/
function bringUpProfileView(id) function bringUpProfileView(id)
{ {
for(var i = 0; i < nodes.length; i++) for(var i = 0; i < nodes.length; i++)
@ -292,15 +300,16 @@ function bringUpProfileView(id)
} }
} }
/** /**
* Creates a graph * Creates a graph
* @param username * @param username
* @param containerName * @param containerName
* @param graphsTitle
* @param progressBarID
*/ */
function createFriendsGraph(username, containerName, graphsTitle)
function createFriendsGraph(username, containerName, progressBarID)
{ {
progressID = graphsTitle;
progressID = progressBarID;
nodes = []; nodes = [];
edges = []; edges = [];
@ -324,7 +333,6 @@ function createFriendsGraph(username, containerName, graphsTitle)
network.on("click", function (params) network.on("click", function (params)
{ {
params.event = "[original event]";
if(Number(this.getNodeAt(params.pointer.DOM)) !== NaN) if(Number(this.getNodeAt(params.pointer.DOM)) !== NaN)
{ {
bringUpProfileView(Number(this.getNodeAt(params.pointer.DOM))); bringUpProfileView(Number(this.getNodeAt(params.pointer.DOM)));

Loading…
Cancel
Save