2021-11-01 11:25:17 +01:00
|
|
|
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 {
|
2021-11-04 15:50:40 +01:00
|
|
|
this._converter = converter;
|
|
|
|
this._datasFieldNb = datasFieldNb;
|
|
|
|
this._fieldsDOMSelector = fieldsDOMSelector;
|
2021-11-01 11:25:17 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
Object.defineProperty(SortingField.prototype, "converter", {
|
|
|
|
get: function () {
|
|
|
|
return this._converter;
|
|
|
|
},
|
2022-12-28 10:55:56 +01:00
|
|
|
enumerable: false,
|
2021-11-01 11:25:17 +01:00
|
|
|
configurable: true
|
|
|
|
});
|
2021-11-09 16:49:36 +01:00
|
|
|
Object.defineProperty(SortingField.prototype, "datasFieldNb", {
|
2021-11-01 11:25:17 +01:00
|
|
|
get: function () {
|
2021-11-09 16:49:36 +01:00
|
|
|
return this._datasFieldNb;
|
2021-11-01 11:25:17 +01:00
|
|
|
},
|
2022-12-28 10:55:56 +01:00
|
|
|
enumerable: false,
|
2021-11-01 11:25:17 +01:00
|
|
|
configurable: true
|
|
|
|
});
|
2021-11-09 16:49:36 +01:00
|
|
|
Object.defineProperty(SortingField.prototype, "fieldsDOMSelector", {
|
2021-11-01 11:25:17 +01:00
|
|
|
get: function () {
|
2021-11-09 16:49:36 +01:00
|
|
|
return this._fieldsDOMSelector;
|
2021-11-01 11:25:17 +01:00
|
|
|
},
|
2022-12-28 10:55:56 +01:00
|
|
|
enumerable: false,
|
2021-11-01 11:25:17 +01:00
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
Object.defineProperty(SortingField.prototype, "order", {
|
|
|
|
get: function () {
|
|
|
|
return this._order;
|
|
|
|
},
|
2021-12-09 16:09:46 +01:00
|
|
|
set: function (setting) {
|
|
|
|
this._order = setting;
|
|
|
|
},
|
2022-12-28 10:55:56 +01:00
|
|
|
enumerable: false,
|
2021-11-01 11:25:17 +01:00
|
|
|
configurable: true
|
|
|
|
});
|
|
|
|
SortingField.prototype.field2HTML = function () {
|
2021-11-04 15:50:40 +01:00
|
|
|
var fields = document.querySelectorAll(this.fieldsDOMSelector);
|
|
|
|
if (fields === undefined)
|
|
|
|
throw new Error(errors.sortingFieldsNotInHTML);
|
|
|
|
else if (fields.length !== this._converter.realFields2Rend().length)
|
|
|
|
throw new Error(errors.sortingFieldsNbFail);
|
|
|
|
else {
|
|
|
|
var htmlContent = void 0;
|
2021-11-09 16:49:36 +01:00
|
|
|
var index = this._converter.getFieldDisplayRank(this._datasFieldNb);
|
2021-11-04 15:50:40 +01:00
|
|
|
htmlContent = fields[index].innerHTML;
|
|
|
|
htmlContent = "<a href='#freeDatas2HTMLSorting" + this._datasFieldNb + "' id='freeDatas2HTMLSorting" + this._datasFieldNb + "'>" + htmlContent + "</a>";
|
|
|
|
fields[index].innerHTML = htmlContent;
|
|
|
|
var sortingElement = document.getElementById("freeDatas2HTMLSorting" + this._datasFieldNb), field_1 = this;
|
|
|
|
sortingElement.addEventListener("click", function (e) {
|
|
|
|
e.preventDefault();
|
|
|
|
var order = field_1._order;
|
|
|
|
if (order === undefined || order === "desc")
|
|
|
|
field_1._order = "asc";
|
|
|
|
else
|
|
|
|
field_1._order = "desc";
|
|
|
|
field_1._converter.datasSortedField = field_1;
|
|
|
|
field_1._converter.refreshView();
|
|
|
|
});
|
|
|
|
}
|
2021-11-01 11:25:17 +01:00
|
|
|
};
|
|
|
|
return SortingField;
|
|
|
|
}());
|
|
|
|
export { SortingField };
|