BlueCat Address Manager Expand Tree Button

Expand Tree Button for TreeView in BlueCat Address Manager

目前為 2018-08-06 提交的版本,檢視 最新版本

// ==UserScript==
// @name        BlueCat Address Manager Expand Tree Button
// @namespace   *
// @description Expand Tree Button for TreeView in BlueCat Address Manager
// @include     */app*
// @license		MIT
// @version     8
// @grant       none
// @author      Marius Galm
// @copyright   2018, Marius Galm
// @license		MIT
// @icon        https://www.bluecatnetworks.com/wp-content/uploads/2018/03/cropped-bluecat-favicon-32x32.png
// ==/UserScript==

// do when there are container with class "TreeExpandClosed"
// trigger click event on "TreeExpand" class object
function expandLevel() {
    if (document.getElementsByClassName("TreeExpandClosed").length > 0) {
        var parent_els = document.getElementsByClassName("TreeExpandClosed");
        for (i = 0; i < parent_els.length; i++) {
            var els = parent_els[i].getElementsByClassName("TreeExpand");
            for (j = 0; j < els.length; j++) {
                els[j].click();
            }
        }
        // scroll back to top because the BlueCat interface gets jumpy while expanding
        scroll(0,0);
        document.getElementById('collapseButton').innerHTML = stripTag(document.getElementById('collapseButton').innerHTML);
    } else {
        var old = document.getElementById('expandButton').innerHTML;
        document.getElementById('expandButton').innerHTML = "<s>"+old+"</s>";
    }
}

// do when there are container with class "TreeExpandOpen"
// trigger click event on "TreeExpand" class object
function collapseLevel() {
    if ((document.getElementsByClassName("TreeExpandOpen").length > 0)||(document.getElementsByClassName("TreeStateChildrenYes-ExpandOpen").length > 0)) {
        var parent_els = document.getElementsByClassName("TreeExpandOpen");
        for (i = 0; i < parent_els.length; i++) {
            var els = parent_els[i].getElementsByClassName("TreeExpand");
            for (j = 0; j < els.length; j++) {
                els[j].click();
            }
        }
        // scroll back to top because the BlueCat interface gets jumpy while expanding
        scroll(0,0);
        document.getElementById('expandButton').innerHTML = stripTag(document.getElementById('expandButton').innerHTML);
    } else {
        var old = document.getElementById('collapseButton').innerHTML;
        document.getElementById('collapseButton').innerHTML = "<s>"+old+"</s>";
    }
}

// remove the disable style
function stripTag(html)
{
    html = html.replace(/<s>/g, "");
    html = html.replace(/<\/s>/g, "");
    return html;
}

if (document.readyState === "interactive" ) {
    var page = document.childNodes[2].nodeValue;
    if (/ Page: ConfigurationPage /.test(page)) {
			var subtab = document.getElementsByClassName("TabPanelLabelActive")[0];
			if (subtab.innerHTML.trim() == "IPv4" ) {
				// Add button to first table
				var topBars = document.getElementsByClassName('value-tree-topToolBar');
				if (( topBars !== undefined ) || (topBars.length <= 0)) {
					var topBar = topBars[0];
					var comboBars = topBar.getElementsByClassName('combo-button-bar');
					if ((comboBars !== undefined) || (comboBars.length <= 0)) {
						var comboBar = comboBars[0];
						var tBody = comboBar.getElementsByTagName('tbody')[0];
						var tR = tBody.getElementsByTagName('tr')[0];
						var w = tR.insertCell(-1);
						w.innerHTML='<div class="separator"></div>';
						var x = tR.insertCell(-1);
						x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
						var lable = document.getElementById('expandButton');
						lable.addEventListener("click",() => { expandLevel(); },false);
						var y = tR.insertCell(-1);
						y.innerHTML='<div class="separator"></div>';
						var z = tR.insertCell(-1);
						z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
						var lable2 = document.getElementById('collapseButton');
						lable2.addEventListener("click",() => { collapseLevel(); },false);
					}
				}
			} else if (subtab.innerHTML.trim() == "Views" ) {
				// Add button to first table
				var topBars = document.getElementsByClassName('value-tree-topToolBar');
				if (( topBars !== undefined ) || (topBars.length <= 0)) {
					var topBar = topBars[0];
					var comboBars = topBar.getElementsByClassName('combo-button-bar');
					if ((comboBars !== undefined) || (comboBars.length <= 0)) {
						var comboBar = comboBars[0];
						var tBody = comboBar.getElementsByTagName('tbody')[0];
						var tR = tBody.getElementsByTagName('tr')[0];
						var w = tR.insertCell(-1);
						w.innerHTML='<div class="separator"></div>';
						var x = tR.insertCell(-1);
						x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
						var lable = document.getElementById('expandButton');
						lable.addEventListener("click",() => { expandLevel(); },false);
						var y = tR.insertCell(-1);
						y.innerHTML='<div class="separator"></div>';
						var z = tR.insertCell(-1);
						z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
						var lable2 = document.getElementById('collapseButton');
						lable2.addEventListener("click",() => { collapseLevel(); },false);
					}
				}
			} else if (subtab.innerHTML.trim() == "IPv6" ) {
				// Unsupported for now :D
			}
		} else if (/ Page: GroupList /.test(page)) {
			// Add button to first table
			var topBars = document.getElementsByClassName('value-tree-topToolBar');
			if ((topBars !== undefined) || (topBars.length <= 0)) {
				var topBar = topBars[0];
				var comboBars = topBar.getElementsByClassName('combo-button-bar');
				if ((comboBars !== undefined) || (comboBars.length <= 0)) {
					var comboBar = comboBars[0];
					var tBody = comboBar.getElementsByTagName('tbody')[0];
					var tR = tBody.getElementsByTagName('tr')[0];
					var w = tR.insertCell(-1);
					w.innerHTML='<div class="separator"></div>';
					var x = tR.insertCell(-1);
					x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
					var lable = document.getElementById('expandButton');
					lable.addEventListener("click",() => { expandLevel(); },false);
					var y = tR.insertCell(-1);
					y.innerHTML='<div class="separator"></div>';
					var z = tR.insertCell(-1);
					z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
					var lable2 = document.getElementById('collapseButton');
					lable2.addEventListener("click",() => { collapseLevel(); },false);
				}
			}
		} else if (/ Page: TagGroup /.test(page)) {
		// Add button to first table
		var topBars = document.getElementsByClassName('value-tree-topToolBar');
		if (( topBars !== undefined ) || (topBars.length <= 0)) {
			var topBar = topBars[0];
			var comboBars = topBar.getElementsByClassName('combo-button-bar');
			if ((comboBars !== undefined) || (comboBars.length <= 0)) {
				var comboBar = comboBars[0];
				var tBody = comboBar.getElementsByTagName('tbody')[0];
				var tR = tBody.getElementsByTagName('tr')[0];
				var w = tR.insertCell(-1);
				w.innerHTML='<div class="separator"></div>';
				var x = tR.insertCell(-1);
				x.innerHTML='<span id="expandButton"><b>Expand</b></span>';
				var lable = document.getElementById('expandButton');
				lable.addEventListener("click",() => { expandLevel(); },false);
				var y = tR.insertCell(-1);
				y.innerHTML='<div class="separator"></div>';
				var z = tR.insertCell(-1);
				z.innerHTML='<span id="collapseButton"><s><b>Collapse</b></s></span>';
				var lable2 = document.getElementById('collapseButton');
				lable2.addEventListener("click",() => { collapseLevel(); },false);
			}
		}
	}
}