zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 297452cf679029feddc18aa41697740c8b0db5aa (tree)
parent f76d59ef761746a3ea73aa9296dec146672d1dc2
Author: Pierre Guilleminot <pierre@jow.fr>
Date:   Sun, 12 Apr 2020 23:17:20 +0200

improve search perf: trim search results

Diffstat:
Mlib/std/special/docs/index.html | 1+
Mlib/std/special/docs/main.js | 24++++++++++++++++++++++++
2 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/lib/std/special/docs/index.html b/lib/std/special/docs/index.html @@ -576,6 +576,7 @@ <div id="sectSearchResults" class="hidden"> <h2>Search Results</h2> <ul id="listSearchResults"></ul> + <p id="sectSearchAllResultsLink" class="hidden"><a href="">show all results</a></p> </div> <div id="sectSearchNoResults" class="hidden"> <h2>No Results Found</h2> diff --git a/lib/std/special/docs/main.js b/lib/std/special/docs/main.js @@ -35,6 +35,7 @@ var domSectSearchResults = document.getElementById("sectSearchResults"); var domListSearchResults = document.getElementById("listSearchResults"); var domSectSearchNoResults = document.getElementById("sectSearchNoResults"); + var domSectSearchAllResultsLink = document.getElementById("sectSearchAllResultsLink"); var domSectInfo = document.getElementById("sectInfo"); var domTdTarget = document.getElementById("tdTarget"); var domTdZigVer = document.getElementById("tdZigVer"); @@ -42,6 +43,7 @@ var domHelpModal = document.getElementById("helpDialog"); var searchTimer = null; + var searchTrimResults = true; var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" }; var typeKinds = indexTypeKinds(); @@ -82,6 +84,8 @@ var nodesToCallsMap = indexNodesToCalls(); domSearch.addEventListener('keydown', onSearchKeyDown, false); + domSectSearchAllResultsLink.addEventListener('click', onClickSearchShowAllResults, false); + window.addEventListener('hashchange', onHashChange, false); window.addEventListener('keydown', onWindowKeyDown, false); onHashChange(); @@ -113,6 +117,7 @@ domSectFields.classList.add("hidden"); domSectSearchResults.classList.add("hidden"); domSectSearchNoResults.classList.add("hidden"); + domSectSearchAllResultsLink.classList.add("hidden"); domSectInfo.classList.add("hidden"); domHdrName.classList.add("hidden"); domSectNav.classList.add("hidden"); @@ -1810,6 +1815,13 @@ domHelpModal.focus(); } + function onClickSearchShowAllResults(ev) { + ev.preventDefault(); + ev.stopPropagation(); + searchTrimResults = false; + onHashChange(); + } + function clearAsyncSearch() { if (searchTimer != null) { clearTimeout(searchTimer); @@ -1819,6 +1831,7 @@ function startAsyncSearch() { clearAsyncSearch(); + searchTrimResults = true; searchTimer = setTimeout(startSearch, 10); } function startSearch() { @@ -1897,6 +1910,13 @@ return operatorCompare(a.decl.name, b.decl.name); }); + var searchTrimmed = false + var searchTrimResultsMaxItems = 200 + if (searchTrimResults && matchedItems.length > searchTrimResultsMaxItems) { + matchedItems = matchedItems.slice(0, searchTrimResultsMaxItems) + searchTrimmed = true + } + var domListSearchResultsFragment = createDomListFragment(matchedItems.length, '<li><a href="#"></a></li>'); for (var i = 0; i < matchedItems.length; i += 1) { var liDom = domListSearchResultsFragment.children[i]; @@ -1911,6 +1931,10 @@ domListSearchResults.appendChild(domListSearchResultsFragment); domSectSearchResults.classList.remove("hidden"); + if (searchTrimmed) { + domSectSearchAllResultsLink.classList.remove("hidden"); + } + renderSearchCursor(); } else { domSectSearchNoResults.classList.remove("hidden");