chiark / gitweb /
documentation: re-render symbol count if search box gets shown again.
authorVladimír Vondruš <mosra@centrum.cz>
Thu, 18 Jul 2019 11:18:12 +0000 (13:18 +0200)
committerVladimír Vondruš <mosra@centrum.cz>
Thu, 18 Jul 2019 15:41:49 +0000 (17:41 +0200)
The (stale) count of found symbols was preserved there even though the
search box got emptied again. Also deduplicated the code a bit.

documentation/search.js
documentation/test/test-search.js

index 8b0c9a5b2d75fac60ea6e4b294235cfda9778af0..0ebbf44f639013ac69f5ce9f1993f345d82c5baf 100644 (file)
 var Search = {
     formatVersion: 1, /* the data filename contains this number too */
 
+    dataSize: 0, /* used mainly by tests, not here */
+    symbolCount: '&hellip;',
     trie: null,
     map: null,
     typeMap: null,
-    dataSize: 0,
-    symbolCount: 0,
     maxResults: 0,
 
     /* Always contains at least the root node offset and then one node offset
@@ -83,15 +83,14 @@ var Search = {
 
         /* Set initial properties */
         this.dataSize = buffer.byteLength;
-        this.symbolCount = view.getUint16(4, true);
+        this.symbolCount = view.getUint16(4, true) + " symbols (" + Math.round(this.dataSize/102.4)/10 + " kB)";
         this.maxResults = maxResults ? maxResults : 100;
         this.searchString = '';
         this.searchStack = [this.trie.getUint32(0, true)];
 
         /* istanbul ignore if */
         if(typeof document !== 'undefined') {
-            document.getElementById('search-symbolcount').innerHTML =
-                this.symbolCount + " symbols (" + Math.round(this.dataSize/102.4)/10 + " kB)";
+            document.getElementById('search-symbolcount').innerHTML = this.symbolCount;
             document.getElementById('search-input').disabled = false;
             document.getElementById('search-input').placeholder = "Type something here …";
             document.getElementById('search-input').focus();
@@ -558,8 +557,7 @@ var Search = {
             document.getElementById('search-symbolcount').innerHTML =
                 results[0].length + (results.length >= this.maxResults ? '+' : '') + " results (" + Math.round((after - prev)*10)/10 + " ms)";
         } else
-            document.getElementById('search-symbolcount').innerHTML =
-                this.symbolCount + " symbols (" + Math.round(this.dataSize/102.4)/10 + " kB)";
+            document.getElementById('search-symbolcount').innerHTML = this.symbolCount;
     },
 };
 
@@ -595,6 +593,7 @@ function showSearch() {
     Search.canGoBackToHideSearch = true;
 
     updateForSearchVisible();
+    document.getElementById('search-symbolcount').innerHTML = Search.symbolCount;
     return false;
 }
 
index d99550ba2ed5417e20fc4ab75517ea57c3d2d3b2..9e8fb60d6df43705a6415d0efba4253fd1340eea 100644 (file)
@@ -106,7 +106,8 @@ const { StringDecoder } = require('string_decoder');
 {
     let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/empty.bin"));
     assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)));
-    assert.equal(Search.symbolCount, 0);
+    assert.equal(Search.dataSize, 26);
+    assert.equal(Search.symbolCount, "0 symbols (0 kB)");
     assert.deepEqual(Search.search(''), [[], '']);
 }
 
@@ -115,7 +116,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, 674);
-    assert.equal(Search.symbolCount, 7);
+    assert.equal(Search.symbolCount, "7 symbols (0.7 kB)");
     assert.equal(Search.maxResults, 100);
 
     /* Blow up */
@@ -224,7 +225,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, 674);
-    assert.equal(Search.symbolCount, 7);
+    assert.equal(Search.symbolCount, "7 symbols (0.7 kB)");
     assert.equal(Search.maxResults, 3);
     assert.deepEqual(Search.search('m'), [[
         { name: 'Math',
@@ -252,7 +253,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, 676); /* some padding on the end, that's okay */
-    assert.equal(Search.symbolCount, 7);
+    assert.equal(Search.symbolCount, "7 symbols (0.7 kB)");
     assert.equal(Search.maxResults, 100);
     assert.deepEqual(Search.search('min'), [[
         { name: 'Math::min(int, int)',
@@ -280,7 +281,7 @@ const { StringDecoder } = require('string_decoder');
     let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/unicode.bin"));
     assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)));
     assert.equal(Search.dataSize, 160);
-    assert.equal(Search.symbolCount, 2);
+    assert.equal(Search.symbolCount, "2 symbols (0.2 kB)");
     /* Both "Hýždě" and "Hárá" have common autocompletion to "h\xA1", which is
        not valid UTF-8, so it has to get truncated */
     assert.deepEqual(Search.search('h'), [[
@@ -318,7 +319,7 @@ const { StringDecoder } = require('string_decoder');
     let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/nested.bin"));
     assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)));
     assert.equal(Search.dataSize, 331);
-    assert.equal(Search.symbolCount, 4);
+    assert.equal(Search.symbolCount, "4 symbols (0.3 kB)");
     assert.deepEqual(Search.search('geo'), [[
         { name: 'Magnum::Math::Geometry',
           url: 'namespaceMagnum_1_1Math_1_1Geometry.html',
@@ -341,7 +342,7 @@ const { StringDecoder } = require('string_decoder');
     let buffer = fs.readFileSync(path.join(__dirname, "js-test-data/manyresults.bin"));
     assert.ok(Search.init(buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength), 10000));
     assert.equal(Search.dataSize, 6415);
-    assert.equal(Search.symbolCount, 128 + 3);
+    assert.equal(Search.symbolCount, "131 symbols (6.3 kB)");
     assert.equal(Search.maxResults, 10000);
     assert.deepEqual(Search.search('__init__')[0].length, 128 + 3);
     assert.deepEqual(Search.search('__init__')[1], '');