mirror of
https://github.com/ntop/ntopng.git
synced 2026-05-02 17:00:10 +00:00
56 lines
No EOL
1.7 KiB
JavaScript
56 lines
No EOL
1.7 KiB
JavaScript
import WidgetTemplate from "./default-template.js";
|
|
|
|
export default class TableTemplate extends WidgetTemplate {
|
|
|
|
constructor(params) {
|
|
super(params);
|
|
}
|
|
|
|
_generateBody() {
|
|
|
|
const tbody = document.createElement('tbody');
|
|
for (let row of this._data.rows) {
|
|
const thRow = document.createElement('tr');
|
|
for (let data of row) {
|
|
const td = document.createElement('td');
|
|
td.insertAdjacentText('afterbegin', data);
|
|
thRow.appendChild(td);
|
|
}
|
|
tbody.appendChild(thRow);
|
|
}
|
|
|
|
return tbody;
|
|
}
|
|
|
|
render() {
|
|
|
|
const table = document.createElement('table');
|
|
table.setAttribute('class', 'table table-bordered');
|
|
|
|
// build header
|
|
const trHeader = document.createElement('tr');
|
|
for (let header of this._data.header) {
|
|
const th = document.createElement('th');
|
|
th.insertAdjacentText('afterbegin', header);
|
|
trHeader.appendChild(th);
|
|
}
|
|
|
|
table.appendChild(trHeader);
|
|
|
|
const tbody = this._generateBody();
|
|
table.appendChild(tbody);
|
|
if (this._defaultOptions.widget.intervalTime) {
|
|
|
|
const self = this;
|
|
this._intervalId = setInterval(async function() {
|
|
self._data = await self._updateData();
|
|
const newBody = self._generateBody();
|
|
// TODO: implement a native js solution
|
|
$(table).find('tbody').empty();
|
|
$(table).append(newBody);
|
|
}, this._defaultOptions.widget.intervalTime);
|
|
}
|
|
|
|
return super.render().appendChild(table);
|
|
}
|
|
} |