| ... | @@ -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"); |
| 43 | | 44 | |
| 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;" }; |
| 46 | | 48 | |
| 47 | var typeKinds = indexTypeKinds(); | 49 | var typeKinds = indexTypeKinds(); |
| ... | @@ -82,6 +84,8 @@ | ... | @@ -82,6 +84,8 @@ |
| 82 | var nodesToCallsMap = indexNodesToCalls(); | 84 | var nodesToCallsMap = indexNodesToCalls(); |
| 83 | | 85 | |
| 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); |
| 258 | | 263 | |
| 259 | resizeDomList(domListFnExamples, calls.length, '<li></li>'); | 264 | var domListFnExamplesFragment = createDomListFragment(calls.length, '<li></li>'); |
| 260 | | 265 | |
| 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 | } |
| 265 | | 270 | |
| | 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 | // TODO | 275 | // TODO |
| ... | @@ -303,7 +310,7 @@ | ... | @@ -303,7 +310,7 @@ |
| 303 | return; | 310 | return; |
| 304 | } | 311 | } |
| 305 | | 312 | |
| 306 | resizeDomList(domListParams, docCount, '<div></div>'); | 313 | var domListParamsFragment = createDomListFragment(docCount, '<div></div>'); |
| 307 | var domIndex = 0; | 314 | var domIndex = 0; |
| 308 | | 315 | |
| 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]; |
| 318 | | 325 | |
| ... | @@ -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 | } |
| 338 | | 348 | |
| 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 | } |
| 359 | | 369 | |
| 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 | } |
| 371 | | 381 | |
| | 382 | domListNav.innerHTML = ""; |
| | 383 | domListNav.appendChild(domListNavFragment); |
| 372 | domSectNav.classList.remove("hidden"); | 384 | domSectNav.classList.remove("hidden"); |
| 373 | } | 385 | } |
| 374 | | 386 | |
| ... | @@ -401,9 +413,9 @@ | ... | @@ -401,9 +413,9 @@ |
| 401 | }); | 413 | }); |
| 402 | | 414 | |
| 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 | } |
| 416 | | 428 | |
| | 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 | } |
| 456 | | 470 | |
| 457 | function resizeDomListDl(dlDom, desiredLen) { | 471 | function createDomListFragment(desiredLen, templateHtml) { |
| 458 | // add the missing dom entries | 472 | 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 | } |
| 481 | | 476 | |
| 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 | }); |
| 833 | | 828 | |
| 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 | } |
| 1023 | | 1020 | |
| 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 | } |
| 1046 | | 1047 | |
| 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 | } |
| 1058 | | 1061 | |
| 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]; |
| 1064 | | 1067 | |
| 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 | } |
| 1079 | | 1084 | |
| 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>'); |
| 1082 | | 1087 | |
| 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]; |
| 1088 | | 1093 | |
| 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); |
| 1090 | | 1095 | |
| ... | @@ -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 | } |
| 1112 | | 1119 | |
| 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]; |
| 1119 | | 1126 | |
| 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 | } |
| 1139 | | 1148 | |
| 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]; |
| 1146 | | 1155 | |
| 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 | } |
| 1841 | | 1852 | |
| | 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 @@ |
| 1848 | | 1866 | |
| 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 | } |
| 1921 | | 1940 | |
| 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 | }); |
| 1930 | | 1947 | |
| | 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(); | | |
| 1940 | | 1964 | |
| | 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 | } |