chiark / gitweb /
doxygen: show count of found results and search time.
authorVladimír Vondruš <mosra@centrum.cz>
Mon, 29 Jan 2018 13:09:46 +0000 (14:09 +0100)
committerVladimír Vondruš <mosra@centrum.cz>
Sat, 3 Feb 2018 09:51:55 +0000 (10:51 +0100)
doxygen/search.js
doxygen/test/test-search.js

index 66da5acc42775899a2b2dc689fe8a3e8a04c60a5..91861ce35e01387d377dbfe6858b2b140440800a 100644 (file)
@@ -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) {
index 5a3292d0bcec6eee5bc8d5034282dc94a8760314..0e80b73150283376287f796c3593d610b16c7a1b 100644 (file)
@@ -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'), [