Website for visualizing a persons github network.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
3.3 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. function profileGen(username, container) {
  2. queryAPIByUser("", username, (user) => {
  3. parseOrgs(user.login).then( (orgsReturn) => {
  4. let html =
  5. "<div class=\"card\" styl\"w-100\"> \
  6. <img class=\"card-img-top\" src=\""+user.avatar_url+"\"></img> \
  7. <div class=\"card-body\"> \
  8. <h5 class=\"card-title\">"+user.name+"</h1> \
  9. <h6 class=\"card-subtitle\">"+user.login+"</h2> \
  10. </div> \
  11. <div class=\"card-body\"> \
  12. <li class=\"list-group-item\"> \
  13. <p><a href=\""+user.html_url+" class=\"card-link\">"+user.html_url+"</a></p>"+
  14. (user.blog != null ? "<p><a href="+user.blog+" class=\"card-link\">"+user.blog+"</a></p>" : "")+" \
  15. </li> \
  16. </div> \
  17. <ul class=\"list-group list-group-flush\"> \
  18. <li class=\"list-group-item\">Followers: "+user.followers+"</li> \
  19. <li class=\"list-group-item\">Following: "+user.following+"</li> \
  20. <li class=\"list-group-item\">Repositories: "+user.public_repos+"</li>" +
  21. (user.bio != null ? "<li class=\"list-group-item\">Bio: "+user.bio+"</li>" : "")+
  22. (user.location != null ? "<li class=\"list-group-item\">Location: "+user.location+"</li>" : "")+
  23. (user.email != null ? "<li class=\"list-group-item\">Email: "+user.email+"</li>" : "")+
  24. (user.company != null ? "<li class=\"list-group-item\">Company: "+user.company+"</li>" : "")+
  25. (orgsReturn != [] ? "<li class=\"list-group-item\">"+orgsReturn+"</li>" : "")+ " \
  26. </ul> \
  27. </div>"
  28. $("#"+container).html(html);
  29. })
  30. }, () => {
  31. console.error("error getting user info");
  32. });
  33. }
  34. function parseOrgs(name) {
  35. return new Promise( (resolve, reject) => {
  36. let urlpath = `api/users/${name}/orgs`;
  37. let orgs_final = [];
  38. queryUrl(urlpath, (orgs) => {
  39. var prom= [];
  40. for(var i = 0;i < orgs.length; i++) {
  41. prom.push( new Promise( (res, rej) => {
  42. url = orgs[i].url;
  43. queryUrl(url, (orgData) => {
  44. orgs_final.push("<a href=\""+orgData.html_url+"\"><img src=\""+orgData.avatar_url+"\" class=\"img-fluid\" style=\"max-width:49%\"></img></a>");
  45. res();
  46. }, (error) => {
  47. console.log(error);
  48. rej(error);
  49. console.error("error getting org info");
  50. });
  51. })
  52. )
  53. }
  54. Promise.all(prom).then(function() {
  55. resolve(orgs_final.join(" "));
  56. })
  57. }, (error) => {
  58. console.error("error getting orgs");
  59. reject(error);
  60. });
  61. })
  62. }
  63. function queryUrl(url, successCallBack, errorCallBack) {
  64. url = url.split("https://api.github.com/").join("api/");
  65. $.ajax({
  66. type:'GET',
  67. url: url,
  68. crossDomain: true,
  69. dataType: "json",
  70. success: successCallBack,
  71. error:errorCallBack,
  72. timeout: 3000
  73. });
  74. }