authorgravatar for kappaloris@gmail.comLoris Cro <kappaloris@gmail.com> 2022-08-06 17:29:13+02:00
committergravatar for kappaloris@gmail.comLoris Cro <kappaloris@gmail.com> 2022-08-06 17:29:13+02:00
log9fc6990052d49f3ab965f55d2d134d3275cacf85
tree524ac66e79205f8e5d039545d01e0841913db841
parent059713478a06ac15295ead030e95dfc0a205541f

autodoc: re-introduce search result limits


2 files changed, 26 insertions(+), 3 deletions(-)

lib/docs/index.html+1
...@@ -647,6 +647,7 @@...@@ -647,6 +647,7 @@
647 <div id="sectSearchResults" class="hidden">647 <div id="sectSearchResults" class="hidden">
648 <h2>Search Results</h2>648 <h2>Search Results</h2>
649 <ul id="listSearchResults"></ul>649 <ul id="listSearchResults"></ul>
650 <p id="sectSearchAllResultsLink" class="hidden"><a href="">show all results</a></p>
650 </div>651 </div>
651 <div id="sectSearchNoResults" class="hidden">652 <div id="sectSearchNoResults" class="hidden">
652 <h2>No Results Found</h2>653 <h2>No Results Found</h2>
lib/docs/main.js+25-3
...@@ -40,7 +40,8 @@ var zigAnalysis;...@@ -40,7 +40,8 @@ var zigAnalysis;
40 let domDeclNoRef = document.getElementById("declNoRef");40 let domDeclNoRef = document.getElementById("declNoRef");
41 let domSearch = document.getElementById("search");41 let domSearch = document.getElementById("search");
42 let domSectSearchResults = document.getElementById("sectSearchResults");42 let domSectSearchResults = document.getElementById("sectSearchResults");
4343 let domSectSearchAllResultsLink = document.getElementById("sectSearchAllResultsLink");
44
44 let domListSearchResults = document.getElementById("listSearchResults");45 let domListSearchResults = document.getElementById("listSearchResults");
45 let domSectSearchNoResults = document.getElementById("sectSearchNoResults");46 let domSectSearchNoResults = document.getElementById("sectSearchNoResults");
46 let domSectInfo = document.getElementById("sectInfo");47 let domSectInfo = document.getElementById("sectInfo");
...@@ -51,6 +52,7 @@ var zigAnalysis;...@@ -51,6 +52,7 @@ var zigAnalysis;
51 let domHelpModal = document.getElementById("helpDialog");52 let domHelpModal = document.getElementById("helpDialog");
5253
53 let searchTimer = null;54 let searchTimer = null;
55 let searchTrimResults = true;
5456
55 let escapeHtmlReplacements = {57 let escapeHtmlReplacements = {
56 "&": "&amp;",58 "&": "&amp;",
...@@ -103,6 +105,14 @@ var zigAnalysis;...@@ -103,6 +105,14 @@ var zigAnalysis;
103 // let nodesToCallsMap = indexNodesToCalls();105 // let nodesToCallsMap = indexNodesToCalls();
104106
105 domSearch.addEventListener("keydown", onSearchKeyDown, false);107 domSearch.addEventListener("keydown", onSearchKeyDown, false);
108 domSectSearchAllResultsLink.addEventListener('click', onClickSearchShowAllResults, false);
109 function onClickSearchShowAllResults(ev) {
110 ev.preventDefault();
111 ev.stopPropagation();
112 searchTrimResults = false;
113 onHashChange();
114 }
115
106 domPrivDeclsBox.addEventListener(116 domPrivDeclsBox.addEventListener(
107 "change",117 "change",
108 function () {118 function () {
...@@ -355,6 +365,7 @@ var zigAnalysis;...@@ -355,6 +365,7 @@ var zigAnalysis;
355 domSectFns.classList.add("hidden");365 domSectFns.classList.add("hidden");
356 domSectFields.classList.add("hidden");366 domSectFields.classList.add("hidden");
357 domSectSearchResults.classList.add("hidden");367 domSectSearchResults.classList.add("hidden");
368 domSectSearchAllResultsLink.classList.add("hidden");
358 domSectSearchNoResults.classList.add("hidden");369 domSectSearchNoResults.classList.add("hidden");
359 domSectInfo.classList.add("hidden");370 domSectInfo.classList.add("hidden");
360 domHdrName.classList.add("hidden");371 domHdrName.classList.add("hidden");
...@@ -3261,6 +3272,7 @@ var zigAnalysis;...@@ -3261,6 +3272,7 @@ var zigAnalysis;
3261 list.sort();3272 list.sort();
3262 return list;3273 return list;
3263 }3274 }
3275
3264 function renderSearch() {3276 function renderSearch() {
3265 let matchedItems = [];3277 let matchedItems = [];
3266 let ignoreCase = curNavSearch.toLowerCase() === curNavSearch;3278 let ignoreCase = curNavSearch.toLowerCase() === curNavSearch;
...@@ -3332,6 +3344,14 @@ var zigAnalysis;...@@ -3332,6 +3344,14 @@ var zigAnalysis;
3332 return operatorCompare(a.decl.name, b.decl.name);3344 return operatorCompare(a.decl.name, b.decl.name);
3333 });3345 });
33343346
3347
3348 var searchTrimmed = false
3349 var searchTrimResultsMaxItems = 200
3350 if (searchTrimResults && matchedItems.length > searchTrimResultsMaxItems) {
3351 matchedItems = matchedItems.slice(0, searchTrimResultsMaxItems)
3352 searchTrimmed = true
3353 }
3354
3335 // Build up the list of search results3355 // Build up the list of search results
3336 let matchedItemsHTML = "";3356 let matchedItemsHTML = "";
33373357
...@@ -3342,12 +3362,14 @@ var zigAnalysis;...@@ -3342,12 +3362,14 @@ var zigAnalysis;
3342 const text = lastPkgName + "." + match.path.declNames.join(".");3362 const text = lastPkgName + "." + match.path.declNames.join(".");
3343 const href = navLink(match.path.pkgNames, match.path.declNames);3363 const href = navLink(match.path.pkgNames, match.path.declNames);
33443364
3345 matchedItemsHTML += `<li><a href="${href}">${text}</a></li>`;3365 matchedItemsHTML += "<li><a href=\""+ href +"\">"+ text + "</a></li>";
3346 }3366 }
33473367
3348 // Replace the search results using our newly constructed HTML string3368 // Replace the search results using our newly constructed HTML string
3349 domListSearchResults.innerHTML = matchedItemsHTML;3369 domListSearchResults.innerHTML = matchedItemsHTML;
33503370 if (searchTrimmed) {
3371 domSectSearchAllResultsLink.classList.remove("hidden");
3372 }
3351 renderSearchCursor();3373 renderSearchCursor();
33523374
3353 domSectSearchResults.classList.remove("hidden");3375 domSectSearchResults.classList.remove("hidden");