| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- const CLASSNAME_EXPANDED = "bi bi-chevron-down";
- const CLASSNAME_COLLAPSED = "bi bi-chevron-up";
- window["makeTree"] = function (ulRoot) {
- let makeTree = (li) => {
- let button = li.children[0];
- let list = li.children[1];
- if (button && list && button.nodeName == 'SPAN' && list.nodeName == 'UL') {
- button.className = CLASSNAME_COLLAPSED;
- list.style.display = 'block';
- button.addEventListener("click", (e) => {
- let visible = list.style.display === 'block';
- if (visible) {
- button.className = CLASSNAME_EXPANDED;
- list.style.display = "none";
- } else {
- button.className = CLASSNAME_COLLAPSED;
- list.style.display = "block";
- }
- });
- for (var i = 0; i < list.children.length; ++i)
- makeTree(list.children[i]);
- }
- };
- for (var i = 0; i < ulRoot.children.length; ++i)
- makeTree(ulRoot.children[i]);
- }
- $(() => {
- var FILTER = "";
- function treeChildren(root) {
- let result = [];
- if (root.classList.contains("treeroot"))
- return root.children;
- for (var i of root.children)
- if (i.classList.contains("treebranch"))
- for (var j of i.children)
- if (j.classList.contains("treeitem"))
- result.push(j);
- return result;
- }
- function updateUiFilter(filterText, treeNode) {
- if (isFiltered(filterText, treeNode)) {
- treeNode.classList.add("hidden");
- } else {
- setChildVisibility(treeNode);
- if ((treeNode.dataset?.fullname?.toLowerCase() || "").indexOf(filterText) >= 0)
- return;
- for (var treeBranch of treeChildren(treeNode))
- updateUiFilter(filterText, treeBranch);
- }
- }
- function setChildVisibility(treeNode) {
- treeNode.classList.remove("hidden");
- for (var i of treeNode.querySelectorAll(".treeitem.hidden"))
- i.classList.remove("hidden");
- }
- function isFiltered(filterText, node) {
- return node.textContent.toLowerCase().indexOf(filterText) < 0;
- }
- function filterUpdated() {
- updateUiFilter(FILTER.toLowerCase(), document.querySelector(".treeroot"));
- }
- const searchInput = document.getElementById("searchinput");
- function onSearchInputChanged() {
- if (FILTER === searchInput.value)
- return;
- FILTER = searchInput.value;
- filterUpdated();
- }
- searchInput.addEventListener('input', onSearchInputChanged);
- onSearchInputChanged();
- });
|