var compare = require('natural-orderby').compare; var errors = require("./errors.js"); var SortingField = (function () { function SortingField(converter, datasFieldNb, fieldsDOMSelector) { if (fieldsDOMSelector === void 0) { fieldsDOMSelector = "th"; } this._order = undefined; if (converter.fields.length === 0) throw new Error(errors.sortingFieldNeedDatas); else if (!converter.checkField2Rend(datasFieldNb)) throw new Error(errors.sortingFieldNotFound); else { var fields = document.querySelectorAll(fieldsDOMSelector); if (fields === undefined) throw new Error(errors.sortingFieldsNotInHTML); else if (fields.length !== converter.realFields2Rend().length) throw new Error(errors.sortingFieldsNbFail); else { this._converter = converter; this._datasFieldNb = datasFieldNb; this._fieldsDOMSelector = fieldsDOMSelector; } } } Object.defineProperty(SortingField.prototype, "converter", { get: function () { return this._converter; }, enumerable: true, configurable: true }); Object.defineProperty(SortingField.prototype, "fieldsDOMSelector", { get: function () { return this._fieldsDOMSelector; }, enumerable: true, configurable: true }); Object.defineProperty(SortingField.prototype, "datasFieldNb", { get: function () { return this._datasFieldNb; }, enumerable: true, configurable: true }); Object.defineProperty(SortingField.prototype, "order", { get: function () { return this._order; }, enumerable: true, configurable: true }); SortingField.prototype.field2HTML = function () { var fields = document.querySelectorAll(this._fieldsDOMSelector); var htmlContent = fields[this._datasFieldNb].innerHTML; htmlContent = "" + htmlContent + ""; fields[this._datasFieldNb].innerHTML = htmlContent; var sortingElement = document.getElementById("freeDatas2HTMLSorting" + this._datasFieldNb), field = this; sortingElement.addEventListener("click", function (e) { e.preventDefault(); var order = field._order; if (order === undefined || order === "desc") field._order = "asc"; else field._order = "desc"; field._converter.datasSortedField = field; field._converter.refreshView(); }); }; return SortingField; }()); export { SortingField };