153 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			153 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import "../common/jquery-3.6.0.slim.min.js";
 | 
						|
 | 
						|
function processVersionSelector() {
 | 
						|
    var processor = getProcessor();
 | 
						|
    var hideableOptions = document.getElementsByClassName("hideable");
 | 
						|
    for (let i = 0; i < hideableOptions.length; i++) {
 | 
						|
       hideableOptions[i].style = "display: none;";
 | 
						|
    }
 | 
						|
    if (processor == "xalan" || processor == "libxml") {
 | 
						|
        var xalanOptions = document.getElementsByClassName("xalan");
 | 
						|
        for (let i = 0; i < xalanOptions.length; i++) {
 | 
						|
            xalanOptions[i].style = "";
 | 
						|
        }
 | 
						|
        document.getElementById("versions").selectedIndex = 0;
 | 
						|
    }
 | 
						|
    else {
 | 
						|
        var saxonOptions = document.getElementsByClassName("saxon");
 | 
						|
        for (let i = 0; i < saxonOptions.length; i++) {
 | 
						|
            saxonOptions[i].style = "";
 | 
						|
        }
 | 
						|
        document.getElementById("versions").selectedIndex = 3;
 | 
						|
        
 | 
						|
    }
 | 
						|
    processTooltip();
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
function processTooltip() {
 | 
						|
    var filter = "collapse" + getVersion();
 | 
						|
    var collList;
 | 
						|
    console.log("filter: ", filter);
 | 
						|
 | 
						|
 | 
						|
    if (filter == "collapse3.0") {
 | 
						|
        document.getElementById("tooltipFunctionInfo").innerText = "XPath 1.0, 2.0 & 3.0 functions";
 | 
						|
        showList(document.getElementsByName("collapse20"));
 | 
						|
        showList(document.getElementsByName("collapse30"));
 | 
						|
        hideList(document.getElementsByName("collapse31"));
 | 
						|
        console.log("collapsed 3.0");
 | 
						|
    } else if (filter == "collapse3.1") {
 | 
						|
        document.getElementById("tooltipFunctionInfo").innerText = "XPath 1.0, 2.0, 3.0 & 3.1 functions";
 | 
						|
        showList(document.getElementsByName("collapse20"));
 | 
						|
        showList(document.getElementsByName("collapse30"));
 | 
						|
        showList(document.getElementsByName("collapse31"));
 | 
						|
        console.log("collapsed 3.1");
 | 
						|
    } else if (filter == "collapse2.0"){
 | 
						|
        document.getElementById("tooltipFunctionInfo").innerText = "XPath 1.0 & 2.0 functions";
 | 
						|
        showList(document.getElementsByName("collapse20"));
 | 
						|
        hideList(document.getElementsByName("collapse30"));
 | 
						|
        hideList(document.getElementsByName("collapse31"));
 | 
						|
    } else {
 | 
						|
        document.getElementById("tooltipFunctionInfo").innerText = "XPath 1.0 functions";
 | 
						|
        hideList(document.getElementsByName("collapse20"));
 | 
						|
        hideList(document.getElementsByName("collapse30"));
 | 
						|
        hideList(document.getElementsByName("collapse31"));
 | 
						|
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
function getVersion() {
 | 
						|
    return document.getElementById("versions").value;
 | 
						|
}
 | 
						|
 | 
						|
function getProcessor() {
 | 
						|
    return document.getElementById("processors").value;
 | 
						|
}
 | 
						|
 | 
						|
function getProcInfo() {
 | 
						|
    var processVariables = document.getElementById("processors").value + "&version=" + getVersion();
 | 
						|
    return processVariables;
 | 
						|
}
 | 
						|
 | 
						|
var triggerList = document.getElementsByClassName("collapseTrigger");
 | 
						|
        for (i = 0; i < triggerList.length; i++) {
 | 
						|
            console.log("trigger connected");
 | 
						|
            triggerList[i].addEventListener("click", function () {
 | 
						|
                var collapsible = this.parentElement;
 | 
						|
                if (this.tagName == "A") {
 | 
						|
                    var collapsibleData = this.nextElementSibling;
 | 
						|
                } else {
 | 
						|
                    var collapsibleData = this.parentElement.nextElementSibling;
 | 
						|
                    
 | 
						|
                }
 | 
						|
 | 
						|
                console.log(collapsibleData);
 | 
						|
                if (collapsibleData.style.maxHeight > "0px") {
 | 
						|
                    collapsibleData.style.maxHeight = "0px";
 | 
						|
 | 
						|
                    this.classList.toggle("active", false);
 | 
						|
                    if (!this.classList.contains("collapsibleMini")) {
 | 
						|
                        collapsible.classList.toggle("active", false);
 | 
						|
                    }
 | 
						|
 | 
						|
                    var subLists1 = collapsibleData.getElementsByClassName("content");
 | 
						|
                    var subLists2 = collapsibleData.getElementsByClassName("active");
 | 
						|
                    for (j = 0; j < subLists1.length; j++) {
 | 
						|
                        subLists1[j].style.maxHeight = "0px";
 | 
						|
                    }
 | 
						|
                    for (j = 0; j < subLists2.length; j++) {
 | 
						|
                        subLists2[j].classList.toggle("active", false);
 | 
						|
                    }
 | 
						|
                } else {
 | 
						|
                    collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px";
 | 
						|
 | 
						|
                    this.classList.toggle("active", true);
 | 
						|
                    if (!this.classList.contains("collapsibleMini")) {
 | 
						|
                        collapsible.classList.toggle("active", true);
 | 
						|
                    } else {
 | 
						|
                        var parentContent = this.closest(".content");
 | 
						|
                        parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px";
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            });
 | 
						|
        }
 | 
						|
 | 
						|
function init() {
 | 
						|
            //Handle clicks in whole form and set info in tooltip
 | 
						|
            setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here');
 | 
						|
            setDefaultContent(document.getElementById("transformArea"), 'Insert XPath expression here');
 | 
						|
            console.log("init");
 | 
						|
            processVersionSelector();
 | 
						|
            processTooltip();
 | 
						|
            tool.addEventListener('change', event => {
 | 
						|
                //Check if script was called from textarea or selector
 | 
						|
                var targetID = event.target.getAttribute('id');
 | 
						|
                if (targetID == "processors") {
 | 
						|
                    processVersionSelector();
 | 
						|
                    processTooltip();
 | 
						|
                }
 | 
						|
                else if (targetID == "versions") {
 | 
						|
                    processTooltip();
 | 
						|
                }
 | 
						|
                
 | 
						|
                
 | 
						|
            })
 | 
						|
            tool.addEventListener('click', event => {
 | 
						|
                //Check if script was called from textarea or selector
 | 
						|
                var targetID = event.target.getAttribute('id');
 | 
						|
                if (targetID !== "xmlArea" && targetID !== "transformArea") {
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
                processTooltip();
 | 
						|
 | 
						|
            })
 | 
						|
            tool.addEventListener('change', event => {
 | 
						|
                //Check if script was called from textarea or selector
 | 
						|
                var targetID = event.target.getAttribute('id');
 | 
						|
                if (targetID !== "xmlArea" && targetID !== "transformArea") {
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
                processTooltip();
 | 
						|
            })
 | 
						|
} |