Skip to content

Commit 978dcb7

Browse files
2 parents 94596b1 + 8d1b70b commit 978dcb7

4 files changed

Lines changed: 126 additions & 154 deletions

File tree

public/OrgRepoGraph.html

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
<script src="js/createOrgRepoGraph.js"></script>
1818
<script src="js/utilities.js"></script>
1919
<script src="js/profileGen.js"></script>
20+
<script src="js/createOrgTable.js"></script>
21+
22+
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.css"/>
23+
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/dt-1.10.18/datatables.min.js"></script>
24+
25+
2026

2127
<script type="text/javascript" src="js/vis/vis.js"></script>
2228
<link href="js/vis/vis-network.min.css" rel="stylesheet" type="text/css" />
@@ -57,11 +63,28 @@
5763
<div class="col-md-2 col-12">
5864
<div id="profileGen"></div>
5965
</div>
60-
<div class="col-md-8 col-12">
61-
<h2 id="graphLabel"></h2>
66+
<div class="col-md-6 col-12">
67+
<div id="graphLoading"></div>
6268
<div id="myGraph" class="w-100"></div>
6369
<pre id="eventSpan"></pre>
6470
</div>
71+
<div class="col-md-4 col-12 bg-light">
72+
<div class="w-100"></div>
73+
<center><h1>Repositories</h1></center>
74+
<table class="table table-striped" id="dataTable">
75+
<thead class="thead-dark">
76+
<tr>
77+
<td>Name</td>
78+
<td>Forks</td>
79+
<td>Language</td>
80+
</tr>
81+
</thead>
82+
<tbody id="repositoryTable">
83+
84+
</tbody>
85+
</table>
86+
87+
</div>
6588
</div>
6689

6790
<script>
@@ -71,7 +94,7 @@ <h2 id="graphLabel"></h2>
7194
options.height = "700px";
7295

7396
createOrgRepoGraph(orgname, "myGraph", "graphLoading");
74-
//orgRepoGen(orgname, "orgRepoGen");
97+
createOrgTable(orgname, 'repositoryTable');
7598
}
7699

77100
if(findGetParameter("name") !== null) {

public/js/createOrgRepoGraph.js

Lines changed: 38 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -43,78 +43,6 @@ function alreadyInGraph(userID)
4343
}
4444

4545

