multi value filtering added and font color fix for duplicates
This commit is contained in:
Regular → Executable
+17
-19
@@ -714,9 +714,12 @@
|
||||
const active = filterDefinitions
|
||||
.map(definition => ({
|
||||
definition,
|
||||
term: definition.input?.value.trim() || ''
|
||||
terms: String(definition.input?.value || '')
|
||||
.split(/\r?\n/)
|
||||
.map(term => term.trim())
|
||||
.filter(Boolean)
|
||||
}))
|
||||
.filter(item => item.term);
|
||||
.filter(item => item.terms.length);
|
||||
|
||||
if (usesServerFilters) {
|
||||
const serverTotal = Number.parseInt(table.dataset.serverFilterTotal || '', 10);
|
||||
@@ -737,13 +740,16 @@
|
||||
let visibleRows = 0;
|
||||
|
||||
[...tbody.rows].forEach(row => {
|
||||
const hidden = active.some(({ definition, term }) => {
|
||||
const hidden = active.some(({ definition, terms }) => {
|
||||
const cell = cellForDefinition(row, definition);
|
||||
const value = textValue(cell);
|
||||
if (definition.numericFilter) {
|
||||
return !numericFilterMatches(value, term);
|
||||
}
|
||||
return !searchTextMatches(value, term);
|
||||
const matchesAnyTerm = terms.some(term => {
|
||||
if (definition.numericFilter) {
|
||||
return numericFilterMatches(value, term);
|
||||
}
|
||||
return searchTextMatches(value, term);
|
||||
});
|
||||
return !matchesAnyTerm;
|
||||
});
|
||||
|
||||
row.hidden = hidden;
|
||||
@@ -824,11 +830,13 @@
|
||||
}
|
||||
|
||||
if (!header.dataset.noFilter && (!usesServerFilters || serverName)) {
|
||||
const input = document.createElement('input');
|
||||
input.type = 'search';
|
||||
const input = document.createElement('textarea');
|
||||
input.rows = 1;
|
||||
input.placeholder = header.dataset.filterPlaceholder || 'Filtern …';
|
||||
input.setAttribute('aria-label', `Filter ${textValue(header)}`);
|
||||
input.title = document.body.dataset.multiValueFilterHint || '';
|
||||
input.autocomplete = 'off';
|
||||
input.spellcheck = false;
|
||||
if (usesServerFilters) {
|
||||
input.name = `job_filter_${serverName}`;
|
||||
input.value = header.dataset.serverFilterValue || '';
|
||||
@@ -836,18 +844,8 @@
|
||||
applyFilters();
|
||||
submitServerFilters(false);
|
||||
});
|
||||
input.addEventListener('search', () => {
|
||||
applyFilters();
|
||||
submitServerFilters(false);
|
||||
});
|
||||
input.addEventListener('keydown', event => {
|
||||
if (event.key !== 'Enter') return;
|
||||
event.preventDefault();
|
||||
submitServerFilters(true);
|
||||
});
|
||||
} else {
|
||||
input.addEventListener('input', applyFilters);
|
||||
input.addEventListener('search', applyFilters);
|
||||
}
|
||||
|
||||
filterCell.appendChild(input);
|
||||
|
||||
Reference in New Issue
Block a user