authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2020-05-16 16:43:41+03:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2020-05-16 16:43:41+03:00
logd061e5854a0891a3d4290183aa4f9d033d10d8c2
treef43d3573f847c92c8141cf3b2972f3ada8c1e1ca
parent758de71d9769b3539f042aea8821c3ac18bed74c
parentf31e0d98344625c85fb42b7d7710780ad648b479
signaturebadge-question-mark Signed by PGP key 4AEE18F83AFDEB23

Merge pull request #5020 from jinroh/docs/search-perf

docs: search perf

2 files changed, 87 insertions(+), 54 deletions(-)

lib/std/special/docs/index.html+1
...@@ -576,6 +576,7 @@...@@ -576,6 +576,7 @@
576 <div id="sectSearchResults" class="hidden">576 <div id="sectSearchResults" class="hidden">
577 <h2>Search Results</h2>577 <h2>Search Results</h2>
578 <ul id="listSearchResults"></ul>578 <ul id="listSearchResults"></ul>
579 <p id="sectSearchAllResultsLink" class="hidden"><a href="">show all results</a></p>
579 </div>580 </div>
580 <div id="sectSearchNoResults" class="hidden">581 <div id="sectSearchNoResults" class="hidden">
581 <h2>No Results Found</h2>582 <h2>No Results Found</h2>
lib/std/special/docs/main.js+86-54
...@@ -35,6 +35,7 @@...@@ -35,6 +35,7 @@
35 var domSectSearchResults = document.getElementById("sectSearchResults");35 var domSectSearchResults = document.getElementById("sectSearchResults");
36 var domListSearchResults = document.getElementById("listSearchResults");36 var domListSearchResults = document.getElementById("listSearchResults");
37 var domSectSearchNoResults = document.getElementById("sectSearchNoResults");37 var domSectSearchNoResults = document.getElementById("sectSearchNoResults");
38 var domSectSearchAllResultsLink = document.getElementById("sectSearchAllResultsLink");
38 var domSectInfo = document.getElementById("sectInfo");39 var domSectInfo = document.getElementById("sectInfo");
39 var domTdTarget = document.getElementById("tdTarget");40 var domTdTarget = document.getElementById("tdTarget");
40 var domTdZigVer = document.getElementById("tdZigVer");41 var domTdZigVer = document.getElementById("tdZigVer");
...@@ -42,6 +43,7 @@...@@ -42,6 +43,7 @@
42 var domHelpModal = document.getElementById("helpDialog");43 var domHelpModal = document.getElementById("helpDialog");
4344
44 var searchTimer = null;45 var searchTimer = null;
46 var searchTrimResults = true;
45 var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" };47 var escapeHtmlReplacements = { "&": "&amp;", '"': "&quot;", "<": "&lt;", ">": "&gt;" };
4648
47 var typeKinds = indexTypeKinds();49 var typeKinds = indexTypeKinds();
...@@ -82,6 +84,8 @@...@@ -82,6 +84,8 @@
82 var nodesToCallsMap = indexNodesToCalls();84 var nodesToCallsMap = indexNodesToCalls();
8385
84 domSearch.addEventListener('keydown', onSearchKeyDown, false);86 domSearch.addEventListener('keydown', onSearchKeyDown, false);
87 domSectSearchAllResultsLink.addEventListener('click', onClickSearchShowAllResults, false);
88
85 window.addEventListener('hashchange', onHashChange, false);89 window.addEventListener('hashchange', onHashChange, false);
86 window.addEventListener('keydown', onWindowKeyDown, false);90 window.addEventListener('keydown', onWindowKeyDown, false);
87 onHashChange();91 onHashChange();
...@@ -113,6 +117,7 @@...@@ -113,6 +117,7 @@
113 domSectFields.classList.add("hidden");117 domSectFields.classList.add("hidden");
114 domSectSearchResults.classList.add("hidden");118 domSectSearchResults.classList.add("hidden");
115 domSectSearchNoResults.classList.add("hidden");119 domSectSearchNoResults.classList.add("hidden");
120 domSectSearchAllResultsLink.classList.add("hidden");
116 domSectInfo.classList.add("hidden");121 domSectInfo.classList.add("hidden");
117 domHdrName.classList.add("hidden");122 domHdrName.classList.add("hidden");
118 domSectNav.classList.add("hidden");123 domSectNav.classList.add("hidden");
...@@ -256,13 +261,15 @@...@@ -256,13 +261,15 @@
256 if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);261 if (fnObj.combined === undefined) fnObj.combined = allCompTimeFnCallsResult(calls);
257 if (fnObj.combined != null) renderContainer(fnObj.combined);262 if (fnObj.combined != null) renderContainer(fnObj.combined);
258263
259 resizeDomList(domListFnExamples, calls.length, '<li></li>');264 var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>');
260265
261 for (var callI = 0; callI < calls.length; callI += 1) {266 for (var callI = 0; callI < calls.length; callI += 1) {
262 var liDom = domListFnExamples.children[callI];267 var liDom = domListFnExamplesFragment.children[callI];
263 liDom.innerHTML = getCallHtml(fnDecl, calls[callI]);268 liDom.innerHTML = getCallHtml(fnDecl, calls[callI]);
264 }269 }
265270
271 domListFnExamples.innerHTML = "";
272 domListFnExamples.appendChild(domListFnExamplesFragment);
266 domFnExamples.classList.remove("hidden");273 domFnExamples.classList.remove("hidden");
267 } else if (instantiations != null) {274 } else if (instantiations != null) {
268 // TODO275 // TODO
...@@ -303,7 +310,7 @@...@@ -303,7 +310,7 @@
303 return;310 return;
304 }311 }
305312
306 resizeDomList(domListParams, docCount, '<div></div>');313 var domListParamsFragment = createDomListFragment(docCount, '<div></div>');
307 var domIndex = 0;314 var domIndex = 0;
308315
309 for (var i = 0; i < fields.length; i += 1) {316 for (var i = 0; i < fields.length; i += 1) {
...@@ -312,7 +319,7 @@...@@ -312,7 +319,7 @@
312 if (fieldNode.docs == null) {319 if (fieldNode.docs == null) {
313 continue;320 continue;
314 }321 }
315 var divDom = domListParams.children[domIndex];322 var divDom = domListParamsFragment.children[domIndex];
316 domIndex += 1;323 domIndex += 1;
317 var argTypeIndex = typeObj.args[i];324 var argTypeIndex = typeObj.args[i];
318325
...@@ -333,12 +340,15 @@...@@ -333,12 +340,15 @@
333 }340 }
334 divDom.innerHTML = html;341 divDom.innerHTML = html;
335 }342 }
343
344 domListParams.innerHTML = "";
345 domListParams.appendChild(domListParamsFragment);
336 domSectParams.classList.remove("hidden");346 domSectParams.classList.remove("hidden");
337 }347 }
338348
339 function renderNav() {349 function renderNav() {
340 var len = curNav.pkgNames.length + curNav.declNames.length;350 var len = curNav.pkgNames.length + curNav.declNames.length;
341 resizeDomList(domListNav, len, '<li><a href="#"></a></li>');351 var domListNavFragment = createDomListFragment(len, '<li><a href="#"></a></li>');
342 var list = [];352 var list = [];
343 var hrefPkgNames = [];353 var hrefPkgNames = [];
344 var hrefDeclNames = [];354 var hrefDeclNames = [];
...@@ -358,7 +368,7 @@...@@ -358,7 +368,7 @@
358 }368 }
359369
360 for (var i = 0; i < list.length; i += 1) {370 for (var i = 0; i < list.length; i += 1) {
361 var liDom = domListNav.children[i];371 var liDom = domListNavFragment.children[i];
362 var aDom = liDom.children[0];372 var aDom = liDom.children[0];
363 aDom.textContent = list[i].name;373 aDom.textContent = list[i].name;
364 aDom.setAttribute('href', list[i].link);374 aDom.setAttribute('href', list[i].link);
...@@ -369,6 +379,8 @@...@@ -369,6 +379,8 @@
369 }379 }
370 }380 }
371381
382 domListNav.innerHTML = "";
383 domListNav.appendChild(domListNavFragment);
372 domSectNav.classList.remove("hidden");384 domSectNav.classList.remove("hidden");
373 }385 }
374386
...@@ -401,9 +413,9 @@...@@ -401,9 +413,9 @@
401 });413 });
402414
403 if (list.length !== 0) {415 if (list.length !== 0) {
404 resizeDomList(domListPkgs, list.length, '<li><a href="#"></a></li>');416 var domListPkgsFragment = createDomListFragment(list.length, '<li><a href="#"></a></li>');
405 for (var i = 0; i < list.length; i += 1) {417 for (var i = 0; i < list.length; i += 1) {
406 var liDom = domListPkgs.children[i];418 var liDom = domListPkgsFragment.children[i];
407 var aDom = liDom.children[0];419 var aDom = liDom.children[0];
408 aDom.textContent = list[i].name;420 aDom.textContent = list[i].name;
409 aDom.setAttribute('href', navLinkPkg(list[i].pkg));421 aDom.setAttribute('href', navLinkPkg(list[i].pkg));
...@@ -414,6 +426,8 @@...@@ -414,6 +426,8 @@
414 }426 }
415 }427 }
416428
429 domListPkgs.innerHTML = "";
430 domListPkgs.appendChild(domListPkgsFragment);
417 domSectPkgs.classList.remove("hidden");431 domSectPkgs.classList.remove("hidden");
418 }432 }
419 }433 }
...@@ -454,29 +468,10 @@...@@ -454,29 +468,10 @@
454 return navLink(curNav.pkgNames, declNamesCopy);468 return navLink(curNav.pkgNames, declNamesCopy);
455 }469 }
456470
457 function resizeDomListDl(dlDom, desiredLen) {471 function createDomListFragment(desiredLen, templateHtml) {
458 // add the missing dom entries472 var domTemplate = document.createElement("template");
459 var i, ev;473 domTemplate.innerHTML = templateHtml.repeat(desiredLen);
460 for (i = dlDom.childElementCount / 2; i < desiredLen; i += 1) {474 return domTemplate.content;
461 dlDom.insertAdjacentHTML('beforeend', '<dt></dt><dd></dd>');
462 }
463 // remove extra dom entries
464 while (desiredLen < dlDom.childElementCount / 2) {
465 dlDom.removeChild(dlDom.lastChild);
466 dlDom.removeChild(dlDom.lastChild);
467 }
468 }
469
470 function resizeDomList(listDom, desiredLen, templateHtml) {
471 // add the missing dom entries
472 var i, ev;
473 for (i = listDom.childElementCount; i < desiredLen; i += 1) {
474 listDom.insertAdjacentHTML('beforeend', templateHtml);
475 }
476 // remove extra dom entries
477 while (desiredLen < listDom.childElementCount) {
478 listDom.removeChild(listDom.lastChild);
479 }
480 }475 }
481476
482 function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {477 function typeIndexName(typeIndex, wantHtml, wantLink, fnDecl, linkFnNameDecl) {
...@@ -831,10 +826,10 @@...@@ -831,10 +826,10 @@
831 return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase());826 return operatorCompare(a.err.name.toLowerCase(), b.err.name.toLowerCase());
832 });827 });
833828
834 resizeDomListDl(domListFnErrors, errorList.length);829 var domListFnErrorsFragment = createDomListFragment(errorList.length, "<dt></dt><dd></dd>");
835 for (var i = 0; i < errorList.length; i += 1) {830 for (var i = 0; i < errorList.length; i += 1) {
836 var nameTdDom = domListFnErrors.children[i * 2 + 0];831 var nameTdDom = domListFnErrorsFragment.children[i * 2 + 0];
837 var descTdDom = domListFnErrors.children[i * 2 + 1];832 var descTdDom = domListFnErrorsFragment.children[i * 2 + 1];
838 nameTdDom.textContent = errorList[i].err.name;833 nameTdDom.textContent = errorList[i].err.name;
839 var docs = errorList[i].docs;834 var docs = errorList[i].docs;
840 if (docs != null) {835 if (docs != null) {
...@@ -843,6 +838,8 @@...@@ -843,6 +838,8 @@
843 descTdDom.textContent = "";838 descTdDom.textContent = "";
844 }839 }
845 }840 }
841 domListFnErrors.innerHTML = "";
842 domListFnErrors.appendChild(domListFnErrorsFragment);
846 domTableFnErrors.classList.remove("hidden");843 domTableFnErrors.classList.remove("hidden");
847 }844 }
848 domSectFnErrors.classList.remove("hidden");845 domSectFnErrors.classList.remove("hidden");
...@@ -1022,45 +1019,51 @@...@@ -1022,45 +1019,51 @@
1022 }1019 }
10231020
1024 if (typesList.length !== 0) {1021 if (typesList.length !== 0) {
1025 resizeDomList(domListTypes, typesList.length, '<li><a href="#"></a></li>');1022 var domListTypesFragment = createDomListFragment(typesList.length, '<li><a href="#"></a></li>');
1026 for (var i = 0; i < typesList.length; i += 1) {1023 for (var i = 0; i < typesList.length; i += 1) {
1027 var liDom = domListTypes.children[i];1024 var liDom = domListTypesFragment.children[i];
1028 var aDom = liDom.children[0];1025 var aDom = liDom.children[0];
1029 var decl = typesList[i];1026 var decl = typesList[i];
1030 aDom.textContent = decl.name;1027 aDom.textContent = decl.name;
1031 aDom.setAttribute('href', navLinkDecl(decl.name));1028 aDom.setAttribute('href', navLinkDecl(decl.name));
1032 }1029 }
1030 domListTypes.innerHTML = "";
1031 domListTypes.appendChild(domListTypesFragment);
1033 domSectTypes.classList.remove("hidden");1032 domSectTypes.classList.remove("hidden");
1034 }1033 }
1035 if (namespacesList.length !== 0) {1034 if (namespacesList.length !== 0) {
1036 resizeDomList(domListNamespaces, namespacesList.length, '<li><a href="#"></a></li>');1035 var domListNamespacesFragment = createDomListFragment(namespacesList.length, '<li><a href="#"></a></li>');
1037 for (var i = 0; i < namespacesList.length; i += 1) {1036 for (var i = 0; i < namespacesList.length; i += 1) {
1038 var liDom = domListNamespaces.children[i];1037 var liDom = domListNamespacesFragment.children[i];
1039 var aDom = liDom.children[0];1038 var aDom = liDom.children[0];
1040 var decl = namespacesList[i];1039 var decl = namespacesList[i];
1041 aDom.textContent = decl.name;1040 aDom.textContent = decl.name;
1042 aDom.setAttribute('href', navLinkDecl(decl.name));1041 aDom.setAttribute('href', navLinkDecl(decl.name));
1043 }1042 }
1043 domListNamespaces.innerHTML = "";
1044 domListNamespaces.appendChild(domListNamespacesFragment);
1044 domSectNamespaces.classList.remove("hidden");1045 domSectNamespaces.classList.remove("hidden");
1045 }1046 }
10461047
1047 if (errSetsList.length !== 0) {1048 if (errSetsList.length !== 0) {
1048 resizeDomList(domListErrSets, errSetsList.length, '<li><a href="#"></a></li>');1049 var domListErrSetsFragment = createDomListFragment(errSetsList.length, '<li><a href="#"></a></li>');
1049 for (var i = 0; i < errSetsList.length; i += 1) {1050 for (var i = 0; i < errSetsList.length; i += 1) {
1050 var liDom = domListErrSets.children[i];1051 var liDom = domListErrSetsFragment.children[i];
1051 var aDom = liDom.children[0];1052 var aDom = liDom.children[0];
1052 var decl = errSetsList[i];1053 var decl = errSetsList[i];
1053 aDom.textContent = decl.name;1054 aDom.textContent = decl.name;
1054 aDom.setAttribute('href', navLinkDecl(decl.name));1055 aDom.setAttribute('href', navLinkDecl(decl.name));
1055 }1056 }
1057 domListErrSets.innerHTML = "";
1058 domListErrSets.appendChild(domListErrSetsFragment);
1056 domSectErrSets.classList.remove("hidden");1059 domSectErrSets.classList.remove("hidden");
1057 }1060 }
10581061
1059 if (fnsList.length !== 0) {1062 if (fnsList.length !== 0) {
1060 resizeDomList(domListFns, fnsList.length, '<tr><td></td><td></td></tr>');1063 var domListFnsFragment = createDomListFragment(fnsList.length, '<tr><td></td><td></td></tr>');
1061 for (var i = 0; i < fnsList.length; i += 1) {1064 for (var i = 0; i < fnsList.length; i += 1) {
1062 var decl = fnsList[i];1065 var decl = fnsList[i];
1063 var trDom = domListFns.children[i];1066 var trDom = domListFnsFragment.children[i];
10641067
1065 var tdFnCode = trDom.children[0];1068 var tdFnCode = trDom.children[0];
1066 var tdDesc = trDom.children[1];1069 var tdDesc = trDom.children[1];
...@@ -1074,17 +1077,19 @@...@@ -1074,17 +1077,19 @@
1074 tdDesc.textContent = "";1077 tdDesc.textContent = "";
1075 }1078 }
1076 }1079 }
1080 domListFns.innerHTML = "";
1081 domListFns.appendChild(domListFnsFragment);
1077 domSectFns.classList.remove("hidden");1082 domSectFns.classList.remove("hidden");
1078 }1083 }
10791084
1080 if (container.fields != null && container.fields.length !== 0) {1085 if (container.fields != null && container.fields.length !== 0) {
1081 resizeDomList(domListFields, container.fields.length, '<div></div>');1086 var domListFieldsFragment = createDomListFragment(container.fields.length, '<div></div>');
10821087
1083 var containerNode = zigAnalysis.astNodes[container.src];1088 var containerNode = zigAnalysis.astNodes[container.src];
1084 for (var i = 0; i < container.fields.length; i += 1) {1089 for (var i = 0; i < container.fields.length; i += 1) {
1085 var field = container.fields[i];1090 var field = container.fields[i];
1086 var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];1091 var fieldNode = zigAnalysis.astNodes[containerNode.fields[i]];
1087 var divDom = domListFields.children[i];1092 var divDom = domListFieldsFragment.children[i];
10881093
1089 var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldNode.name);1094 var html = '<div class="mobile-scroll-container"><pre class="scroll-item">' + escapeHtml(fieldNode.name);
10901095
...@@ -1107,15 +1112,17 @@...@@ -1107,15 +1112,17 @@
1107 }1112 }
1108 divDom.innerHTML = html;1113 divDom.innerHTML = html;
1109 }1114 }
1115 domListFields.innerHTML = "";
1116 domListFields.appendChild(domListFieldsFragment);
1110 domSectFields.classList.remove("hidden");1117 domSectFields.classList.remove("hidden");
1111 }1118 }
11121119
1113 if (varsList.length !== 0) {1120 if (varsList.length !== 0) {
1114 resizeDomList(domListGlobalVars, varsList.length,1121 var domListGlobalVarsFragment = createDomListFragment(varsList.length,
1115 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');1122 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
1116 for (var i = 0; i < varsList.length; i += 1) {1123 for (var i = 0; i < varsList.length; i += 1) {
1117 var decl = varsList[i];1124 var decl = varsList[i];
1118 var trDom = domListGlobalVars.children[i];1125 var trDom = domListGlobalVarsFragment.children[i];
11191126
1120 var tdName = trDom.children[0];1127 var tdName = trDom.children[0];
1121 var tdNameA = tdName.children[0];1128 var tdNameA = tdName.children[0];
...@@ -1134,15 +1141,17 @@...@@ -1134,15 +1141,17 @@
1134 tdDesc.textContent = "";1141 tdDesc.textContent = "";
1135 }1142 }
1136 }1143 }
1144 domListGlobalVars.innerHTML = "";
1145 domListGlobalVars.appendChild(domListGlobalVarsFragment);
1137 domSectGlobalVars.classList.remove("hidden");1146 domSectGlobalVars.classList.remove("hidden");
1138 }1147 }
11391148
1140 if (valsList.length !== 0) {1149 if (valsList.length !== 0) {
1141 resizeDomList(domListValues, valsList.length,1150 var domListValuesFragment = createDomListFragment(valsList.length,
1142 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');1151 '<tr><td><a href="#"></a></td><td></td><td></td></tr>');
1143 for (var i = 0; i < valsList.length; i += 1) {1152 for (var i = 0; i < valsList.length; i += 1) {
1144 var decl = valsList[i];1153 var decl = valsList[i];
1145 var trDom = domListValues.children[i];1154 var trDom = domListValuesFragment.children[i];
11461155
1147 var tdName = trDom.children[0];1156 var tdName = trDom.children[0];
1148 var tdNameA = tdName.children[0];1157 var tdNameA = tdName.children[0];
...@@ -1161,6 +1170,8 @@...@@ -1161,6 +1170,8 @@
1161 tdDesc.textContent = "";1170 tdDesc.textContent = "";
1162 }1171 }
1163 }1172 }
1173 domListValues.innerHTML = "";
1174 domListValues.appendChild(domListValuesFragment);
1164 domSectValues.classList.remove("hidden");1175 domSectValues.classList.remove("hidden");
1165 }1176 }
1166 }1177 }
...@@ -1807,7 +1818,7 @@...@@ -1807,7 +1818,7 @@
1807 if (ev.ctrlKey) name = "Ctrl+" + name;1818 if (ev.ctrlKey) name = "Ctrl+" + name;
1808 return name;1819 return name;
1809 }1820 }
1810 1821
1811 function onWindowKeyDown(ev) {1822 function onWindowKeyDown(ev) {
1812 switch (getKeyString(ev)) {1823 switch (getKeyString(ev)) {
1813 case "Esc":1824 case "Esc":
...@@ -1839,6 +1850,13 @@...@@ -1839,6 +1850,13 @@
1839 domHelpModal.focus();1850 domHelpModal.focus();
1840 }1851 }
18411852
1853 function onClickSearchShowAllResults(ev) {
1854 ev.preventDefault();
1855 ev.stopPropagation();
1856 searchTrimResults = false;
1857 onHashChange();
1858 }
1859
1842 function clearAsyncSearch() {1860 function clearAsyncSearch() {
1843 if (searchTimer != null) {1861 if (searchTimer != null) {
1844 clearTimeout(searchTimer);1862 clearTimeout(searchTimer);
...@@ -1848,7 +1866,8 @@...@@ -1848,7 +1866,8 @@
18481866
1849 function startAsyncSearch() {1867 function startAsyncSearch() {
1850 clearAsyncSearch();1868 clearAsyncSearch();
1851 searchTimer = setTimeout(startSearch, 100);1869 searchTrimResults = true;
1870 searchTimer = setTimeout(startSearch, 10);
1852 }1871 }
1853 function startSearch() {1872 function startSearch() {
1854 clearAsyncSearch();1873 clearAsyncSearch();
...@@ -1920,25 +1939,38 @@...@@ -1920,25 +1939,38 @@
1920 }1939 }
19211940
1922 if (matchedItems.length !== 0) {1941 if (matchedItems.length !== 0) {
1923 resizeDomList(domListSearchResults, matchedItems.length, '<li><a href="#"></a></li>');
1924
1925 matchedItems.sort(function(a, b) {1942 matchedItems.sort(function(a, b) {
1926 var cmp = operatorCompare(b.points, a.points);1943 var cmp = operatorCompare(b.points, a.points);
1927 if (cmp != 0) return cmp;1944 if (cmp != 0) return cmp;
1928 return operatorCompare(a.decl.name, b.decl.name);1945 return operatorCompare(a.decl.name, b.decl.name);
1929 });1946 });
19301947
1948 var searchTrimmed = false
1949 var searchTrimResultsMaxItems = 200
1950 if (searchTrimResults && matchedItems.length > searchTrimResultsMaxItems) {
1951 matchedItems = matchedItems.slice(0, searchTrimResultsMaxItems)
1952 searchTrimmed = true
1953 }
1954
1955 var domListSearchResultsFragment = createDomListFragment(matchedItems.length, '<li><a href="#"></a></li>');
1931 for (var i = 0; i < matchedItems.length; i += 1) {1956 for (var i = 0; i < matchedItems.length; i += 1) {
1932 var liDom = domListSearchResults.children[i];1957 var liDom = domListSearchResultsFragment.children[i];
1933 var aDom = liDom.children[0];1958 var aDom = liDom.children[0];
1934 var match = matchedItems[i];1959 var match = matchedItems[i];
1935 var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1];1960 var lastPkgName = match.path.pkgNames[match.path.pkgNames.length - 1];
1936 aDom.textContent = lastPkgName + "." + match.path.declNames.join('.');1961 aDom.textContent = lastPkgName + "." + match.path.declNames.join('.');
1937 aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames));1962 aDom.setAttribute('href', navLink(match.path.pkgNames, match.path.declNames));
1938 }1963 }
1939 renderSearchCursor();
19401964
1965 domListSearchResults.innerHTML = "";
1966 domListSearchResults.appendChild(domListSearchResultsFragment);
1941 domSectSearchResults.classList.remove("hidden");1967 domSectSearchResults.classList.remove("hidden");
1968
1969 if (searchTrimmed) {
1970 domSectSearchAllResultsLink.classList.remove("hidden");
1971 }
1972
1973 renderSearchCursor();
1942 } else {1974 } else {
1943 domSectSearchNoResults.classList.remove("hidden");1975 domSectSearchNoResults.classList.remove("hidden");
1944 }1976 }