BlueCat Address Manager Expand Tree Button

Expand Tree Button for TreeView in BlueCat Address Manager

目前为 2018-08-06 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name BlueCat Address Manager Expand Tree Button
  3. // @namespace *
  4. // @description Expand Tree Button for TreeView in BlueCat Address Manager
  5. // @include */app*
  6. // @license MIT
  7. // @version 9
  8. // @grant none
  9. // @author Marius Galm
  10. // @copyright 2018, Marius Galm
  11. // @license MIT
  12. // @icon https://www.bluecatnetworks.com/wp-content/uploads/2018/03/cropped-bluecat-favicon-32x32.png
  13. // ==/UserScript==
  14.  
  15. // do when there are container with class "TreeExpandClosed"
  16. // trigger click event on "TreeExpand" class object
  17. function expandLevel() {
  18. if (document.getElementsByClassName("TreeExpandClosed").length > 0) {
  19. var parent_els = document.getElementsByClassName("TreeExpandClosed");
  20. for (i = 0; i < parent_els.length; i++) {
  21. var els = parent_els[i].getElementsByClassName("TreeExpand");
  22. for (j = 0; j < els.length; j++) {
  23. els[j].click();
  24. }
  25. }
  26. // scroll back to top because the BlueCat interface gets jumpy while expanding
  27. scroll(0,0);
  28. document.getElementById('collapseButton').innerHTML = stripTag(document.getElementById('collapseButton').innerHTML);
  29. } else {
  30. var old = document.getElementById('expandButton').innerHTML;
  31. document.getElementById('expandButton').innerHTML = "<s>"+old+"</s>";
  32. }
  33. }
  34.  
  35. // do when there are container with class "TreeExpandOpen"
  36. // trigger click event on "TreeExpand" class object
  37. function collapseLevel() {
  38. if ((document.getElementsByClassName("TreeExpandOpen").length > 0)||(document.getElementsByClassName("TreeStateChildrenYes-ExpandOpen").length > 0)) {
  39. var parent_els = document.getElementsByClassName("TreeExpandOpen");
  40. for (i = 0; i < parent_els.length; i++) {
  41. var els = parent_els[i].getElementsByClassName("TreeExpand");
  42. for (j = 0; j < els.length; j++) {
  43. els[j].click();
  44. }
  45. }
  46. // scroll back to top because the BlueCat interface gets jumpy while expanding
  47. scroll(0,0);
  48. document.getElementById('expandButton').innerHTML = stripTag(document.getElementById('expandButton').innerHTML);
  49. } else {
  50. var old = document.getElementById('collapseButton').innerHTML;
  51. document.getElementById('collapseButton').innerHTML = "<s>"+old+"</s>";
  52. }
  53. }
  54.  
  55. // remove the disable style
  56. function stripTag(html)
  57. {
  58. html = html.replace(/<s>/g, "");
  59. html = html.replace(/<\/s>/g, "");
  60. return html;
  61. }
  62.  
  63. if (document.readyState === "interactive" ) {
  64. var page = document.childNodes[2].nodeValue;
  65. if (/ Page: ConfigurationPage /.test(page)) {
  66. var subtab = document.getElementsByClassName("TabPanelLabelActive")[0];
  67. if (subtab.innerHTML.trim() == "IPv4" ) {
  68. // Add button to first table
  69. var topBars = document.getElementsByClassName('value-tree-topToolBar');
  70. if (( topBars !== undefined ) || (topBars.length <= 0)) {
  71. var topBar = topBars[0];
  72. if ( topBar !== undefined ) {
  73. var comboBars = topBar.getElementsByClassName('combo-button-bar');
  74. if ((comboBars !== undefined) || (comboBars.length <= 0)) {
  75. var comboBar = comboBars[0];
  76. var tBody = comboBar.getElementsByTagName('tbody')[0];
  77. var tR = tBody.getElementsByTagName('tr')[0];
  78. var w = tR.insertCell(-1);
  79. w.innerHTML='<div class="separator"></div>';
  80. var x = tR.insertCell(-1);
  81. x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
  82. var lable = document.getElementById('expandButton');
  83. lable.addEventListener("click",() => { expandLevel(); },false);
  84. var y = tR.insertCell(-1);
  85. y.innerHTML='<div class="separator"></div>';
  86. var z = tR.insertCell(-1);
  87. z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
  88. var lable2 = document.getElementById('collapseButton');
  89. lable2.addEventListener("click",() => { collapseLevel(); },false);
  90. }
  91. }
  92. }
  93. } else if (subtab.innerHTML.trim() == "Views" ) {
  94. // Add button to first table
  95. var topBars = document.getElementsByClassName('value-tree-topToolBar');
  96. if (( topBars !== undefined ) || (topBars.length <= 0)) {
  97. var topBar = topBars[0];
  98. if ( topBar !== undefined ) {
  99. var comboBars = topBar.getElementsByClassName('combo-button-bar');
  100. if ((comboBars !== undefined) || (comboBars.length <= 0)) {
  101. var comboBar = comboBars[0];
  102. var tBody = comboBar.getElementsByTagName('tbody')[0];
  103. var tR = tBody.getElementsByTagName('tr')[0];
  104. var w = tR.insertCell(-1);
  105. w.innerHTML='<div class="separator"></div>';
  106. var x = tR.insertCell(-1);
  107. x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
  108. var lable = document.getElementById('expandButton');
  109. lable.addEventListener("click",() => { expandLevel(); },false);
  110. var y = tR.insertCell(-1);
  111. y.innerHTML='<div class="separator"></div>';
  112. var z = tR.insertCell(-1);
  113. z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
  114. var lable2 = document.getElementById('collapseButton');
  115. lable2.addEventListener("click",() => { collapseLevel(); },false);
  116. }
  117. }
  118. }
  119. } else if (subtab.innerHTML.trim() == "IPv6" ) {
  120. // Unsupported for now :D
  121. }
  122. } else if (/ Page: GroupList /.test(page)) {
  123. // Add button to first table
  124. var topBars = document.getElementsByClassName('value-tree-topToolBar');
  125. if ((topBars !== undefined) || (topBars.length <= 0)) {
  126. var topBar = topBars[0];
  127. if ( topBar !== undefined ) {
  128. var comboBars = topBar.getElementsByClassName('combo-button-bar');
  129. if ((comboBars !== undefined) || (comboBars.length <= 0)) {
  130. var comboBar = comboBars[0];
  131. var tBody = comboBar.getElementsByTagName('tbody')[0];
  132. var tR = tBody.getElementsByTagName('tr')[0];
  133. var w = tR.insertCell(-1);
  134. w.innerHTML='<div class="separator"></div>';
  135. var x = tR.insertCell(-1);
  136. x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
  137. var lable = document.getElementById('expandButton');
  138. lable.addEventListener("click",() => { expandLevel(); },false);
  139. var y = tR.insertCell(-1);
  140. y.innerHTML='<div class="separator"></div>';
  141. var z = tR.insertCell(-1);
  142. z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
  143. var lable2 = document.getElementById('collapseButton');
  144. lable2.addEventListener("click",() => { collapseLevel(); },false);
  145. }
  146. }
  147. }
  148. } else if (/ Page: TagGroup /.test(page)) {
  149. // Add button to first table
  150. var topBars = document.getElementsByClassName('value-tree-topToolBar');
  151. if (( topBars !== undefined ) || (topBars.length <= 0)) {
  152. var topBar = topBars[0];
  153. if ( topBar !== undefined ) {
  154. var comboBars = topBar.getElementsByClassName('combo-button-bar');
  155. if ((comboBars !== undefined) || (comboBars.length <= 0)) {
  156. var comboBar = comboBars[0];
  157. var tBody = comboBar.getElementsByTagName('tbody')[0];
  158. var tR = tBody.getElementsByTagName('tr')[0];
  159. var w = tR.insertCell(-1);
  160. w.innerHTML='<div class="separator"></div>';
  161. var x = tR.insertCell(-1);
  162. x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
  163. var lable = document.getElementById('expandButton');
  164. lable.addEventListener("click",() => { expandLevel(); },false);
  165. var y = tR.insertCell(-1);
  166. y.innerHTML='<div class="separator"></div>';
  167. var z = tR.insertCell(-1);
  168. z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
  169. var lable2 = document.getElementById('collapseButton');
  170. lable2.addEventListener("click",() => { collapseLevel(); },false);
  171. }
  172. }
  173. }
  174. }
  175. }