Skip to content

Commit 1261998

Browse files
committed
Improve search, APIs and tests
1 parent f659096 commit 1261998

16 files changed

+3820
-1685
lines changed

Diff for: .prettierignore

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/docs
2+
/coverage
3+
/node_modules
4+
/.idea
5+
/.cache

Diff for: docs-src/demo.ts

+22-26
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,7 @@ const demoData = {
55
simpleData: {
66
element1: 'str',
77
element2: 1234,
8-
element3: [
9-
23,
10-
43,
11-
true,
12-
false,
13-
null,
14-
{ name: 'special' },
15-
{}
16-
],
8+
element3: [23, 43, true, false, null, { name: 'special' }, {}],
179
element4: [],
1810
element5: 'this should be some long text\nwith line break',
1911
element6: {
@@ -38,19 +30,20 @@ const demoData = {
3830
}
3931
}
4032
return list;
41-
}())
33+
})()
4234
};
4335

44-
4536
const codeElement = document.getElementById('code') as HTMLTextAreaElement;
4637
const viewerElement = document.getElementById('viewer') as HTMLDivElement;
4738
const pathsElement = document.getElementById('paths') as HTMLTextAreaElement;
4839
const copiedElement = document.getElementById('copied') as HTMLInputElement;
4940
const searchElement = document.getElementById('search') as HTMLInputElement;
50-
const searchInfoElement = document.getElementById('searchInfo') as HTMLSpanElement;
41+
const searchInfoElement = document.getElementById(
42+
'searchInfo'
43+
) as HTMLSpanElement;
44+
let viewer = null;
5145
let rootNode = document.getElementById('rootNode') as JsonNodeElement;
5246

53-
5447
querySelectorArray('[data-load]').forEach((link: any) => {
5548
const load = link.getAttribute('data-load');
5649
if (demoData[load] && !link.loadListener) {
@@ -67,9 +60,10 @@ codeElement.addEventListener('input', e => {
6760
showData(codeElement.value);
6861
});
6962
searchElement.addEventListener('input', async e => {
70-
rootNode.closeNode();
7163
if (searchElement.value.length >= 2) {
72-
const cursor = await rootNode.openBySearch(new RegExp(searchElement.value, 'i'));
64+
const cursor = await viewer.openBySearch(
65+
new RegExp(searchElement.value, 'i')
66+
);
7367
searchInfoElement.textContent = cursor.matches.length + ' matches';
7468

7569
searchInfoElement.appendChild(document.createTextNode(' '));
@@ -92,42 +86,42 @@ searchElement.addEventListener('input', async e => {
9286
});
9387
nextBtn.textContent = 'Next';
9488
} else {
95-
rootNode.openBySearch(null);
89+
await rootNode.closeNode();
90+
viewer.openBySearch(null);
9691
searchInfoElement.textContent = '';
9792
}
98-
9993
});
10094

101-
10295
loadStructureData(demoData.simpleData);
10396

104-
function loadStructureData(structure) {
97+
async function loadStructureData(structure) {
10598
const text = JSON.stringify(structure, null, 2);
10699
codeElement.value = text;
107-
showData(text);
100+
await showData(text);
108101
showPaths();
109102
}
110103

111104
async function showData(data: string) {
112105
if (viewerElement.children.length) {
113106
viewerElement.removeChild(viewerElement.children[0]);
114107
}
108+
if (viewer) {
109+
viewer.destroy();
110+
}
115111
try {
116-
const viewer = await BigJsonViewerDom.fromData(data);
112+
viewer = await BigJsonViewerDom.fromData(data);
117113
rootNode = viewer.getRootElement();
118114
rootNode.id = 'rootNode';
119115
viewerElement.appendChild(rootNode);
120-
rootNode.openAll(1);
116+
await rootNode.openAll(1);
121117
setupRootNode();
122-
123118
} catch (e) {
124119
console.error('BigJsonViewer error', e);
125120
const errEl = document.createElement('div');
126121
errEl.classList.add('alert', 'alert-danger');
127122
errEl.appendChild(document.createTextNode(e.toString()));
128123
viewerElement.appendChild(errEl);
129124
}
130-
131125
}
132126

133127
function setupRootNode() {
@@ -151,8 +145,10 @@ function showPaths() {
151145
return;
152146
}
153147

154-
pathsElement.value = rootNode.getOpenPaths().map(path => path.join('.')).join('\n');
155-
148+
pathsElement.value = rootNode
149+
.getOpenPaths()
150+
.map(path => path.join('.'))
151+
.join('\n');
156152
}
157153

158154
function querySelectorArray(selector: string) {

Diff for: docs/big-json-viewer.worker.5c22c26c.js renamed to docs/big-json-viewer.worker.683ccf05.js

+7-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: docs/demo.6a2b6f91.map

-1
This file was deleted.

0 commit comments

Comments
 (0)