class Monitor {
constructor() {
this._items = new Map;
this._list = htl.html`<tbody>`;
const view = htl.html`<table>${this._list}`;
view.value = this;
return view;
}
clear(prefix = '') {
for(let [key, item] of this._items.entries()) {
if(key.substr(0, prefix.length) !== prefix) continue;
if(item.node.parentNode) item.node.parentNode.removeChild(item.node);
this._items.delete(key);
}
}
_initItem(name) {
const label = htl.html`<td>${name}`;
const value = htl.html`<td>`;
const node = htl.html`<tr>${label}${value}`;
this._list.appendChild(node);
this._items.set(name, {label, value, node});
}
log(key, value) {
if(!this._items.has(key)) this._initItem(key);
return this._items.get(key).value.textContent = value;
}
}