From: Vladimír Vondruš Date: Mon, 29 Jan 2018 13:09:46 +0000 (+0100) Subject: doxygen: show count of found results and search time. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=b336592576e74d9a571a71681e91bfb83377f0c7;p=blog.git doxygen: show count of found results and search time. --- diff --git a/doxygen/search.js b/doxygen/search.js index 66da5acc..91861ce3 100644 --- a/doxygen/search.js +++ b/doxygen/search.js @@ -27,6 +27,7 @@ var Search = { trie: null, map: null, + dataSize: 0, symbolCount: 0, maxResults: 0, @@ -62,6 +63,7 @@ var Search = { this.map = new DataView(buffer, mapOffset); /* Set initial properties */ + this.dataSize = Math.round(buffer.byteLength/102.4)/10; this.symbolCount = (this.map.getUint32(0, true) & 0x00ffffff)/4 - 1; this.maxResults = maxResults ? maxResults : 100; this.searchString = ''; @@ -70,8 +72,7 @@ var Search = { /* istanbul ignore if */ if(typeof document !== 'undefined') { document.getElementById('search-symbolcount').innerHTML = - this.symbolCount + ' symbols (' + - Math.round(buffer.byteLength/102.4)/10 + "kB)"; + this.symbolCount + " symbols (" + this.dataSize + " kB)"; document.getElementById('search-input').disabled = false; document.getElementById('search-input').placeholder = "Type something here …"; document.getElementById('search-input').focus(); @@ -377,7 +378,16 @@ function hideSearch() { if(typeof document !== 'undefined') { document.getElementById('search-input').oninput = function(event) { let value = document.getElementById('search-input').value; - Search.renderResults(value, Search.search(value)); + let prev = performance.now(); + let results = Search.search(value); + let after = performance.now(); + Search.renderResults(value, results); + if(value.trim().length) { + document.getElementById('search-symbolcount').innerHTML = + results.length + (results.length >= Search.maxResults ? '+' : '') + " results (" + Math.round((after - prev)*10)/10 + " ms)"; + } else + document.getElementById('search-symbolcount').innerHTML = + Search.symbolCount + " symbols (" + Search.dataSize + " kB)"; }; document.onkeydown = function(event) { diff --git a/doxygen/test/test-search.js b/doxygen/test/test-search.js index 5a3292d0..0e80b731 100644 --- a/doxygen/test/test-search.js +++ b/doxygen/test/test-search.js @@ -100,6 +100,7 @@ const { StringDecoder } = require('string_decoder'); { let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/searchdata.bin")); assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength))); + assert.equal(Search.dataSize, 0.6); assert.equal(Search.symbolCount, 7); assert.equal(Search.maxResults, 100); @@ -158,6 +159,7 @@ const { StringDecoder } = require('string_decoder'); { let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/searchdata.bin")); assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength), 3)); + assert.equal(Search.dataSize, 0.6); assert.equal(Search.symbolCount, 7); assert.equal(Search.maxResults, 3); assert.deepEqual(Search.search('m'), [ @@ -176,6 +178,7 @@ const { StringDecoder } = require('string_decoder'); { let b85 = fs.readFileSync(path.join(__dirname, "js-test-data/searchdata.b85"), {encoding: 'utf-8'}); assert.ok(Search.load(b85)); + assert.equal(Search.dataSize, 0.6); assert.equal(Search.symbolCount, 7); assert.equal(Search.maxResults, 100); assert.deepEqual(Search.search('min'), [