FreeDatas2HTML/src/build/extensions/SortingFieldsStandAlone.js

68 lines
2.9 KiB
JavaScript

import { FreeDatas2HTML } from "../FreeDatas2HTML";
var errors = require("../errors.js");
errors.needSortingFields = "Vous devez fournir au moins un champ de classement valide.";
var SortingFieldsStandAlone = (function () {
function SortingFieldsStandAlone(converter, elt, settings) {
if (settings === void 0) { settings = SortingFieldsStandAlone.defaultSettings; }
this._datasViewElt = { id: "", eltDOM: undefined };
this.datasSortingFields = [];
if (converter.fields.length === 0)
throw new Error(errors.sortingFieldNeedDatas);
this._datasViewElt = FreeDatas2HTML.checkInDOMById(elt);
this._converter = converter;
this.rendSettings = settings;
}
Object.defineProperty(SortingFieldsStandAlone.prototype, "converter", {
get: function () {
return this._converter;
},
enumerable: false,
configurable: true
});
Object.defineProperty(SortingFieldsStandAlone.prototype, "datasViewElt", {
get: function () {
return this._datasViewElt;
},
enumerable: false,
configurable: true
});
SortingFieldsStandAlone.prototype.rend2HTML = function (label) {
if (label === void 0) { label = ""; }
if (this.datasSortingFields.length === 0)
throw new Error(errors.needSortingFields);
var htmlContent = this.rendSettings.allBeginning.replace("#LABEL", label);
for (var _i = 0, _a = this.datasSortingFields; _i < _a.length; _i++) {
var field = _a[_i];
htmlContent += this.rendSettings.fieldBeginning + "<a href='#freeDatas2HTMLSorting" + field.datasFieldNb + "' id='freeDatas2HTMLSorting" + field.datasFieldNb + "'>" + this._converter.fields[field.datasFieldNb] + "</a>" + this.rendSettings.fieldEnding;
}
htmlContent += this.rendSettings.allEnding;
this._datasViewElt.eltDOM.innerHTML = htmlContent;
var _loop_1 = function (field) {
var sortingLink = document.getElementById("freeDatas2HTMLSorting" + field.datasFieldNb);
sortingLink.addEventListener("click", function (e) {
e.preventDefault();
if (field.order === undefined || field.order === "desc")
field.order = "asc";
else
field.order = "desc";
field.converter.datasSortedField = field;
field.converter.refreshView();
});
};
for (var _b = 0, _c = this.datasSortingFields; _b < _c.length; _b++) {
var field = _c[_b];
_loop_1(field);
}
};
SortingFieldsStandAlone.defaultSettings = {
allBeginning: "<span>#LABEL</span><ul>",
allEnding: "</ul>",
fieldBeginning: "<li>",
fieldEnding: "</li>",
};
return SortingFieldsStandAlone;
}());
export { SortingFieldsStandAlone };
export { FreeDatas2HTML, SortingField } from "../FreeDatas2HTML";
export { errors };