FreeDatas2HTML/src/build/extensions/MixedFieldsRender.js

69 lines
2.7 KiB
JavaScript
Raw Normal View History

var errors = require("../errors.js");
var MixedFieldsRender = (function () {
function MixedFieldsRender(settings) {
this._fields = [];
this.fieldRenders = [];
this.datas = [];
this.settings = settings;
}
Object.defineProperty(MixedFieldsRender.prototype, "fields", {
get: function () {
return this._fields;
},
set: function (fields) {
if (fields.length === 0)
throw new Error(errors.renderNeedFields);
else
this._fields = fields;
},
enumerable: false,
configurable: true
});
MixedFieldsRender.prototype.rend2HTML = function () {
if (this._fields.length === 0)
throw new Error(errors.renderNeedFields);
else {
var datasHTML = this.settings.allBegining;
if (this.settings.fieldsNamesDisplaying !== undefined) {
var fieldsNamesRend = this.settings.fieldsNamesDisplaying;
for (var i = 0; i < this._fields.length; i++)
fieldsNamesRend = fieldsNamesRend.replace("##" + i + "##", this._fields[i]);
datasHTML += fieldsNamesRend;
}
if (this.settings.linesBegining !== undefined)
datasHTML += this.settings.linesBegining;
for (var _i = 0, _a = this.datas; _i < _a.length; _i++) {
var row = _a[_i];
var lineRend = this.settings.datasLinesDisplaying;
var _loop_1 = function (i) {
var currentField = this_1._fields[i];
if (row[currentField] !== undefined) {
var rowRend = row[currentField];
var render = this_1.fieldRenders.find(function (item) {
return item.name === currentField;
});
if (render !== undefined)
rowRend = render.rend2HTML(row);
lineRend = lineRend.replace(new RegExp("##" + i + "##", "g"), rowRend);
}
else
lineRend = lineRend.replace(new RegExp("##" + i + "##", "g"), "");
};
var this_1 = this;
for (var i = 0; i < this._fields.length; i++) {
_loop_1(i);
}
datasHTML += lineRend;
}
if (this.settings.linesEnding !== undefined)
datasHTML += this.settings.linesEnding;
datasHTML += this.settings.allEnding;
return datasHTML;
}
};
return MixedFieldsRender;
}());
export { MixedFieldsRender };
export { FreeDatas2HTML } from "../FreeDatas2HTML";
export { errors };