@angular-generic-table/core
Version:
A generic table component for Angular
182 lines (181 loc) • 18.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Pipe } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser';
import { GtHighlightPipe } from './gt-highlight.pipe';
// unsupported: template constraints.
/**
* @template R
*/
var GtRenderPipe = /** @class */ (function () {
function GtRenderPipe(sanitizer, gtHighlightPipe) {
this.sanitizer = sanitizer;
this.gtHighlightPipe = gtHighlightPipe;
/**
* Sort by column order
*/
this.getColumnOrder = function (a, b) {
if (a.columnOrder < b.columnOrder) {
return -1;
}
if (a.columnOrder > b.columnOrder || typeof a.columnOrder === 'undefined') {
return 1;
}
return 0;
};
/**
* Sort by length
*/
this.getOrderByLength = function (a, b) {
return b.length - a.length;
};
/**
* Return property
*/
this.getProperty = function (array, key) {
for (var /** @type {?} */ i = 0; i < array.length; i++) {
if (array[i].objectKey === key) {
return array[i];
}
}
};
}
/**
* @param {?} row
* @param {?} settings
* @param {?} fields
* @param {?} updated
* @param {?} loading
* @param {?=} highlight
* @param {?=} searchString
* @return {?}
*/
GtRenderPipe.prototype.transform = /**
* @param {?} row
* @param {?} settings
* @param {?} fields
* @param {?} updated
* @param {?} loading
* @param {?=} highlight
* @param {?=} searchString
* @return {?}
*/
function (row, settings, fields, updated, loading, highlight, searchString) {
if (highlight === void 0) { highlight = false; }
// let arr = [{"temp":123,"name":"happy"},{"temp":456,"name":"dfgdfg"},{"temp":789,"name":"asdasd"}];
// console.log(arr,arr.map(function(item){return item.temp}));
// console.log(settings.map('objectKey'));
// console.log('render');
var /** @type {?} */ columns = [];
for (var /** @type {?} */ i = 0; i < settings.length; i++) {
if (settings[i].visible !== false && settings[i].enabled !== false) {
columns.push(settings[i].objectKey);
}
}
for (var /** @type {?} */ i = 0; i < fields.length; i++) {
// console.log(!row[fields[i].objectKey]);
if (fields[i].value &&
typeof fields[i].value === 'function' &&
!row.hasOwnProperty(fields[i].objectKey)) {
row[fields[i].objectKey] = loading ? '' : fields[i].value(row);
}
}
// console.log(row);
var /** @type {?} */ keys = [];
for (var /** @type {?} */ key in row) {
// console.log(key);
if (columns.indexOf(key) !== -1) {
var /** @type {?} */ fieldSetting = void 0;
for (var /** @type {?} */ i = 0; i < fields.length; i++) {
if (fields[i].objectKey === key) {
fieldSetting = fields[i];
// console.log(fieldSetting);
}
}
var /** @type {?} */ columnObject = {
objectKey: key,
sortValue: row[key]
};
// add component if defined
if (fieldSetting.columnComponent) {
columnObject.columnComponent = fieldSetting.columnComponent;
}
if (loading) {
columnObject.renderValue = row[key] !== null ? row[key] : '';
}
else if (highlight &&
searchString &&
this.getProperty(settings, key).search !== false) {
columnObject.renderValue =
fieldSetting.render && typeof fieldSetting.render === 'function'
? this.gtHighlightPipe.transform(fieldSetting.render(row), searchString)
: this.gtHighlightPipe.transform(row[key] !== null ? row[key] : '', searchString);
}
else {
columnObject.renderValue =
fieldSetting.render && typeof fieldSetting.render === 'function'
? this.sanitizer.bypassSecurityTrustHtml(fieldSetting.render(row))
: row[key] !== null
? row[key]
: '';
}
if (fieldSetting.click && typeof fieldSetting.click === 'function') {
columnObject.click = fieldSetting.click;
}
if (fieldSetting.expand) {
columnObject.expand = fieldSetting.expand;
}
keys.push(columnObject);
}
}
keys.sort(function (a, b) {
return columns.indexOf(a.objectKey) < columns.indexOf(b.objectKey)
? -1
: 1;
});
return keys;
};
GtRenderPipe.decorators = [
{ type: Pipe, args: [{
name: 'gtRender'
},] },
];
/** @nocollapse */
GtRenderPipe.ctorParameters = function () { return [
{ type: DomSanitizer, },
{ type: GtHighlightPipe, },
]; };
return GtRenderPipe;
}());
export { GtRenderPipe };
function GtRenderPipe_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
GtRenderPipe.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
GtRenderPipe.ctorParameters;
/**
* Sort by column order
* @type {?}
*/
GtRenderPipe.prototype.getColumnOrder;
/**
* Sort by length
* @type {?}
*/
GtRenderPipe.prototype.getOrderByLength;
/**
* Return property
* @type {?}
*/
GtRenderPipe.prototype.getProperty;
/** @type {?} */
GtRenderPipe.prototype.sanitizer;
/** @type {?} */
GtRenderPipe.prototype.gtHighlightPipe;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3QtcmVuZGVyLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW5ndWxhci1nZW5lcmljLXRhYmxlL2NvcmUvIiwic291cmNlcyI6WyJwaXBlcy9ndC1yZW5kZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBR3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7O0lBTXJELHNCQUNTLFdBQ0E7UUFEQSxjQUFTLEdBQVQsU0FBUztRQUNULG9CQUFlLEdBQWYsZUFBZTs7Ozs4QkFLQyxVQUFTLENBQWtCLEVBQUUsQ0FBa0I7WUFDdkUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ1Y7WUFDRCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLElBQUksT0FBTyxDQUFDLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7Z0JBQzNFLE1BQU0sQ0FBQyxDQUFDLENBQUM7YUFDVDtZQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDVDs7OztnQ0FHMEIsVUFBUyxDQUFNLEVBQUUsQ0FBTTtZQUNqRCxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQzNCOzs7OzJCQUdxQixVQUFTLEtBQWlCLEVBQUUsR0FBVztZQUM1RCxHQUFHLENBQUMsQ0FBQyxxQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FB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S0FBSyxDQUFDO2lCQUN4QztnQkFDRCxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDekIsWUFBWSxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO2lCQUMxQztnQkFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ3hCO1NBQ0Q7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVMsQ0FBTSxFQUFFLENBQU07WUFDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDSixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ0wsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLElBQUksQ0FBQztLQUNaOztnQkFwSUQsSUFBSSxTQUFDO29CQUNMLElBQUksRUFBRSxVQUFVO2lCQUNoQjs7OztnQkFQUSxZQUFZO2dCQUdaLGVBQWU7O3VCQU54Qjs7U0FXYSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3RDb25maWdTZXR0aW5nIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ndC1jb25maWctc2V0dGluZyc7XG5pbXBvcnQgeyBHdENvbmZpZ0ZpZWxkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ndC1jb25maWctZmllbGQnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBHdFJvdyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3Qtcm93JztcbmltcG9ydCB7IEd0UmVuZGVyRmllbGQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2d0LXJlbmRlci1maWVsZCc7XG5pbXBvcnQgeyBHdEhpZ2hsaWdodFBpcGUgfSBmcm9tICcuL2d0LWhpZ2hsaWdodC5waXBlJztcblxuQFBpcGUoe1xuXHRuYW1lOiAnZ3RSZW5kZXInXG59KVxuZXhwb3J0IGNsYXNzIEd0UmVuZGVyUGlwZTxSIGV4dGVuZHMgR3RSb3c+IGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG5cdGNvbnN0cnVjdG9yKFxuXHRcdHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG5cdFx0cHJpdmF0ZSBndEhpZ2hsaWdodFBpcGU6IEd0SGlnaGxpZ2h0UGlwZVxuXHQpIHt9XG5cblx0Ly8gVE9ETzogbW92ZSB0byBoZWxwZXIgZnVuY3Rpb25zXG5cdC8qKiBTb3J0IGJ5IGNvbHVtbiBvcmRlciAqL1xuXHRwcml2YXRlIGdldENvbHVtbk9yZGVyID0gZnVuY3Rpb24oYTogR3RDb25maWdTZXR0aW5nLCBiOiBHdENvbmZpZ1NldHRpbmcpIHtcblx0XHRpZiAoYS5jb2x1bW5PcmRlciA8IGIuY29sdW1uT3JkZXIpIHtcblx0XHRcdHJldHVybiAtMTtcblx0XHR9XG5cdFx0aWYgKGEuY29sdW1uT3JkZXIgPiBiLmNvbHVtbk9yZGVyIHx8IHR5cGVvZiBhLmNvbHVtbk9yZGVyID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIDE7XG5cdFx0fVxuXHRcdHJldHVybiAwO1xuXHR9O1xuXG5cdC8qKiBTb3J0IGJ5IGxlbmd0aCAqL1xuXHRwcml2YXRlIGdldE9yZGVyQnlMZW5ndGggPSBmdW5jdGlvbihhOiBhbnksIGI6IGFueSkge1xuXHRcdHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xuXHR9O1xuXG5cdC8qKiBSZXR1cm4gcHJvcGVydHkgKi9cblx0cHJpdmF0ZSBnZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uKGFycmF5OiBBcnJheTxhbnk+LCBrZXk6IHN0cmluZykge1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChhcnJheVtpXS5vYmplY3RLZXkgPT09IGtleSkge1xuXHRcdFx0XHRyZXR1cm4gYXJyYXlbaV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXG5cdHRyYW5zZm9ybShcblx0XHRyb3c6IGFueSxcblx0XHRzZXR0aW5nczogQXJyYXk8R3RDb25maWdTZXR0aW5nPixcblx0XHRmaWVsZHM6IEFycmF5PEd0Q29uZmlnRmllbGQ8UiwgYW55Pj4sXG5cdFx0dXBkYXRlZDogYm9vbGVhbixcblx0XHRsb2FkaW5nOiBib29sZWFuLFxuXHRcdGhpZ2hsaWdodDogYm9vbGVhbiA9IGZhbHNlLFxuXHRcdHNlYXJjaFN0cmluZz86IHN0cmluZ1xuXHQpOiBBcnJheTxHdFJlbmRlckZpZWxkPFIsIGFueT4+IHtcblx0XHQvLyBsZXQgYXJyID0gW3tcInRlbXBcIjoxMjMsXCJuYW1lXCI6XCJoYXBweVwifSx7XCJ0ZW1wXCI6NDU2LFwibmFtZVwiOlwiZGZnZGZnXCJ9LHtcInRlbXBcIjo3ODksXCJuYW1lXCI6XCJhc2Rhc2RcIn1dO1xuXHRcdC8vIGNvbnNvbGUubG9nKGFycixhcnIubWFwKGZ1bmN0aW9uKGl0ZW0pe3JldHVybiBpdGVtLnRlbXB9KSk7XG5cdFx0Ly8gY29uc29sZS5sb2coc2V0dGluZ3MubWFwKCdvYmplY3RLZXknKSk7XG5cblx0XHQvLyBjb25zb2xlLmxvZygncmVuZGVyJyk7XG5cdFx0Y29uc3QgY29sdW1uczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmIChzZXR0aW5nc1tpXS52aXNpYmxlICE9PSBmYWxzZSAmJiBzZXR0aW5nc1tpXS5lbmFibGVkICE9PSBmYWxzZSkge1xuXHRcdFx0XHRjb2x1bW5zLnB1c2goc2V0dGluZ3NbaV0ub2JqZWN0S2V5KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coIXJvd1tmaWVsZHNbaV0ub2JqZWN0S2V5XSk7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdGZpZWxkc1tpXS52YWx1ZSAmJlxuXHRcdFx0XHR0eXBlb2YgZmllbGRzW2ldLnZhbHVlID09PSAnZnVuY3Rpb24nICYmXG5cdFx0XHRcdCFyb3cuaGFzT3duUHJvcGVydHkoZmllbGRzW2ldLm9iamVjdEtleSlcblx0XHRcdCkge1xuXHRcdFx0XHRyb3dbZmllbGRzW2ldLm9iamVjdEtleV0gPSBsb2FkaW5nID8gJycgOiBmaWVsZHNbaV0udmFsdWUocm93KTtcblx0XHRcdH1cblx0XHR9XG5cdFx0Ly8gY29uc29sZS5sb2cocm93KTtcblx0XHRjb25zdCBrZXlzOiBBcnJheTxhbnk+ID0gW107XG5cdFx0Zm9yIChjb25zdCBrZXkgaW4gcm93KSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhrZXkpO1xuXHRcdFx0aWYgKGNvbHVtbnMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuXHRcdFx0XHRsZXQgZmllbGRTZXR0aW5nO1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmIChmaWVsZHNbaV0ub2JqZWN0S2V5ID09PSBrZXkpIHtcblx0XHRcdFx0XHRcdGZpZWxkU2V0dGluZyA9IGZpZWxkc1tpXTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGZpZWxkU2V0dGluZyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgY29sdW1uT2JqZWN0OiBHdFJlbmRlckZpZWxkPFIsIGFueT4gPSB7XG5cdFx0XHRcdFx0b2JqZWN0S2V5OiBrZXksXG5cdFx0XHRcdFx0c29ydFZhbHVlOiByb3dba2V5XVxuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdC8vIGFkZCBjb21wb25lbnQgaWYgZGVmaW5lZFxuXHRcdFx0XHRpZiAoZmllbGRTZXR0aW5nLmNvbHVtbkNvbXBvbmVudCkge1xuXHRcdFx0XHRcdGNvbHVtbk9iamVjdC5jb2x1bW5Db21wb25lbnQgPSBmaWVsZFNldHRpbmcuY29sdW1uQ29tcG9uZW50O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGxvYWRpbmcpIHtcblx0XHRcdFx0XHRjb2x1bW5PYmplY3QucmVuZGVyVmFsdWUgPSByb3dba2V5XSAhPT0gbnVsbCA/IHJvd1trZXldIDogJyc7XG5cdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0aGlnaGxpZ2h0ICYmXG5cdFx0XHRcdFx0c2VhcmNoU3RyaW5nICYmXG5cdFx0XHRcdFx0dGhpcy5nZXRQcm9wZXJ0eShzZXR0aW5ncywga2V5KS5zZWFyY2ggIT09IGZhbHNlXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGNvbHVtbk9iamVjdC5yZW5kZXJWYWx1ZSA9XG5cdFx0XHRcdFx0XHRmaWVsZFNldHRpbmcucmVuZGVyICYmIHR5cGVvZiBmaWVsZFNldHRpbmcucmVuZGVyID09PSAnZnVuY3Rpb24nXG5cdFx0XHRcdFx0XHRcdD8gdGhpcy5ndEhpZ2hsaWdodFBpcGUudHJhbnNmb3JtKFxuXHRcdFx0XHRcdFx0XHRcdFx0ZmllbGRTZXR0aW5nLnJlbmRlcihyb3cpLFxuXHRcdFx0XHRcdFx0XHRcdFx0c2VhcmNoU3RyaW5nXG5cdFx0XHRcdFx0XHRcdCAgKVxuXHRcdFx0XHRcdFx0XHQ6IHRoaXMuZ3RIaWdobGlnaHRQaXBlLnRyYW5zZm9ybShcblx0XHRcdFx0XHRcdFx0XHRcdHJvd1trZXldICE9PSBudWxsID8gcm93W2tleV0gOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdHNlYXJjaFN0cmluZ1xuXHRcdFx0XHRcdFx0XHQgICk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Y29sdW1uT2JqZWN0LnJlbmRlclZhbHVlID1cblx0XHRcdFx0XHRcdGZpZWxkU2V0dGluZy5yZW5kZXIgJiYgdHlwZW9mIGZpZWxkU2V0dGluZy5yZW5kZXIgPT09ICdmdW5jdGlvbidcblx0XHRcdFx0XHRcdFx0PyB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChmaWVsZFNldHRpbmcucmVuZGVyKHJvdykpXG5cdFx0XHRcdFx0XHRcdDogcm93W2tleV0gIT09IG51bGxcblx0XHRcdFx0XHRcdFx0XHQ/IHJvd1trZXldXG5cdFx0XHRcdFx0XHRcdFx0OiAnJztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChmaWVsZFNldHRpbmcuY2xpY2sgJiYgdHlwZW9mIGZpZWxkU2V0dGluZy5jbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdGNvbHVtbk9iamVjdC5jbGljayA9IGZpZWxkU2V0dGluZy5jbGljaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoZmllbGRTZXR0aW5nLmV4cGFuZCkge1xuXHRcdFx0XHRcdGNvbHVtbk9iamVjdC5leHBhbmQgPSBmaWVsZFNldHRpbmcuZXhwYW5kO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0a2V5cy5wdXNoKGNvbHVtbk9iamVjdCk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0a2V5cy5zb3J0KGZ1bmN0aW9uKGE6IGFueSwgYjogYW55KSB7XG5cdFx0XHRyZXR1cm4gY29sdW1ucy5pbmRleE9mKGEub2JqZWN0S2V5KSA8IGNvbHVtbnMuaW5kZXhPZihiLm9iamVjdEtleSlcblx0XHRcdFx0PyAtMVxuXHRcdFx0XHQ6IDE7XG5cdFx0fSk7XG5cdFx0cmV0dXJuIGtleXM7XG5cdH1cbn1cbiJdfQ==