Merge issues and PR tabs

Merge the issues and PRs tabs of the repositories in a single one

  1. // ==UserScript==
  2. // @name Merge issues and PR tabs
  3. // @description Merge the issues and PRs tabs of the repositories in a single one
  4. // @author Deuchnord
  5. // @version 1.0.2
  6. // @namespace https://deuchnord.fr/userscipts#github.com/merge-prs-issues-tabs
  7. // @match https://github.com/*/*
  8. // @icon https://github.githubassets.com/favicons/favicon.svg
  9. // @license AGPL-3.0
  10. // @grant none
  11. // ==/UserScript==
  12.  
  13. (function () {
  14.  
  15. function parseMultiplier(nAsStr) {
  16. switch (true) {
  17. case nAsStr.endsWith("k"):
  18. return Number(nAsStr.slice(0, -1)) * 1000;
  19.  
  20. case nAsStr.endsWith("M"):
  21. return Number(nAsStr.slice(0, -1)) * 1000000;
  22.  
  23. case nAsStr.endsWith("G"):
  24. return Number(nAsStr.slice(0, -1)) * 1000000000;
  25. }
  26.  
  27. return Number(nAsStr);
  28. }
  29.  
  30. let sumIssPrs = null;
  31.  
  32. setInterval(function () {
  33.  
  34. let issuesTab = document.getElementById("issues-tab");
  35. let prsTab = document.getElementById("pull-requests-tab");
  36.  
  37. let nIssues = parseMultiplier(issuesTab.children[2].innerText);
  38. let nPrs = parseMultiplier(prsTab.children[2].innerText);
  39.  
  40. console.log(nIssues, nPrs);
  41.  
  42. if (sumIssPrs == nIssues) {
  43. return;
  44. }
  45.  
  46. sumIssPrs = nIssues + nPrs;
  47. let multiplier = 1;
  48.  
  49. let displayedNum = sumIssPrs;
  50.  
  51. while (displayedNum >= 1000) {
  52. displayedNum /= 1000;
  53. multiplier *= 1000;
  54. }
  55.  
  56. switch (multiplier) {
  57. case 1:
  58. multiplier = "";
  59. break;
  60. case 1000:
  61. multiplier = "k";
  62. break;
  63. case 1000000:
  64. multiplier = "M";
  65. break;
  66. case 1000000000:
  67. multiplier = "G";
  68. break;
  69. }
  70.  
  71. let href = new URL(issuesTab.href);
  72.  
  73. issuesTab.href = `${href.pathname}?q=is:open`;
  74. issuesTab.children[1].innerText = "Issues & pull requests";
  75. issuesTab.children[2].innerText = nIssues + nPrs;
  76.  
  77. prsTab.style.display = "none";
  78.  
  79. issuesTab.children[2].innerText = `${displayedNum}${multiplier}`;
  80.  
  81. }, 250);
  82.  
  83. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址