46-
/**
47-
* adds a person to the nodes list
48-
*
49-
* @param profileData
50-
*/
51-
function addSelfAsOrg(orgData) {
52-
nodes.push( {
53-
id:0,
54-
name:orgData.login,
55-
image:orgData.avatar_url,
56-
background: '#eeeeee',
57-
size:100,
58-
label: orgData.name,
59-
});
60-
console.log(orgData.name);
61-
}
62-
63-
function addSelfAsRepo(repoData) {
64-
nodes.push( {
65-
id:repoData.id,
66-
name:repoData.name,
67-
label: repoData.name,
68-
});
69-
70-
edges.push(
71-
{
72-
to: 0,
73-
from: repoData.id
74-
});
75-
}
76-
77-
78-
/**
79-
* Adds the followers/following of a person
80-
* to the graph
81-
*
82-
* @param username
83-
* @param apiPath
84-
* @returns {Promise<any>}
85-
*/
86-
function addRepos(orgName, apiPath, page)
87-
{
88-
console.log(orgName + " page=" + page);
89-
updateProgress();
90-
return new Promise(function(resolve, reject) {
91-
queryAPIByOrg(apiPath + "?page=" + page, orgName, function(data) {
92-
console.log(data);
93-
console.log(data.length);
94-
var prom = [];
95-
for(var i = 0; i < data.length; i++) {
96-
if(!alreadyInGraph(data[i].id)) {
97-
prom.push(addRepoToGraph(data[i]));
98-
}
99-
}
100-
Promise.all(prom).then( () => {
101-
if(data.length === 30) {
102-
addRepos(orgName, apiPath, page+ 1).then(function() {
103-
resolve();
104-
})
105-
}
106-
else {
107-
resolve();
108-
}
109-
})
110-
},
111-
function(error) {
112-
reject(error);
113-
})
114-
});
115-
}
116-
117-
11846
/**
11947
* Greedy function which checks to see if a edge is in the graphs
12048
*
@@ -204,11 +132,11 @@ function processUserConnections(user)
204132
{
205133
return new Promise(function(resolve, reject)
206134
{
207-
208135
processConnections(user, API_FOLLOWING, 1).then(function()
209136
{
210137
processConnections(user, API_FOLLOWERS, 1).then(function()
211138
{
139+
updateProgress();
212140
resolve();
213141
})
214142
})
@@ -244,53 +172,6 @@ function createConnections()
244172
}
245173

246174

247-
var total = 1;
248-
var indexed = 0;
249-
var progressID;
250-
251-
252-
function updateProgress()
253-
{
254-
indexed++;
255-
256-
var percent = parseInt((indexed/total)*100);
257-
258-
$("#" + progressID).html("<div class=\"progress\">\n" +
259-
" <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" +
260-
"</div>");
261-
262-
console.log();
263-
}
264-
265-
/**
266-
* Adds the base person to the graph.
267-
*
268-
* @param username
269-
* @returns {Promise<any>}
270-
*/
271-
function addOrgToGraph(orgname) {
272-
return new Promise(function(resolve, reject) {
273-
queryAPIByOrg("", orgname, function(data) {
274-
total = (data.public_repos) * 2;
275-
addSelfAsOrg(data);
276-
resolve();
277-
},
278-
function(error) {
279-
reject(error);
280-
});
281-
282-
});
283-
}
284-
285-
function addRepoToGraph(repo) {
286-
return new Promise(function(resolve, reject) {
287-
console.log(repo);
288-
addSelfAsRepo(repo);
289-
resolve();
290-
});
291-
}
292-
293-
294175
function bringUpProfileView(id)
295176
{
296177
for(var i = 0; i < nodes.length; i++)
@@ -343,6 +224,7 @@ function addOrgUsers(orgname, page)
343224
}
344225
else
345226
{
227+
total = 2*(data.length + (page * 30));
346228
resolve();
347229
}
348230

@@ -365,6 +247,23 @@ function bringUpProfileView(id)
365247
}
366248
}
367249

