Improved search responsiveness for many results

This commit is contained in:
Silvio Giebl 2020-06-14 20:25:22 +02:00
parent 0421ab7f82
commit 16628f2b8e

View File

@ -118,6 +118,7 @@ function searchLoaded(index, docs) {
var searchResults = document.getElementById('search-results');
var mainHeader = document.getElementById('main-header');
var currentInput;
var currentSearchIndex = 0;
function showSearch() {
document.documentElement.classList.add('search-active');
@ -128,6 +129,8 @@ function searchLoaded(index, docs) {
}
function update() {
currentSearchIndex++;
var input = searchInput.value;
if (input === '') {
hideSearch();
@ -180,8 +183,25 @@ function searchLoaded(index, docs) {
resultsList.classList.add('search-results-list');
searchResults.appendChild(resultsList);
for (var i in results) {
var result = results[i];
addResults(resultsList, results, 0, 10, 100, currentSearchIndex);
}
function addResults(resultsList, results, start, batchSize, batchMillis, searchIndex) {
if (searchIndex != currentSearchIndex) {
return;
}
for (var i = start; i < (start + batchSize); i++) {
if (i == results.length) {
return;
}
addResult(resultsList, results[i]);
}
setTimeout(function() {
addResults(resultsList, results, start + batchSize, batchSize, batchMillis, searchIndex);
}, batchMillis);
}
function addResult(resultsList, result) {
var doc = docs[result.ref];
var resultsListItem = document.createElement('li');
@ -335,7 +355,6 @@ function searchLoaded(index, docs) {
resultTitle.appendChild(resultRelUrl);
{%- endif %}
}
}
function addHighlightedText(parent, text, start, end, positions) {
var index = start;