bitfront-library
Version:
Angular CLI project with components and classes used by other Angular projects of the BIT foundation.
150 lines • 7.18 kB
JavaScript
;
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.BaseTableViewComponent = void 0;
var core_1 = require("@angular/core");
var table_1 = require("primeng/table");
var moment = require("moment");
var domain_cached_service_1 = require("../../shared/service/domain-cached.service");
var tableview_service_1 = require("../../shared/service/tableview.service");
var base_filter_1 = require("../shared/base.filter");
var i0 = require("@angular/core");
var i1 = require("../../shared/service/domain-cached.service");
var i2 = require("../../shared/service/tableview.service");
var _c0 = ["dataTable"];
/**
* Clase base de los componentes TableView
*/
var BaseTableViewComponent = /** @class */ (function () {
function BaseTableViewComponent(domainCachedService, tableViewService) {
var _this = this;
this.totalItems = 0;
this.onPageChange = new core_1.EventEmitter();
this.csvSeparator = ",";
this.RESULTADOS_PAGE = base_filter_1.BaseFilter.RESULTADOS_PAGE; // se hace visible esta variable a cualquier subclase de tableview que pudiera necesitarla
this.domainCachedService = domainCachedService;
this.tableViewService = tableViewService;
this.subscriptionMessages = tableViewService.observableExport.subscribe(function (message) {
_this.exportCSV();
});
}
BaseTableViewComponent.prototype.exportCSV = function () {
var dt = this.dataTable;
if (dt == null) {
alert("Exportació no disponible");
return;
}
dt.exportCSV();
};
BaseTableViewComponent.prototype.getDataTable = function () {
return null;
};
BaseTableViewComponent.prototype.getColumna = function (record, field) {
return null;
};
BaseTableViewComponent.prototype.getColumnaDominio = function (dominio, valor) {
var domainMatch = dominio &&
dominio.find(function (obj) {
return obj.value == valor;
});
if (domainMatch) {
return domainMatch.label;
}
else if (valor) {
return String("??" + valor + "??");
}
return "";
};
BaseTableViewComponent.prototype.ngOnDestroy = function () {
this.subscriptionMessages.unsubscribe();
};
BaseTableViewComponent.prototype.pageChanged = function (event) {
console.log("pageChanged(" + event + ")");
this.onPageChange.emit(event.page + 1);
};
/**
* Método de ordenación de campos de fecha.
* @see Adaptación de: https://stackoverflow.com/questions/41181277/primeng-datatable-custom-sorting-or-filtering-angular-2
*/
BaseTableViewComponent.prototype.dateSort = function (event, field) {
var comparer = function (a, b) {
var formatedA = a[field] ? moment(a[field], "DD/MM/YYYY").format("YYYY-MM-DD") : "-";
var formatedB = b[field] ? moment(b[field], "DD/MM/YYYY").format("YYYY-MM-DD") : "-";
// let result = -1; if (moment(formatedB).isBefore(formatedA, 'day')) { result = 1; }
var result = formatedA.localeCompare(formatedB);
return result * event.order;
};
var strcmp = function (a, b) {
if (a.toString() < b.toString()) {
return -1;
}
if (a.toString() > b.toString()) {
return 1;
}
return 0;
};
this.items.sort(comparer);
this.items = __spreadArrays(this.items);
};
/**Función de ordenación de columnas de los p-table de prime */
BaseTableViewComponent.prototype.customColumnsSort = function (event, items) {
var field = event.field;
var vregexFecha = /^(0[1-9]|[1-2]\d|3[01])(\/)(0[1-9]|1[012])\2(\d{4})$/;
var vregexFechaHora = /^(0[1-9]|[1-2]\d|3[01])(\/)(0[1-9]|1[012])\2(\d{4}) [012][0-9]:[0-6][0-9]$/;
items.sort(function (a, b) {
// comparamos DD/MM/YYYY
if (vregexFecha.test(a[field]) && vregexFecha.test(b[field])) {
var fechaA = a[field].substring(6) + a[field].substring(3, 5) + a[field].substring(0, 2);
var fechaB = b[field].substring(6) + b[field].substring(3, 5) + b[field].substring(0, 2);
var sortDesc = fechaA < fechaB ? (event.order === 1 ? 1 : -1) : 0;
return fechaA > fechaB ? (event.order === 1 ? -1 : 1) : sortDesc;
}
// comparamos DD/MM/YYYY HH:MM
else if (vregexFechaHora.test(a[field]) && vregexFechaHora.test(b[field])) {
var fechaHoraA = a[field].substring(6, 10) +
a[field].substring(3, 5) +
a[field].substring(0, 2) +
a[field].substring(11, 13) +
a[field].substring(14);
var fechaHoraB = b[field].substring(6, 10) +
b[field].substring(3, 5) +
b[field].substring(0, 2) +
b[field].substring(11, 13) +
b[field].substring(14);
var sortDesc = fechaHoraA < fechaHoraB ? (event.order === 1 ? 1 : -1) : 0;
return fechaHoraA > fechaHoraB ? (event.order === 1 ? -1 : 1) : sortDesc;
}
else {
var sortDesc = a[field] < b[field] ? (event.order === 1 ? 1 : -1) : 0;
return a[field] > b[field] ? (event.order === 1 ? -1 : 1) : sortDesc;
}
});
return __spreadArrays(items);
};
BaseTableViewComponent.ɵfac = function BaseTableViewComponent_Factory(t) { return new (t || BaseTableViewComponent)(i0.ɵɵdirectiveInject(i1.DomainCachedService), i0.ɵɵdirectiveInject(i2.TableViewService)); };
BaseTableViewComponent.ɵdir = i0.ɵɵdefineDirective({ type: BaseTableViewComponent, viewQuery: function BaseTableViewComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(_c0, 1);
} if (rf & 2) {
var _t = void 0;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dataTable = _t.first);
} }, inputs: { totalItems: "totalItems" }, outputs: { onPageChange: "onPageChange" } });
return BaseTableViewComponent;
}());
exports.BaseTableViewComponent = BaseTableViewComponent;
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BaseTableViewComponent, [{
type: core_1.Directive
}], function () { return [{ type: i1.DomainCachedService }, { type: i2.TableViewService }]; }, { dataTable: [{
type: core_1.ViewChild,
args: ["dataTable"]
}], totalItems: [{
type: core_1.Input
}], onPageChange: [{
type: core_1.Output
}] }); })();
//# sourceMappingURL=base-tableview.component.js.map