UNPKG

@angular-generic-table/core

Version:
182 lines (181 loc) 18.1 kB
/** * @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==