multi value filtering added and font color fix for duplicates
@@ -5,7 +5,7 @@
|
||||
.table-scroll{overflow:auto}.table-hint{color:#667;font-size:13px}.multiline{white-space:pre-line;min-width:140px}#asset-table th[draggable=true]{cursor:grab;user-select:none}#asset-table th.dragging{opacity:.45}#asset-table{min-width:900px}
|
||||
|
||||
@media(max-width:700px){main{padding:0 10px}}
|
||||
.button-secondary{background:#546675}.column-filter-row th{padding:6px;background:#f5f7f9}.column-filter-row input{margin:0;min-width:110px;padding:6px;font-size:13px}.sortable-column{cursor:pointer;user-select:none;padding-right:24px;position:relative}.sortable-column.sort-asc::after{content:"▲";position:absolute;right:7px;font-size:10px}.sortable-column.sort-desc::after{content:"▼";position:absolute;right:7px;font-size:10px}tr[hidden]{display:none}.history-old,.history-new{white-space:pre-wrap}
|
||||
.button-secondary{background:#546675}.column-filter-row th{padding:6px;background:#f5f7f9}.column-filter-row input,.column-filter-row textarea{margin:0;min-width:110px;padding:6px;font-size:13px}.sortable-column{cursor:pointer;user-select:none;padding-right:24px;position:relative}.sortable-column.sort-asc::after{content:"▲";position:absolute;right:7px;font-size:10px}.sortable-column.sort-desc::after{content:"▼";position:absolute;right:7px;font-size:10px}tr[hidden]{display:none}.history-old,.history-new{white-space:pre-wrap}
|
||||
|
||||
/* Tabellen: fixierte Kopfzeilen und kompakte Aktionsschaltflächen */
|
||||
.sticky-table{max-height:calc(100vh - 170px);overflow:auto;border:1px solid #d8dde2;background:#fff}
|
||||
@@ -511,9 +511,17 @@ body.single-scroll-list .sticky-table + .muted{
|
||||
#asset-table tbody tr.duplicate-hidden{display:none!important}
|
||||
#asset-table tbody tr.duplicate-match td{
|
||||
background:#fff8d8;
|
||||
color:#1f2937;
|
||||
}
|
||||
#asset-table tbody tr.duplicate-match:hover td{
|
||||
background:#fff1ad;
|
||||
color:#1f2937;
|
||||
}
|
||||
html[data-theme="dark"] #asset-table tbody tr.duplicate-match td,
|
||||
html[data-theme="dark"] #asset-table tbody tr.duplicate-match td a,
|
||||
html[data-theme="dark"] #asset-table tbody tr.duplicate-match td .muted,
|
||||
html[data-theme="dark"] #asset-table tbody tr.duplicate-match td small{
|
||||
color:#1f2937!important;
|
||||
}
|
||||
|
||||
|
||||
@@ -1094,12 +1102,22 @@ body.asset-list-scroll-page .asset-list-page #asset-table-scroll{
|
||||
display:table-cell !important;
|
||||
}
|
||||
|
||||
.column-filter-row input[type="search"]{
|
||||
.column-filter-row input[type="search"],
|
||||
.column-filter-row textarea{
|
||||
display:block;
|
||||
width:100%;
|
||||
min-width:90px;
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.column-filter-row textarea{
|
||||
height:32px;
|
||||
min-height:32px;
|
||||
max-height:96px;
|
||||
resize:vertical;
|
||||
line-height:18px;
|
||||
overflow:auto;
|
||||
white-space:pre;
|
||||
}
|
||||
|
||||
/* Management pages use browser scrolling; avoid clipped sticky rows. */
|
||||
.management-table-scroll thead tr:first-child th,
|
||||
@@ -1123,7 +1141,8 @@ body.asset-list-scroll-page .asset-list-page #asset-table-scroll{
|
||||
|
||||
|
||||
/* v0.4.0.8: clearly visible active table filters */
|
||||
.column-filter-row input[type="search"]{
|
||||
.column-filter-row input[type="search"],
|
||||
.column-filter-row textarea{
|
||||
transition:
|
||||
background-color .15s ease,
|
||||
border-color .15s ease,
|
||||
@@ -1134,7 +1153,8 @@ body.asset-list-scroll-page .asset-list-page #asset-table-scroll{
|
||||
background:#fff2c7;
|
||||
}
|
||||
|
||||
.column-filter-row input[type="search"].filter-input-active{
|
||||
.column-filter-row input[type="search"].filter-input-active,
|
||||
.column-filter-row textarea.filter-input-active{
|
||||
background:#fff7d8;
|
||||
border-color:#cf9b16;
|
||||
box-shadow:
|
||||
@@ -1143,7 +1163,8 @@ body.asset-list-scroll-page .asset-list-page #asset-table-scroll{
|
||||
font-weight:600;
|
||||
}
|
||||
|
||||
.column-filter-row input[type="search"].filter-input-active:focus{
|
||||
.column-filter-row input[type="search"].filter-input-active:focus,
|
||||
.column-filter-row textarea.filter-input-active:focus{
|
||||
background:#fff9e5;
|
||||
border-color:#a87500;
|
||||
box-shadow:
|
||||
@@ -3075,3 +3096,29 @@ table th.table-resizable-column-header > .table-column-resizer:focus-visible::af
|
||||
.image-upload-label{display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin-top:8px}
|
||||
html[data-theme="dark"] .standard-image-library{border-color:#46515d}
|
||||
html[data-theme="dark"] .standard-image-choice{border-color:#46515d}
|
||||
|
||||
/* v0.5.5.67: line-based multi-value table filters and second-asset selector */
|
||||
.software-compare-select-dialog{
|
||||
width:min(560px,92vw);
|
||||
}
|
||||
.software-compare-select-dialog form{
|
||||
padding:0;
|
||||
border:0;
|
||||
}
|
||||
.software-compare-select-dialog label{
|
||||
display:grid;
|
||||
gap:6px;
|
||||
}
|
||||
.software-compare-select-dialog input,
|
||||
.software-compare-select-dialog select{
|
||||
width:100%;
|
||||
}
|
||||
.software-compare-selection-status{
|
||||
min-height:1.25em;
|
||||
margin:0;
|
||||
}
|
||||
html[data-theme="dark"] .column-filter-row textarea.filter-input-active{
|
||||
background:#493d14;
|
||||
color:#fff2b3;
|
||||
border-color:#d4a735;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
@@ -24,7 +24,7 @@
|
||||
}
|
||||
|
||||
function filterControls(table) {
|
||||
return [...table.querySelectorAll('thead input, thead select')].filter(control => {
|
||||
return [...table.querySelectorAll('thead input, thead select, thead textarea')].filter(control => {
|
||||
const type = (control.type || '').toLowerCase();
|
||||
return !['checkbox', 'radio', 'button', 'submit'].includes(type);
|
||||
});
|
||||
@@ -44,6 +44,12 @@
|
||||
try { state = JSON.parse(api.get(key) || 'null'); } catch (_) {}
|
||||
if (state?.field && (state.direction === 'asc' || state.direction === 'desc')) {
|
||||
table.assetApplySort(state.field, state.direction, {silent: true});
|
||||
} else if (table.dataset.defaultSortField) {
|
||||
table.assetApplySort(
|
||||
table.dataset.defaultSortField,
|
||||
table.dataset.defaultSortDirection === 'desc' ? 'desc' : 'asc',
|
||||
{silent: true}
|
||||
);
|
||||
} else {
|
||||
table.assetUpdateRowNumbers?.();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||