This repository has been archived on 2026-03-31. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
gitstatus/js/gitstatus.min.js
Ryan McGrath 8e3fc15c1d Final
2011-06-23 03:06:03 +09:00

1 line
No EOL
5.3 KiB
JavaScript

(function(b){if(b!=="undefined"){return}var a=window.GitStatus=function a(c){this.opts=c;if(typeof this.opts.no_of_commits==="undefined"){this.opts.no_of_commits=5}};a.util={DEBUG:false,bind:function(c,d){return function(){return d.apply(c,arguments)}},loadScript:function(e,d){var c=document.createElement("script");c.type="text/javascript";c.setAttribute("src",e);c.setAttribute("async","true");if(c.readyState){c.onreadystatechange=function(){if(/loaded|complete/.test(c.readyState)){c.onreadystatechange=null;if(typeof d!=="undefined"){d()}!a.util.DEBUG&&c&&document.documentElement.firstChild.removeChild(c)}}}else{c.addEventListener("load",function(){if(typeof d!=="undefined"){d()}!a.util.DEBUG&&c&&document.documentElement.firstChild.removeChild(c)},false)}document.documentElement.firstChild.appendChild(c)},jsonp:function(i,c,f,e){var j=typeof f!=="undefined"?a.util.bind(f,c):c,h=typeof e!=="undefined"?e:"GitStatusJSONPCallback_"+parseInt(Math.random()*100000),g=i+(i.indexOf("?")>-1?"&callback=":"?callback=")+h,d=null;d=a.util.bind(this,function(k){j(k);try{delete window[h]}catch(l){window[h]=null}});window[h]=d;a.util.loadScript(g)},createGravatarURL:function(c){return"http://www.gravatar.com/avatar/"+c+"?s=50&d=mm"},render:function(d,c){for(x in c){d=d.replace(new RegExp("{{"+x+"}}","g"),c[x].replace("<","&lt;").replace(">","&gt;"))}return d}};a.prototype={opts:null,node:null,api_base_url:"https://github.com",base_structure:['<div class="gitstatus_header">','Recent Commits on <a href="{{repo_url}}" title="{{repo_name}}" target="_blank">{{repo_name}}</a>',"</div>",'<div class="gitstatus_commit_history">',"{{history}}","</div>",'<div class="gitstatus_footer">','<a href="#" title="Get Your Own" target="_blank">Get Your Own!</a>',"</div>"].join(""),commit_structure:['<div class="gitstatus_commit_row {{even_or_odd}}">','<img src="{{gravatar}}" alt="" class="gitstatus_gravatar" width="50" height="50">','<div class="gitstatus_commit_row_log">','<div class="gitstatus_commit_row_sha"><a href="{{sha_link}}" title="View this commit" target="_blank">{{sha}}</a></div>','<div class="gitstatus_commit_row_data">',"<p>{{commit_msg}}</p>","</div>",'<div class="gitstatus_commit_row_meta">','By <a href="http://github.com/{{login}}" title="Committed by {{login}}" target="_blank">{{login}}</a> on {{date}}',"</div>","</div>","</div>"].join(""),default_style:[".gitstatus_container { -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; }",".gitstatus_container a, .gitstatus_container a:visited { color: #307ace; text-decoration: none; border-bottom: 1px solid dotted #307ace; }",".gitstatus_header { text-align: right; padding: 5px; color: #f9f9f9; background-color: #010101; background-image: -webkit-gradient(linear, left top, left bottom, from(#333), to(#010101)); -moz-border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0; border-radius: 2px 2px 0 0; }",".gitstatus_commit_history { font-size: 11px; border-left: 1px solid #c9c9c9; border-right: 1px solid #c9c9c9; }",".gitstatus_commit_row { padding: 5px 5px 5px 63px; position: relative; background-color: #f5f5f5; border-bottom: 1px solid #c9c9c9; -webkit-box-shadow: inset 2px 2px 2px #e9e9e9; -moz-box-shadow: inset 2px 2px 2px #e9e9e9; box-shadow: inset 2px 2px 2px #e9e9e9;}",".gitstatus_row_even { background-color: #f9f9f9 !important; }",".gitstatus_commit_row_meta { color: #b2b2b2; }",".gitstatus_commit_row_meta a, .gitstatus_commit_row_meta a:visited { color: #a2a2a2 !important; border-color: #a2a2a2 !important; }",".gitstatus_gravatar { -webkit-border-radius: 2px; -moz-border-radius: 2px; border-radius: 2px; position: absolute; top: 7px; left: 5px; }",".gitstatus_footer { font-size: 10px !important; padding: 3px 5px 5px; text-align: right; color: #f9f9f9; background-color: #010101; background-image: -webkit-gradient(linear, left top, left bottom, from(#333), to(#010101)); -moz-border-radius: 0 0 2px 2px; -webkit-border-radius: 0 0 2px 2px; border-radius: 0 0 2px 2px; }"].join(""),show:function(){this.api_base_url+="/"+this.opts.github_username+"/"+this.opts.github_repository+"/";a.util.jsonp(this.api_base_url+"network_meta",this._getRepoNetworkData,this);return this},_getRepoNetworkData:function(e){var d=e.nethash,c=e.focus,f=this.api_base_url+"network_data_chunk?nethash="+d+"&start="+(c-this.opts.no_of_commits)+"&end="+c;a.util.jsonp(f,this._build,this)},_build:function(d){if(this.node===null){this.node=document.getElementById(this.opts.id)}var j=document.createDocumentFragment(),c=document.createElement("div"),g="",h=d.commits,e=h.length;c.className="gitstatus_container";j.appendChild(c);while(e--){g+=a.util.render(this.commit_structure,{even_or_odd:(e%2===0?"gitstatus_row_even":"gitstatus_row_odd"),gravatar:a.util.createGravatarURL(h[e].gravatar),sha_link:"https://github.com/"+this.opts.github_username+"/"+this.opts.github_repository+"/commit/"+h[e].id,sha:"Commit #"+h[e].id.substr(0,7),commit_msg:h[e].message,login:h[e].login,date:h[e].date})}c.innerHTML=a.util.render(this.base_structure,{repo_name:this.opts.github_repository,repo_url:this.api_base_url,history:g});if(typeof this.opts.disable_default_styles==="undefined"){var f=document.createElement("style");f.type="text/css";if(f.styleSheet){f.styleSheet.cssText=this.default_style}else{f.appendChild(document.createTextNode(this.default_style))}document.documentElement.firstChild.appendChild(f)}this.node.appendChild(j)}}})(typeof window.GitStatus);