250+
251+
var total = 1;
252+
var indexed = 0;
253+
254+
function updateProgress()
255+
{
256+
indexed++;
257+
258+
var percent = parseInt((indexed/total)*100);
259+
260+
$("#graphLoading").html("<div class=\"progress\">\n" +
261+
" <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" +
262+
"</div>");
263+
264+
console.log();
265+
}
266+
368267
/**
369268
* Creates a graph
370269
* @param username
@@ -377,31 +276,26 @@ function createOrgRepoGraph(orgname, containerName, graphsTitle)
377276

378277
nodes = [];
379278
edges = [];
380-
addOrgToGraph(orgname).then(function() {
381-
addRepos(orgname, API_REPOS,1).then(function()
382-
{
383-
addOrgUsers(orgname, 1).then(function()
384-
{
385-
$("#" + progressID).html("");
386-
387-
createConnections().then( () => {
388-
var container = document.getElementById(containerName);
389-
var data = {
390-
nodes: nodes,
391-
edges: edges
392-
};
393-
var network = new vis.Network(container, data, options);
394-
395-
network.on("click", function (params) {
396-
params.event = "[original event]";
397-
if(Number(this.getNodeAt(params.pointer.DOM)) !== NaN) {
398-
bringUpProfileView(Number(this.getNodeAt(params.pointer.DOM)));
399-
}
400-
});
401-
});
279+
280+
addOrgUsers(orgname, 1).then(function()
281+
{
282+
283+
createConnections().then( () => {
284+
var container = document.getElementById(containerName);
285+
var data = {
286+
nodes: nodes,
287+
edges: edges
288+
};
289+
var network = new vis.Network(container, data, options);
290+
network.on("click", function (params) {
291+
params.event = "[original event]";
292+
if(Number(this.getNodeAt(params.pointer.DOM)) !== NaN) {
293+
bringUpProfileView(Number(this.getNodeAt(params.pointer.DOM)));
294+
}
402295
});
403-
404-
})
296+
297+
$("#graphLoading").html("");
298+
});
405299
}).catch(function(error) {
406300
alert("Invalid Organization");
407301
});

public/js/createOrgTable.js

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
function generateHtmlRow(repoData)
2+
{
3+
var html = "<tr class=\"table_row\">";
4+
html+="<td><a href='" + repoData.url + "'>" + repoData.name + "</a></td>";
5+
html+="<td>" + repoData.forks + "</td>";
6+
html+="<td>" + repoData.language + "</td>";
7+
html +="</tr>";
8+
return html;
9+
}
10+
11+
12+
var repos = [];
13+
14+
function fetchAllRepositories(orgName, page)
15+
{
16+
return new Promise(function(resolve, reject)
17+
{
18+
queryAPIByOrg(API_REPOSITORIES + "?page=" + page, orgName,
19+
function(data)
20+
{
21+
repos.push(...data);
22+
23+
if (data.length === 30)
24+
{
25+
fetchAllRepositories(orgName, page + 1).then(function ()
26+
{
27+
resolve();
28+
})
29+
}
30+
else {
31+
resolve();
32+
}
33+
},
34+
function(error)
35+
{
36+
//console.log("Unable to load table data");
37+
});
38+
});
39+
}
40+
41+
42+
function createOrgTable(orgName, tableContainer)
43+
{
44+
var html = "";
45+
46+
47+
fetchAllRepositories(orgName, 1).then(function()
48+
{
49+
for(var i=0; i < repos.length; i++)
50+
{
51+
html += generateHtmlRow(repos[i]);
52+
}
53+
54+
$("#" + tableContainer).html(html);
55+
$('#dataTable').DataTable();
56+
}).catch(function(error)
57+
{
58+
//console.log("Unable to create table");
59+
});
60+
}

public/js/friendsGraph.js

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,11 @@ function addPersonToGraph(profileData)
6666
*/
6767
function addFriends(username, apiPath, page)
6868
{
69-
console.log(username + " page=" + page);
7069
updateProgress();
7170
return new Promise(function(resolve, reject)
7271
{
7372
queryAPIByUser(apiPath + "?page=" + page, username, function(data)
7473
{
75-
console.log(data);
76-
console.log(data.length);
7774
for(var i = 0; i < data.length; i++)
7875
{
7976
if(!alreadyInGraph(data[i].id))
@@ -111,7 +108,6 @@ function addFriends(username, apiPath, page)
111108
*/
112109
function edgeInGraph(id1, id2)
113110
{
114-
console.log("edge check");
115111
for(var i = 0;i < edges.length; i++)
116112
{
117113
if(edges[i].from === id1 && edges[i].to === id2)
@@ -151,7 +147,6 @@ function addConnection(person1, person2)
151147

152148
function processConnections(user, apiPoint, page)
153149
{
154-
updateProgress();
155150
return new Promise(function(resolve, reject)
156151
{
157152
queryAPIByUser(apiPoint + "?page=" + page, user.name,
@@ -196,6 +191,7 @@ function processUserConnections(user)
196191
{
197192
processConnections(user, API_FOLLOWERS, 1).then(function()
198193
{
194+
updateProgress();
199195
resolve();
200196
})
201197
})
@@ -261,7 +257,7 @@ function addSelfToGraph(username)
261257
{
262258
queryAPIByUser("", username, function(data)
263259
{
264-
total = (data.followers + data.following) * 2;
260+
total = (data.followers + data.following);
265261
addPersonToGraph(data);
266262
resolve();
267263
},
@@ -305,7 +301,6 @@ function createFriendsGraph(username, containerName, graphsTitle)
305301
{
306302
createConnections().then(function()
307303
{
308-
console.log("cleared div");
309304
$("#" + progressID).html("");
310305

311306
var container = document.getElementById(containerName);

0 commit comments

Comments
 (0)