Skip to content

Commit 1d107b5

Browse files
committed
Add selectors to filter based on retains_structure
1 parent 9490f8d commit 1d107b5

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

index.html

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,13 @@ <h1>JSONBench — a Benchmark For Data Analytics On JSON</h1>
414414
<a class="selector" id="selector-metric-quality">Data Quality</a>
415415
</td>
416416
</tr>
417+
<tr>
418+
<th>Retain Structure: </th>
419+
<td id="selectors_retain_structure">
420+
<a class="selector selector-active" id="selector-retain-structure-yes">Yes</a>
421+
<a class="selector" id="selector-retain-structure-no">No</a>
422+
</td>
423+
</tr>
417424
</table>
418425

419426
<table class="stick-left comparison">
@@ -457,6 +464,7 @@ <h2>Detailed Comparison</h2>
457464
"scale": 1000_000_000,
458465
"metric": "hot",
459466
"queries": [],
467+
"retain_structure": {"yes": true, "no": false}
460468
};
461469

462470
let theme = 'light';
@@ -564,6 +572,27 @@ <h2>Detailed Comparison</h2>
564572
document.getElementById('selector-metric-size').addEventListener('click', e => { selectors.metric = 'size'; render(); updateHistory(); });
565573
document.getElementById('selector-metric-quality').addEventListener('click', e => { selectors.metric = 'quality'; render(); updateHistory(); });
566574

575+
document.getElementById('selector-retain-structure-yes').addEventListener('click', e => {
576+
selectors.retain_structure.yes = !selectors.retain_structure.yes;
577+
if (selectors.retain_structure.yes) {
578+
e.target.classList.add('selector-active');
579+
} else {
580+
e.target.classList.remove('selector-active');
581+
}
582+
render();
583+
updateHistory();
584+
});
585+
document.getElementById('selector-retain-structure-no').addEventListener('click', e => {
586+
selectors.retain_structure.no = !selectors.retain_structure.no;
587+
if (selectors.retain_structure.no) {
588+
e.target.classList.add('selector-active');
589+
} else {
590+
e.target.classList.remove('selector-active');
591+
}
592+
render();
593+
updateHistory();
594+
});
595+
567596
selectors.queries = queries.map(() => true);
568597

569598
function updateSelectors() {
@@ -574,6 +603,12 @@ <h2>Detailed Comparison</h2>
574603
[...document.getElementById('selectors_run').querySelectorAll('a')].map(elem => {
575604
elem.className = elem.id == 'selector-metric-' + selectors.metric ? 'selector selector-active' : 'selector' });
576605

606+
// Update retain structure buttons state
607+
document.getElementById('selector-retain-structure-yes').className =
608+
selectors.retain_structure.yes ? 'selector selector-active' : 'selector';
609+
document.getElementById('selector-retain-structure-no').className =
610+
selectors.retain_structure.no ? 'selector selector-active' : 'selector';
611+
577612
[...document.querySelectorAll('.query-checkbox')].map((elem, i) => { elem.checked = selectors.queries[i] });
578613
}
579614

@@ -774,7 +809,11 @@ <h2>Detailed Comparison</h2>
774809

775810
let filtered_data = data.filter(elem =>
776811
(selectors.system[elem.system] || (selectors.metric == 'size' && elem.fake)) &&
777-
selectors.scale == elem.dataset_size);
812+
selectors.scale == elem.dataset_size &&
813+
(
814+
(selectors.retain_structure.yes && elem.retains_structure === "yes") ||
815+
(selectors.retain_structure.no && elem.retains_structure === "no")
816+
));
778817

779818
let nothing_selected_elem = document.getElementById('nothing-selected');
780819
if (filtered_data.length == 0) {
@@ -921,13 +960,21 @@ <h2>Detailed Comparison</h2>
921960
window.onpopstate = function(event) {
922961
if (!event.state) { return; }
923962
selectors = event.state;
963+
// Ensure retain_structure exists in loaded state
964+
if (!selectors.retain_structure) {
965+
selectors.retain_structure = {"yes": true, "no": false};
966+
}
924967
render();
925968
updateSelectors();
926969
};
927970

928971
if (window.location.hash) {
929972
try {
930973
selectors = JSON.parse(atob(window.location.hash.substring(1)));
974+
// Ensure retain_structure exists in loaded state
975+
if (!selectors.retain_structure) {
976+
selectors.retain_structure = {"yes": true, "no": false};
977+
}
931978
} catch {}
932979
}
933980

0 commit comments

Comments
 (0)