add exact match for filter and save filter value

This commit is contained in:
NightFox 2024-02-15 19:16:50 +03:00
parent cd40509b5b
commit 3ece3ebd0b

View File

@ -207,19 +207,26 @@ function buildTestResultImages(data) {
function buildData(table, images, data, sort, filter) {
function buildData(table, images, data, sort, filter, exact_match) {
if (sort) {
data = filterData(data);
}
if (filter) {
data = data.filter((d) => {
const test = d.test.includes(filter);
const channel = d.channel.includes(filter);
return test || channel;
})
if (exact_match) {
data = data.filter((d) => {
const test = d.test === filter;
const channel = d.channel === filter;
return test || channel;
});
} else {
data = data.filter((d) => {
const test = d.test.includes(filter);
const channel = d.channel.includes(filter);
return test || channel;
});
}
}
table.replaceChildren(...buildTestResultsTable(data));
images.replaceChildren(...buildTestResultImages(data));
@ -240,8 +247,8 @@ function buildData(table, images, data, sort, filter) {
saveToLocalStorage("rendertest_tablesort", sort);
}
const buildDataSlowMode = debounce((table, images, data, sort, filter) => {
buildData(table, images, data, sort, filter);
const buildDataSlowMode = debounce((table, images, data, sort, filter, exact_match) => {
buildData(table, images, data, sort, filter, exact_match);
}, ()=>{}, 250);
@ -319,7 +326,7 @@ window.onload = () => {
saveToLocalStorage("rendertest_switchfrequency", value);
}
let gridContainer, sidebarOptions, numberInput, rangeInput, table, images, vpaddin_input, filter;
let gridContainer, sidebarOptions, numberInput, rangeInput, table, images, vpaddin_input, filter, exactmatch_input;
const switchFrequency = loadFromLocalStorage("rendertest_switchfrequency", 700);
const tableSort = loadFromLocalStorage("rendertest_tablesort", false);
@ -331,6 +338,8 @@ window.onload = () => {
const diffMode = loadFromLocalStorage("rendertest_diffmode", "click");
const imageCompareMode = loadFromLocalStorage("rendertest_imagecomparemode", "switch");
const imagePosition = loadFromLocalStorage("rendertest_imageposition", "center");
const filter_value = loadFromLocalStorage("rendertest_filter", "");
const exactMatch = loadFromLocalStorage("rendertest_exactmatch", false);
let isPaused = loadFromLocalStorage("rendertest_paused", false);
if (theme) {
@ -530,13 +539,13 @@ window.onload = () => {
]),
Tag("label", null, null, [
Tag("input", {"type": "radio", "name": "sort_table", "value": "yes", ...uglyChecked(tableSort)}, null, null, "input", (e) => {
buildData(table, images, data, true, filter.value);
buildData(table, images, data, true, filter.value, exactmatch_input.checked);
}),
Text(" yes")
]),
Tag("label", null, null, [
Tag("input", {"type": "radio", "name": "sort_table", "value": "no", ...uglyChecked(!tableSort)}, null, null, "input", (e) => {
buildData(table, images, data, false, filter.value);
buildData(table, images, data, false, filter.value, exactmatch_input.checked);
}),
Text(" no")
])
@ -545,9 +554,17 @@ window.onload = () => {
Tag("div", {"class": "panel", "id": "table"}, null, [
Tag("h2", null, "List of things that are not perfect"),
Tag("label", {"class": "filter sticky"}, "Filter", [
filter = Tag("input", {"type": "input", "name": "filter", "value": ""}, null, null, "input", (e) => {
buildDataSlowMode(table, images, data, tableSort, e.target.value);
filter = Tag("input", {"type": "input", "name": "filter", "value": filter_value}, null, null, "input", (e) => {
saveToLocalStorage("rendertest_filter", e.target.value);
buildDataSlowMode(table, images, data, tableSort, e.target.value, exactmatch_input.checked);
}),
Tag("label", null, null, [
exactmatch_input = Tag("input", {"type": "checkbox", "name": "exactmatch", ...uglyChecked(exactMatch)}, null, null, "change", (e) => {
saveToLocalStorage("rendertest_exactmatch", e.target.checked);
buildDataSlowMode(table, images, data, tableSort, filter.value, exactmatch_input.checked);
}),
Text("exact match")
])
]),
table = Tag("div", {"id": "fail_table"})
])
@ -564,7 +581,7 @@ window.onload = () => {
])
document.body.appendChild(gridContainer);
buildData(table, images, data, tableSort);
buildData(table, images, data, tableSort, filter_value, exactmatch_input.checked);
// TODO: remove this
if (sidebarPos === "right") {