GitHub: Issue sort:updated-desc Button

Add top level button to sort both issues/pull requests by the most recently updated.

  1. // ==UserScript==
  2. // @name GitHub: Issue sort:updated-desc Button
  3. // @description Add top level button to sort both issues/pull requests by the most recently updated.
  4. // @author Chris H (Zren / Shade)
  5. // @icon https://github.com/favicon.ico
  6. // @namespace http://xshade.ca
  7. // @version 3
  8. // @include https://github.com*
  9. // ==/UserScript==
  10.  
  11. (function(uw){
  12. var createElement = function(html) {
  13. var e = document.createElement('div');
  14. e.innerHTML = html;
  15. return e.firstChild;
  16. };
  17.  
  18. var blameUrlPattern = /^https:\/\/github.com\/[^\/]+\/[^\/]+\/(issues|pulls)/;
  19.  
  20. var main = function() {
  21. var m = blameUrlPattern.exec(document.location.href);
  22. if (!m)
  23. return;
  24. if (document.getElementById('sort-issues-recently-updated'))
  25. return;
  26.  
  27. Array.prototype.forEach.call(document.querySelectorAll('.table-list-header-toggle.right'), function(e) {
  28. var url = m[0] + '?q=sort%3Aupdated-desc';
  29. var html = '<div class="left"><a id="sort-issues-recently-updated" class="btn-link icon-only js-menu-target" role="button" aria-haspopup="true" style="padding-right: 15px; padding-left: 15px;" href="' + url + '">sort:recently-updated</a></div>';
  30. var a = createElement(html);
  31. e.insertBefore(a, e.firstChild);
  32. });
  33. };
  34.  
  35. main();
  36. //var $ = uw.$;
  37. //$(document).on('pjax:end', main);
  38. setInterval(main, 1000);
  39.  
  40. })(typeof unsafeWindow === 'undefined' ? window : unsafeWindow);