meshviewer/lib/filters/hostname.js

43 lines
949 B
JavaScript

define(function () {
'use strict';
return function () {
var refreshFunctions = [];
var timer;
var input = document.createElement('input');
function refresh() {
clearTimeout(timer);
timer = setTimeout(function () {
refreshFunctions.forEach(function (f) {
f();
});
}, 250);
}
function run(d) {
return d.hostname.toLowerCase().includes(input.value.toLowerCase());
}
function setRefresh(f) {
refreshFunctions.push(f);
}
function render(el) {
input.type = 'search';
input.placeholder = _.t('sidebar.nodeFilter');
input.setAttribute('aria-label', _.t('sidebar.nodeFilter'));
input.addEventListener('input', refresh);
el.classList.add('filter-node');
el.classList.add('ion-filter');
el.appendChild(input);
}
return {
run: run,
setRefresh: setRefresh,
render: render
};
};
});