42 lines
1.4 KiB
JavaScript
42 lines
1.4 KiB
JavaScript
(function(){
|
|
var chkOk = document.getElementById('chk-completed');
|
|
var chkErr = document.getElementById('chk-incomplete');
|
|
var pnContainer = document.getElementById('filter-process-names');
|
|
|
|
// Build process_name checkboxes dynamically from table data
|
|
var rows = Array.from(document.querySelectorAll('tbody tr[data-process-name]'));
|
|
var names = [];
|
|
rows.forEach(function(tr) {
|
|
var n = tr.getAttribute('data-process-name');
|
|
if (n && names.indexOf(n) === -1) names.push(n);
|
|
});
|
|
names.sort();
|
|
|
|
var pnChecks = {}; // name → checkbox element
|
|
names.forEach(function(name) {
|
|
var lbl = document.createElement('label');
|
|
var chk = document.createElement('input');
|
|
chk.type = 'checkbox';
|
|
chk.checked = true;
|
|
chk.addEventListener('change', applyFilter);
|
|
pnChecks[name] = chk;
|
|
lbl.appendChild(chk);
|
|
lbl.appendChild(document.createTextNode(' ' + name));
|
|
pnContainer.appendChild(lbl);
|
|
});
|
|
|
|
function applyFilter() {
|
|
var showOk = chkOk.checked;
|
|
var showErr = chkErr.checked;
|
|
rows.forEach(function(tr) {
|
|
var done = tr.getAttribute('data-completed') === '1';
|
|
var pn = tr.getAttribute('data-process-name');
|
|
var pnOk = !pnChecks[pn] || pnChecks[pn].checked;
|
|
tr.style.display = (done ? showOk : showErr) && pnOk ? '' : 'none';
|
|
});
|
|
}
|
|
|
|
chkOk.addEventListener('change', applyFilter);
|
|
chkErr.addEventListener('change', applyFilter);
|
|
})();
|