tlojs
Version:
The Last One - The last npm package you'll need to install
67 lines (66 loc) • 2.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TableRenderer = void 0;
var TableRenderer = /** @class */ (function () {
function TableRenderer(table) {
this.table = table;
}
TableRenderer.prototype.renderTo = function (domElement) {
if (!domElement) {
return;
}
this.ele = domElement;
this.ele.classList.add('tlo-table');
this.drawHeaders();
this.drawBody();
};
TableRenderer.prototype.clear = function () {
var _a;
if (this.body) {
(_a = this.body.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(this.body);
}
};
TableRenderer.prototype.drawBody = function () {
var _a;
var body = document.createElement('tbody');
this.body = body;
for (var _i = 0, _b = this.table.rows; _i < _b.length; _i++) {
var row = _b[_i];
var tr = document.createElement('tr');
for (var _c = 0, _d = row.cells; _c < _d.length; _c++) {
var cell = _d[_c];
var td = document.createElement('td');
td.innerText = cell.value + '';
tr.appendChild(td);
}
body.appendChild(tr);
}
(_a = this.ele) === null || _a === void 0 ? void 0 : _a.appendChild(body);
};
TableRenderer.prototype.drawHeaders = function () {
var _this = this;
var _a;
var headers = this.table.getHeaders();
var headEle = document.createElement('thead');
var _loop_1 = function (i) {
var header = headers[i];
var ele = document.createElement('th');
ele.innerText = header;
ele.onclick = function () {
var attr = ele.getAttribute('ascending');
var isAscending = attr === 'true';
ele.setAttribute('ascending', !isAscending + '');
_this.table.sort(i, !isAscending);
_this.clear();
_this.drawBody();
};
headEle.appendChild(ele);
};
for (var i = 0; i < headers.length; i++) {
_loop_1(i);
}
(_a = this.ele) === null || _a === void 0 ? void 0 : _a.appendChild(headEle);
};
return TableRenderer;
}());
exports.TableRenderer = TableRenderer;