zoukankan      html  css  js  c++  java
  • Aras学习笔记 (17) Aras官方项目TOC Search Bar原理说明

    Toc Search Bar官方项目地址为: https://community.aras.com/en/portfolio/toc-search-bar/ ,效果如下:

    实现原理分为以下部分:

    1、在Menu上方增加搜索输入框,以DIV布局。

    <!-- Start Filter TOC Modifications -->
    <div class="filterContainer">
    <input type="text" id="filterTOC" onkeyup="onkeyupfilter(event)" onfocus="onFilterFocus()" placeholder="Filter..." />
    <input type="image" src="..imagesDelete.svg" id="clearFilterButton" onclick="clearFilter()" />
    </div>
    <!-- End Filter TOC Modifications -->

    2、设置搜索框的样式:

    /* Start Filter TOC Modifications */
    .filterContainer {
        margin: 0 2px 5px 15px;
        position: relative;
        border: 1px solid black;
        max-width: 150px;
        width: 90%;
    }
    #filterTOC {
        padding-right: 20px;
        box-sizing: border-box;
        width: 100%;
        border: none;
    }
    #filterTOC:hover {
        background-color: #dde7f5;
    }
    #clearFilterButton {
        max-height: 16px;
        max-width: 16px;
        position: absolute;
        right: 0%;
        top: 0px;
        border: none;
    }
    /* End Filter TOC Modifications */

    3、引用JQuery

    <script src="./external/jquery-3.2.1.min.js"></script>

    4、添加键盘输入、鼠标点击等操作事件。

    // Start Filter TOC Modifications
    
    // override the jquery 'contains' filter to be case insensitive
    jQuery.expr[':'].contains = function(a, i, m) {
      return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
    };
    
    function showAllTOCNodes() {
        $('.aras-nav').each(function() {
            $(this).find('*').show();
            
            var item = document.item;
            var thisItem = document.thisItem;
        })
        
        var elements = $('.aras-nav-toc').find("span").parents('.aras-nav-parent_expanded').not('.hadbefore_aras-nav-parent_expanded');
        elements.removeClass('aras-nav-parent_expanded');
    }
    
    function hideAllTOCNodes() {
        $('.aras-nav').each(function() {
            $(this).find('*').hide();
        });
    }
    
    function showParentsUntilRootTOC(val) {
        $('.aras-nav-toc').find("span:contains('" + val + "')").show();
        $('.aras-nav-toc').find("span:contains('" + val + "')").parentsUntil(".aras-nav").show();
        $('.aras-nav-toc').find("span:contains('" + val + "')").parentsUntil(".aras-nav").children('div,svg,img').show();
        $('.aras-nav-toc').find("span:contains('" + val + "')").parentsUntil(".aras-nav").children('div,svg,img').find('*').show();
        $('.aras-nav-toc').find("span:contains('" + val + "')").parents('.aras-nav-parent').addClass('aras-nav-parent_expanded');
    }
    
    function clearFilter() {
        var tValue = $('#filterTOC').val();
        
        if (tValue != null && tValue != '')
        {
            $('#filterTOC').val('');
            showAllTOCNodes();
        }    
        
        //filter is already cleared -> mark expanded TOC nodes
        if (tValue.length == 0)
        {    
            var alreadyThereElements = $('.aras-nav-toc').find('span').parents('.aras-nav-parent_expanded');
            alreadyThereElements.addClass('hadbefore_aras-nav-parent_expanded');
        }
    }
    
    function onFilterFocus() {
        //onkeyup sometimes gets triggered too late -> so mark expanded TOC nodes on focus
        var filter = document.getElementById("filterTOC");
        var val = filter.value;
        if (val.length == 0)
        {
            var alreadyThereElements = $('.aras-nav-toc').find('span').parents('.aras-nav-parent_expanded');
            alreadyThereElements.addClass('hadbefore_aras-nav-parent_expanded');
        }
    }
    
    function onkeyupfilter(event) {
        // Get the value to filter by
        var filter = document.getElementById("filterTOC");
        var val = filter.value;
        
        if (event.keyCode == 13 && val != null && val.length > 0)
        {
            $('.aras-nav-toc').find('ul').first().find('li:visible:not(.aras-nav-parent)').first().trigger('click')
        }
        
        if ((val == null) || (val == ""))
        {
            showAllTOCNodes();
            return;
        }
        
        // Get the TOC container
        var toc = document.getElementsByClassName("aras-nav-toc");
        if (!toc || toc.length < 1)
        {
            return;
        }
        toc = toc[0];
        
        var tocElems = toc.getElementsByTagName("span");
        var elemsToShow = [];
        
        hideAllTOCNodes();
        showParentsUntilRootTOC(val);
    }
    
    // End Filter TOC Modifications

    5、查询效果如下。

     

    另外推荐下Beyond Compare这个软件,用于文件差异对比、文件夹差异对比,非常好用。

  • 相关阅读:
    shell脚本进阶
    sort与uniq命令
    sed命令
    DNS与CDN
    nginx
    Docker Private Registry
    docker存储卷
    docker容器网络配置
    docker容器网络
    docker容器虚拟化
  • 原文地址:https://www.cnblogs.com/61007257Steven/p/10040406.html
Copyright © 2011-2022 走看看