This repository has been archived on 2019-04-23. You can view files and clone it, but cannot push or open issues or pull requests.
GitHub-Widget/dist/widget.js
2016-07-26 00:50:03 +05:30

8 lines
3.4 KiB
JavaScript

$(document).ready(function(){$("body").append("<style>@import url(https://fonts.googleapis.com/css?family=Noto+Sans:400,700);a,a:hover{text-decoration:none}.container{display:flex;flex-direction:row;flex-wrap:no-wrap;align-items:center;justify-content:center;color:#333;font-family:'Noto Sans',sans-serif}.personal-details .bio,.stats .count{color:#4078C0}.github-widget{border:1px solid #DDD;max-width:350px}.item{flex:1;text-align:center;padding:10px}.repositories .language,.repositories .stars{text-align:left}.repositories .language div,.repositories .stars div{padding:5px 0}.photo{flex:2}.photo img{border-radius:100%;max-width:90px}.personal-details{flex:6}.personal-details .full-name{font-size:1.5em;line-height:1.5em}.personal-details .location{font-size:.8em}.stats .count{font-size:1.2em;font-weight:700}.repositories .names{flex:2;text-align:left}.repositories .names div{padding:5px 0;text-overflow:ellipsis}.follow{flex:2}.active-time{flex:4;font-size:.8em}.heading{font-weight:400;color:#666}hr{border:1px solid #DDD}a{color:#4078C0}.follow button{width:100%;height:2em;border:none;background:#ddd}</style>");
$(".github-widget").append('<div class="container"><div class="item photo"></div><div class="item personal-details"></div></div><div class="container stats"></div><hr><div class="container"><div class="item heading">Top repositories</div></div><div class="repositories"></div><div class="container"><div class="item follow"></div><div class="item active-time"></div></div>');var a=$(".github-widget").data("username");fetchRepos(a);fetchUserDetails(a)});
function fetchRepos(a){$.get("https://api.github.com/users/"+a+"/repos",function(a){updateRepoDetails(topRepos(a));updateLastPush(lastPushedDay(a))})}function fetchUserDetails(a){$.get("https://api.github.com/users/"+a,function(a){updateUserDetails(a)})}function updateLastPush(a){$(".active-time").append("Last active: "+a+" days ago")}
function lastPushedDay(a){for(var b=new Date,c,f=9999999999999,d=0;d<a.length;d++){var e=new Date(a[d].pushed_at);b-e<f&&(c=e,f=b-e)}return Math.floor((b-c)/864E5)}
function updateUserDetails(a){$(".personal-details").append('<div class="full-name">'+a.name+"</div>");a.bio&&$(".personal-details").append('<div class="bio">'+a.bio+"</div>");a.location&&$(".personal-details").append('<div class="location">&#9906; '+a.location+"</div>");$(".stats").append(' <div class="item"><div class="count">'+a.followers+'</div><div class="stat-name">Followers</div></div>');$(".stats").append(' <div class="item"><div class="count">'+a.following+'</div><div class="stat-name">Following</div></div>');
$(".stats").append(' <div class="item"><div class="count">'+a.public_repos+'</div><div class="stat-name">Repositories</div></div>');$(".photo").append('<img src="'+a.avatar_url+'">');$(".follow").append('<button><a target="new" href="'+a.html_url+'">Follow</a></button>')}
function updateRepoDetails(a){for(var b=0;b<a.length;b++){var c=a[b].language?a[b].language:"Unknown";$(".repositories").append('<div class="container"><div class="item names"><div><a href="'+a[b].repoUrl+'">'+a[b].name+'</a></div></div><div class="item language"><div>'+c+'</div></div><div class="item stars"><div>&#9733;'+a[b].stars+"</div></div></div>")}}
function topRepos(a){a.sort(function(a,b){return a.stargazers_count===b.stargazers_count?0:a.stargazers_count>b.stargazers_count?-1:1});a=a.slice(0,3);var b=[],c;for(c in a)b.push({name:a[c].name,stars:a[c].stargazers_count,language:a[c].language,repoUrl:a[c].html_url});return b};