Greasy Fork is available in English.

Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles

Reveal the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts

  1. // ==UserScript==
  2. // @name Bugzilla - reveal the Depends, Blocks, See Also and Duplicates bug titles
  3. // @namespace darkred
  4. // @version 2017.16.11
  5. // @description Reveal the Depends, Blocks, See Also and Duplicates bug titles in bugzilla.mozilla.org via keyboard shortcuts
  6. // @license MIT
  7. // @include https://bugzilla.mozilla.org/show_bug.cgi?id=*
  8. // @grant none
  9. // @require https://code.jquery.com/jquery-3.2.1.min.js
  10. // @require https://cdnjs.cloudflare.com/ajax/libs/jquery-scrollTo/2.1.2/jquery.scrollTo.min.js
  11. // @require https://cdnjs.cloudflare.com/ajax/libs/keypress/2.1.3/keypress.min.js
  12. // @supportURL https://github.com/darkred/Userscripts/issues
  13. // ==/UserScript==
  14.  
  15. /* eslint-disable no-unused-vars */
  16.  
  17. // Case 1: when you press ` (in order to toggle Depends, BLocks and See Also)
  18.  
  19. var flag1 = 1;
  20. var listener1 = new window.keypress.Listener();
  21. var listener2 = new window.keypress.Listener();
  22. var depends, blocks, combinedRefs, seeAlsoRefs, duplicatesRefs;
  23.  
  24. var combinedInners = [], seeAlsoInners = [], duplicatesInners = [];
  25.  
  26. listener1.simple_combo('`', function() {
  27. // console.log('You pressed `');
  28.  
  29. depends = $('#field-value-dependson > a');
  30. blocks = $('#field-value-blocked > a');
  31. seeAlsoRefs = $('#field-value-see_also a');
  32. combinedRefs = depends.add(blocks).add(seeAlsoRefs);
  33.  
  34.  
  35. if (flag1 === 1) {
  36. flag1 = 0;
  37.  
  38. $(window).scrollTo('#field-dependson');
  39.  
  40. $.each(combinedRefs, function(index, val) { combinedInners[index] = combinedRefs[index].innerHTML;});
  41.  
  42. $.each(combinedRefs, function(index, val) {
  43. combinedRefs[index].nextSibling.remove();
  44. combinedRefs[index].innerHTML = '(' + combinedRefs[index].innerHTML + ') ' + combinedRefs[index].title;
  45. combinedRefs[index].outerHTML += '<br/>';
  46. });
  47.  
  48.  
  49. } else {
  50. if (flag1 === 0) {
  51. flag1 = 1;
  52.  
  53. $.each(combinedRefs, function(index, val) {
  54. combinedRefs[index].innerHTML = combinedInners[index];
  55. combinedRefs[index].outerHTML += ', ';
  56. });
  57.  
  58. var dependsNL = $('#field-value-dependson > a ~ br');
  59. var blocksNL = $('#field-value-blocked > a ~ br');
  60.  
  61. var combinedNL = dependsNL.add(blocksNL);
  62. for (let m = (combinedNL.length) - 1; m >= 0; m -= 1) {
  63. combinedNL[m].remove();
  64. }
  65.  
  66. }
  67. document.body.scrollTop = document.documentElement.scrollTop = 0; // scroll to the top of the page
  68. // window.scrollTo(0, 0);
  69. // document.querySelector('html').scrollIntoView();
  70.  
  71. // $(window).scrollTo('#field-see_also');
  72. $(window).scrollTo('#field-dependson'); // alternative to line 78
  73. }
  74. });
  75.  
  76.  
  77. // =========================================================================
  78.  
  79.  
  80. // Case 2: when you press ~ (in order to toggle Duplicates)
  81.  
  82. var flag2 = 1;
  83.  
  84. listener2.simple_combo('~', function() {
  85. // console.log('You pressed ~');
  86.  
  87. duplicatesRefs = $(`a:contains('Duplicates')`).parent().parent().find('.value > a');
  88.  
  89. if (flag2 === 1) {
  90. flag2 = 0;
  91.  
  92. // $(window).scrollTo('#duplicates');
  93. $(window).scrollTo(`a:contains('Duplicates')`).parent().parent();
  94.  
  95. $.each(duplicatesRefs, function(index, val) { duplicatesInners[index] = duplicatesRefs[index].innerHTML;});
  96.  
  97. $.each(duplicatesRefs, function(index, val) {
  98. duplicatesRefs[index].nextSibling.remove();
  99. duplicatesRefs[index].innerHTML = '(' + duplicatesRefs[index].innerHTML + ') ' + duplicatesRefs[index].title;
  100. duplicatesRefs[index].outerHTML += '<br/>';
  101. });
  102.  
  103. } else {
  104. if (flag2 === 0) {
  105. flag2 = 1;
  106.  
  107. $.each(duplicatesRefs, function(index, val) {
  108. duplicatesRefs[index].innerHTML = duplicatesInners[index];
  109. duplicatesRefs[index].outerHTML += ', ';
  110. });
  111.  
  112.  
  113. var duplicatesNL = $(`a:contains('Duplicates')`).parent().parent().find('.value > a ~ br');
  114. for (let k = (duplicatesNL.length) - 1; k >= 0; k -= 1) {
  115. duplicatesNL[k].remove();
  116. }
  117.  
  118. }
  119.  
  120. // document.body.scrollTop = document.documentElement.scrollTop = 0; // scroll to the top of the page
  121. window.scrollTo(0, 0);
  122. // document.querySelector('html').scrollIntoView();
  123. // $(window).scrollTo('#duplicates');
  124. $(window).scrollTo(`a:contains('Duplicates')`).parent().parent();
  125. }
  126. });