var Search = {
trie: null,
map: null,
+ dataSize: 0,
symbolCount: 0,
maxResults: 0,
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 = '';
/* 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();
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) {
{
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);
{
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'), [
{
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'), [