BlueCat Address Manager Expand Tree Button

Expand Tree Button for TreeView in BlueCat Address Manager

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