GitHub Show Repo Issues

Show repo issues count on the repository tab & organization page (https://github.com/:user)

当前为 2015-12-25 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name GitHub Show Repo Issues
  3. // @namespace github-show-repo-issues
  4. // @description Show repo issues count on the repository tab & organization page (https://github.com/:user)
  5. // @version 2.0.1
  6. // @include https://github.com/*
  7. // @grant GM_addStyle
  8. // @grant GM_xmlhttpRequest
  9. // @run-at document-end
  10. // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
  11. // @author Rob Garrison >> http://github.com/Mottie
  12. // ==/UserScript==
  13. ( function( $ ) {
  14. 'use strict';
  15. // look for repo tab
  16. if ( $( '.tabnav-tab.selected' ).length || $( '.repo-list' ).length ) {
  17. // Does not include forks & only includes the first 10 repos, or first 20 on the
  18. // organization page - these are the repos showing the participation graphs
  19. var max = $( '.tabnav-tab.selected' ).length ? 10 : 20,
  20. $items = $('.repo-list-item')
  21. .filter(':lt(' + max + ')')
  22. .filter('.public:not(.fork)')
  23. .find('a.repo-list-stat-item[aria-label="Forks"]'),
  24.  
  25. // bug icon
  26. img = 'data:image/svg+xml;charset=utf8,<svg xmlns=\'http://www.w3.org/2000/svg\' width=\'12\' height=\'12\' viewBox=\'0 0 53.1 53.1\'><g transform=\'translate(0,-999)\'><path d=\'m39.2 999.3c2 0 3.7 1.5 3.7 3.4 0 1.9-1.7 3.4-3.7 3.4l-0.9-0.1-3.4 4c2.3 1.6 4.4 3.8 6 6.4-4 1.2-8.9 1.9-14.2 1.9-5.3 0-10.1-0.7-14.2-1.9 1.5-2.6 3.5-4.7 5.7-6.3l-3.5-4.1c-0.2 0-0.4 0.1-0.6 0.1-2 0-3.7-1.5-3.7-3.4 0-1.9 1.7-3.4 3.7-3.4 2 0 3.7 1.5 3.7 3.4 0 0.7-0.2 1.3-0.6 1.8l3.5 4.2c1.8-0.8 3.8-1.3 5.9-1.3 2 0 3.9 0.4 5.6 1.2l3.7-4.3c-0.3-0.5-0.4-1-0.4-1.6 0-1.9 1.6-3.4 3.7-3.4zm11.8 28.5c1.2 0 2.2 0.9 2.2 2 0 1.1-1 2-2.2 2l-6.7 0c-0.1 1.5-0.3 2.9-0.6 4.3l7.8 3.4c1.1 0.5 1.6 1.7 1.1 2.7-0.5 1-1.8 1.5-2.9 1l-7.2-3.1c-2.7 6.7-8 11.4-14.3 12.1l0-31.2c5.2-0.1 10-1 13.9-2.3l0.3 0.7 7.5-2.7c1.1-0.4 2.4 0.1 2.9 1.2 0.4 1.1-0.1 2.2-1.3 2.6l-7.9 2.8c0.3 1.4 0.6 2.9 0.7 4.5l6.7 0 0 0zm-48.7 0 6.7 0c0.1-1.5 0.3-3.1 0.7-4.5l-7.9-2.8c-1.1-0.4-1.7-1.6-1.3-2.6 0.4-1 1.7-1.6 2.9-1.2l7.5 2.7 0.3-0.7c3.9 1.3 8.7 2.1 13.9 2.3l0 31.2c-6.2-0.7-11.5-5.4-14.3-12.1l-7.2 3.1c-1.1 0.5-2.4 0-2.9-1-0.5-1 0-2.2 1.1-2.7l7.8-3.4c-0.3-1.4-0.5-2.8-0.6-4.3l-6.7 0c-1.2 0-2.2-0.9-2.2-2 0-1.1 1-2 2.2-2z\' fill=\'#888\'/></g></svg>',
  27.  
  28. // api v3: https://api.github.com/repos/:user/:repo/issues?state=open
  29. api = 'https://api.github.com/repos',
  30. // the API only reports the
  31. apiMax = 30;
  32.  
  33. // add bug image background
  34. GM_addStyle( '.repo-list-stats a.issues { padding-left: 18px; background: url("'+ img + '") no-repeat 0 2px !important; }' );
  35.  
  36. $items.each( function( index ) {
  37. var $this = $( this ),
  38. // <a class="repo-list-stat-item tooltipped tooltipped-s" href="/:user/:repo/network" aria-label="Forks">
  39. // <span class="octicon octicon-git-branch"></span> 1
  40. // </a>
  41. repo = $this.attr( 'href' ).replace( /network/g,'' );
  42.  
  43. GM_xmlhttpRequest({
  44. method : 'GET',
  45. url : api + repo + 'issues?state=open',
  46. onload : function( response ) {
  47. var issues,
  48. data = $.parseJSON( response.responseText || 'null' );
  49. if ( data ) {
  50. issues = data.length;
  51. if ( issues >= apiMax ) {
  52. issues += '+';
  53. }
  54. $this.after(
  55. '<a class="repo-list-stat-item tooltipped tooltipped-s issues" href="' + repo +
  56. 'issues" aria-label="Issues"><span></span>' + issues + '</a>'
  57. );
  58. }
  59. }
  60. });
  61.  
  62. });
  63. }
  64.  
  65. })( jQuery.noConflict( true ) );