-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgithub-activity-0.1.0.min.js
1 lines (1 loc) · 5.58 KB
/
github-activity-0.1.0.min.js
1
function millisecondsToStr(e){"use strict";function t(e){return e>1?"s ago":" ago"}var n=Math.floor(e/1e3);var r=Math.floor(n/31536e3);if(r)return r+" year"+t(r);var i=Math.floor((n%=31536e3)/2592e3);if(i)return i+" month"+t(i);var s=Math.floor((n%=2592e3)/86400);if(s)return s+" day"+t(s);var o=Math.floor((n%=86400)/3600);if(o)return"about "+o+" hour"+t(o);var u=Math.floor((n%=3600)/60);if(u)return u+" minute"+t(u);var a=n%60;if(a)return a+" second"+t(a);return"just now"}var GitHubActivity=function(){"use strict";var e={};var t={renderLink:function(e,t,n){if(!t){t=e}if(typeof n==="undefined")n="";return Mustache.render('<a class="'+n+'" href="{{url}}" target="_blank">{{{title}}}</a>',{url:e,title:t})},renderGitHubLink:function(e,n,r){if(!n){n=e}if(typeof r==="undefined")r="";return t.renderLink("https://github.com/"+e,n,r)},getMessageFor:function(e){e.repoLink=t.renderGitHubLink(e.username+"/"+e.repo);var n="An activity";if(e.issue){n="[#"+e.issue.number+"] "+e.issue.title;e.issueLink=t.renderLink(e.issue.html_url,n);e.issueType="issue";if(e.issue.pull_request){e.issueType="pull request"}}if(e.commit_id){e.commitId=e.commit_id.substring(0,6);e.commitLink=t.renderGitHubLink(e.username+"/"+e.repo+"/commit/"+e.commit_id,e.commitId,"gha-sha")}if(e.milestone){e.milestoneTitle=e.milestone.title}if(e.label){e.labelName=e.label.name;e.labelColor=e.label.color}if(e.rename){e.from=e.rename.from;e.to=e.rename.to}var r=Mustache.render(templates[e.event],e);var i=millisecondsToStr(new Date-new Date(e.created_at));var s;s=icons[e.event];var o={title:e.issueLink?e.issueLink:n,message:r,icon:s,timeString:i,userLink:t.renderGitHubLink(e.actor.login)};return Mustache.render(templates.Activity,o)},getHeaderHTML:function(e){return""},getOpenIssuesHTML:function(e){var t=0;for(var n=0;n<e.length;n++){if(e[n].milestone){return e[n].milestone.open_issues}if(e[n].state=="open"){t++}}return t},getAllIssuesHTML:function(e){var t=e.length;for(var n=0;n<e.length;n++){if(e[n].milestone){return e[n].milestone.open_issues+e[n].milestone.closed_issues}}return t},getClosedIssuesHTML:function(e){var t=0;for(var n=0;n<e.length;n++){if(e[n].milestone){return e[n].milestone.closed_issues}if(e[n].state=="closed"){t++}}return t},getActivityHTML:function(e,n,r){var i="";var s=e.length;if(n&&n>s){n=s}n=n?n:s;if(n===0){return Mustache.render(templates.NoActivity,{})}for(var o=0;o<n;o++){e[o].username=r.username;e[o].repo=r.repo;i+=t.getMessageFor(e[o])}return i},getOutputFromRequest:function(e,t,n){var r,i,s=new XMLHttpRequest;s.open("GET",e,false);s.onload=function(){if(s.status>=200&&s.status<400){i=JSON.parse(s.responseText);r=t(i,n)}else{return false}};s.onerror=function(){console.log("An error occurred connecting to the url.")};s.send();return r},findSelector:function(e){return e.charAt(0)==="#"?document.getElementById(e.substring(1)):document.getElementsByClassName(e.substring(1))},renderStream:function(e,t,n){t.innerHTML=Mustache.render(n,{text:e});t.style.position="relative"},renderTo:function(e,n,r){if(n instanceof HTMLCollection){for(var i=0;i<n.length;i++){t.renderStream(e,n[i],r)}}else{t.renderStream(e,n,r)}}};e.feed=function(e){if(!e.username||!e.selector||!e.repo){return false}var n=e.selector,r="https://api.github.com/repos/"+e.username+"/"+e.repo,i=r+"/issues/events",s,o;if(e.clientId&&e.clientSecret){var u="?client_id="+e.clientId+"&client_secret="+e.clientSecret;r+=u;i+=u}if(typeof e.templates=="object"){for(var a in templates){if(typeof e.templates[a]=="string"){templates[a]=e.templates[a]}}}var f=e.openSelector,l=e.closedSelector,c=e.allSelector,h=e.milestone;if(f&&l&&c&&h){f=t.findSelector(f);l=t.findSelector(l);c=t.findSelector(c);var p="https://api.github.com/repos/"+e.username+"/"+e.repo+"/issues?milestone="+h;t.getOutputFromRequest(p,function(e,n){var r=t.getOpenIssuesHTML(e),i=t.getClosedIssuesHTML(e),s=t.getAllIssuesHTML(e);t.renderTo(""+r,f,templates.Clean);t.renderTo(""+i,l,templates.Clean);t.renderTo(""+s,c,templates.Clean);return""},e)}var d;if(e.limit!="undefined"){d=parseInt(e.limit,10)}else{d=null}s=t.getOutputFromRequest(i,function(e,n){return t.getActivityHTML(e,d,n)},e);o=t.findSelector(n);t.renderTo(s,o,templates.Stream)};return e}();var templates={Clean:"{{{text}}}",Stream:'<div class="gha-feed">{{{text}}}<div class="gha-push-small"></div>{{{footer}}}</div>',Activity:'<div id="{{id}}" class="gha-activity"> <div class="gha-activity-icon"><span class="octicon octicon-{{icon}}"></span></div> <div class="gha-message"><div>{{{title}}}<span class="gha-time">, {{{timeString}}} by {{{userLink}}}</span></div><div style="padding:10px;"">{{{message}}}</div></div> <div class="gha-clear"></div> </div>',NoActivity:'<div class="gha-info">This repository does not have any public activity yet.</div>',NotFound:'<div class="gha-info">User {{username}} wasn\'t found.</div>',referenced:"A commit {{{commitLink}}} was referenced.",milestoned:"Milestone {{{milestoneTitle}}} was assigned.",labeled:"The issue was labelled as {{{labelName}}}",unlabeled:"A label was removed {{{labelName}}} the issue.",mentioned:"User was mentioned in the issue.",opened:"The issue was opened.",reopened:"The issue was reopened.",closed:"The issue was closed",subscribed:"User has subscribed",unsubscribed:"User has unsubscribed",merged:"The commit {{{commitId}}} was merged.",renamed:"The issue was renamed from {{{from}}} to {{{to}}}"},icons={referenced:"git-commit",milestoned:"milestone",labeled:"tag-add",unlabeled:"tag-remove",mentioned:"mention",opened:"issue-opened",reopened:"issue-reopened",closed:"issue-closed",subscribed:"eye-watch",unsubscribed:"eye-unwatch",merged:"git-merge",renamed:"diff-renamed"}