@angular-generic-table/core
Version:
A generic table component for Angular
113 lines (112 loc) • 12.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Pipe } from '@angular/core';
// unsupported: template constraints.
/**
* @template R
*/
export class GtSearchPipe {
constructor() {
/**
* Return property
*/
this.getProperty = function (array, key) {
for (let /** @type {?} */ i = 0; i < array.length; i++) {
if (array[i].objectKey === key) {
return array[i];
}
}
};
}
/**
* @param {?} allRows
* @param {?} searchTerms
* @param {?} gtInfo
* @param {?} settings
* @param {?} fields
* @param {?} refreshData
* @return {?}
*/
transform(allRows, searchTerms, gtInfo, settings, fields, refreshData) {
// if no search terms are defined...
if (!searchTerms || searchTerms.replace(/"/g, '').length === 0) {
// ...return all rows
const /** @type {?} */ length = allRows === null ? 0 : allRows.length;
gtInfo.recordsAfterSearch = length;
return allRows;
}
const /** @type {?} */ searchFunction = {};
const /** @type {?} */ fieldsTemp = [];
for (let /** @type {?} */ k = 0; k < fields.length; k++) {
const /** @type {?} */ field = fields[k];
// check if field should be included in global search
const /** @type {?} */ include = this.getProperty(settings, field.objectKey).search === false
? false
: true;
// if include...
if (include) {
// ...and if search function is defined...
if (typeof field.search === 'function') {
// ...add it as search function for field
searchFunction[field.objectKey] = field.search;
}
else if (typeof field.value === 'function') {
// ...add it as search function for field
searchFunction[field.objectKey] = field.value;
}
// ...push it to our fields array
fieldsTemp.push(field);
}
}
const /** @type {?} */ filteredRows = [];
searchTerms = typeof searchTerms === 'undefined' ? '' : searchTerms;
const /** @type {?} */ searchTermsArray = searchTerms.toLowerCase().match(/(".*"|[^\s]+)/g);
for (let /** @type {?} */ i = 0; i < allRows.length; i++) {
const /** @type {?} */ row = allRows[i];
let /** @type {?} */ string = '';
for (let /** @type {?} */ j = 0; j < fieldsTemp.length; j++) {
const /** @type {?} */ separator = j === 0 ? '' : ' & ';
string += searchFunction[fieldsTemp[j].objectKey]
? separator + searchFunction[fieldsTemp[j].objectKey](row, j)
: separator + row[fieldsTemp[j].objectKey];
}
string = string.toLowerCase();
let /** @type {?} */ match = true;
for (let /** @type {?} */ k = 0; k < searchTermsArray.length; k++) {
const /** @type {?} */ term = searchTermsArray[k].replace(/"/g, '');
match = string.indexOf(term) !== -1;
if (!match) {
break;
}
}
if (match) {
filteredRows.push(row);
}
}
gtInfo.recordsAfterSearch = filteredRows.length;
// gtInfo.refresh(filteredRows.length,gt);
return filteredRows;
}
}
GtSearchPipe.decorators = [
{ type: Pipe, args: [{
name: 'gtSearch'
},] },
];
function GtSearchPipe_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
GtSearchPipe.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
GtSearchPipe.ctorParameters;
/**
* Return property
* @type {?}
*/
GtSearchPipe.prototype.getProperty;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3Qtc2VhcmNoLnBpcGUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYW5ndWxhci1nZW5lcmljLXRhYmxlL2NvcmUvIiwic291cmNlcyI6WyJwaXBlcy9ndC1zZWFyY2gucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3BELE1BQU07Ozs7OzJCQUVpQixVQUFTLEtBQWlCLEVBQUUsR0FBVztZQUM1RCxHQUFHLENBQUMsQ0FBQyxxQkFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3ZDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDaEMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDaEI7YUFDRDtTQUNEOzs7Ozs7Ozs7OztJQUVELFNBQVMsQ0FDUixPQUFZLEVBQ1osV0FBbUIsRUFDbkIsTUFBcUIsRUFDckIsUUFBZ0MsRUFDaEMsTUFBb0MsRUFDcEMsV0FBbUI7O1FBR25CLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUVoRSx1QkFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1lBQ3JELE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7WUFDbkMsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNmO1FBRUQsdUJBQU0sY0FBYyxHQUFRLEVBQUUsQ0FBQztRQUMvQix1QkFBTSxVQUFVLEdBQWUsRUFBRSxDQUFD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QUFLLENBQUMsQ0FBQyxDQUFDO29CQUNaLEtBQUssQ0FBQztpQkFDTjthQUNEO1lBQ0QsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDWCxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCO1NBQ0Q7UUFDRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQzs7UUFFaEQsTUFBTSxDQUFDLFlBQVksQ0FBQztLQUNwQjs7O1lBM0ZELElBQUksU0FBQztnQkFDTCxJQUFJLEVBQUUsVUFBVTthQUNoQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEd0Q29uZmlnRmllbGQgfSBmcm9tICcuLi9pbnRlcmZhY2VzL2d0LWNvbmZpZy1maWVsZCc7XG5pbXBvcnQgeyBHdFJvdyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3Qtcm93JztcbmltcG9ydCB7IEd0Q29uZmlnU2V0dGluZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3QtY29uZmlnLXNldHRpbmcnO1xuaW1wb3J0IHsgR3RJbmZvcm1hdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvZ3QtaW5mb3JtYXRpb24nO1xuXG5AUGlwZSh7XG5cdG5hbWU6ICdndFNlYXJjaCdcbn0pXG5leHBvcnQgY2xhc3MgR3RTZWFyY2hQaXBlPFIgZXh0ZW5kcyBHdFJvdz4gaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcblx0LyoqIFJldHVybiBwcm9wZXJ0eSAqL1xuXHRwcml2YXRlIGdldFByb3BlcnR5ID0gZnVuY3Rpb24oYXJyYXk6IEFycmF5PGFueT4sIGtleTogc3RyaW5nKSB7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKGFycmF5W2ldLm9iamVjdEtleSA9PT0ga2V5KSB7XG5cdFx0XHRcdHJldHVybiBhcnJheVtpXTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG5cblx0dHJhbnNmb3JtKFxuXHRcdGFsbFJvd3M6IGFueSxcblx0XHRzZWFyY2hUZXJtczogc3RyaW5nLFxuXHRcdGd0SW5mbzogR3RJbmZvcm1hdGlvbixcblx0XHRzZXR0aW5nczogQXJyYXk8R3RDb25maWdTZXR0aW5nPixcblx0XHRmaWVsZHM6IEFycmF5PEd0Q29uZmlnRmllbGQ8UiwgYW55Pj4sXG5cdFx0cmVmcmVzaERhdGE6IG51bWJlclxuXHQpOiBhbnkge1xuXHRcdC8vICBpZiBubyBzZWFyY2ggdGVybXMgYXJlIGRlZmluZWQuLi5cblx0XHRpZiAoIXNlYXJjaFRlcm1zIHx8IHNlYXJjaFRlcm1zLnJlcGxhY2UoL1wiL2csICcnKS5sZW5ndGggPT09IDApIHtcblx0XHRcdC8vIC4uLnJldHVybiBhbGwgcm93c1xuXHRcdFx0Y29uc3QgbGVuZ3RoID0gYWxsUm93cyA9PT0gbnVsbCA/IDAgOiBhbGxSb3dzLmxlbmd0aDtcblx0XHRcdGd0SW5mby5yZWNvcmRzQWZ0ZXJTZWFyY2ggPSBsZW5ndGg7XG5cdFx0XHRyZXR1cm4gYWxsUm93cztcblx0XHR9XG5cblx0XHRjb25zdCBzZWFyY2hGdW5jdGlvbjogYW55ID0ge307XG5cdFx0Y29uc3QgZmllbGRzVGVtcDogQXJyYXk8YW55PiA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgayA9IDA7IGsgPCBmaWVsZHMubGVuZ3RoOyBrKyspIHtcblx0XHRcdGNvbnN0IGZpZWxkID0gZmllbGRzW2tdO1xuXG5cdFx0XHQvLyBjaGVjayBpZiBmaWVsZCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gZ2xvYmFsIHNlYXJjaFxuXHRcdFx0Y29uc3QgaW5jbHVkZSA9XG5cdFx0XHRcdHRoaXMuZ2V0UHJvcGVydHkoc2V0dGluZ3MsIGZpZWxkLm9iamVjdEtleSkuc2VhcmNoID09PSBmYWxzZVxuXHRcdFx0XHRcdD8gZmFsc2Vcblx0XHRcdFx0XHQ6IHRydWU7XG5cblx0XHRcdC8vIGlmIGluY2x1ZGUuLi5cblx0XHRcdGlmIChpbmNsdWRlKSB7XG5cdFx0XHRcdC8vIC4uLmFuZCBpZiBzZWFyY2ggZnVuY3Rpb24gaXMgZGVmaW5lZC4uLlxuXHRcdFx0XHRpZiAodHlwZW9mIGZpZWxkLnNlYXJjaCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0XHRcdC8vIC4uLmFkZCBpdCBhcyBzZWFyY2ggZnVuY3Rpb24gZm9yIGZpZWxkXG5cdFx0XHRcdFx0c2VhcmNoRnVuY3Rpb25bZmllbGQub2JqZWN0S2V5XSA9IGZpZWxkLnNlYXJjaDtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyAuLi5pZiBubyBzZWFyY2ggZnVuY3Rpb24gaXMgZGVmaW5lZCBidXQgdmFsdWUgZnVuY3Rpb24gaXMgZGVmaW5lZC4uLlxuXHRcdFx0XHRlbHNlIGlmICh0eXBlb2YgZmllbGQudmFsdWUgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdFx0XHQvLyAuLi5hZGQgaXQgYXMgc2VhcmNoIGZ1bmN0aW9uIGZvciBmaWVsZFxuXHRcdFx0XHRcdHNlYXJjaEZ1bmN0aW9uW2ZpZWxkLm9iamVjdEtleV0gPSBmaWVsZC52YWx1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIC4uLnB1c2ggaXQgdG8gb3VyIGZpZWxkcyBhcnJheVxuXHRcdFx0XHRmaWVsZHNUZW1wLnB1c2goZmllbGQpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGZpbHRlcmVkUm93czogQXJyYXk8YW55PiA9IFtdO1xuXHRcdHNlYXJjaFRlcm1zID0gdHlwZW9mIHNlYXJjaFRlcm1zID09PSAndW5kZWZpbmVkJyA/ICcnIDogc2VhcmNoVGVybXM7XG5cdFx0Y29uc3Qgc2VhcmNoVGVybXNBcnJheSA9IHNlYXJjaFRlcm1zLnRvTG93ZXJDYXNlKCkubWF0Y2goLyhcIi4qXCJ8W15cXHNdKykvZyk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGFsbFJvd3MubGVuZ3RoOyBpKyspIHtcblx0XHRcdGNvbnN0IHJvdyA9IGFsbFJvd3NbaV07XG5cdFx0XHRsZXQgc3RyaW5nID0gJyc7XG5cblx0XHRcdGZvciAobGV0IGogPSAwOyBqIDwgZmllbGRzVGVtcC5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRjb25zdCBzZXBhcmF0b3IgPSBqID09PSAwID8gJycgOiAnICYgJztcblx0XHRcdFx0c3RyaW5nICs9IHNlYXJjaEZ1bmN0aW9uW2ZpZWxkc1RlbXBbal0ub2JqZWN0S2V5XVxuXHRcdFx0XHRcdD8gc2VwYXJhdG9yICsgc2VhcmNoRnVuY3Rpb25bZmllbGRzVGVtcFtqXS5vYmplY3RLZXldKHJvdywgailcblx0XHRcdFx0XHQ6IHNlcGFyYXRvciArIHJvd1tmaWVsZHNUZW1wW2pdLm9iamVjdEtleV07XG5cdFx0XHR9XG5cdFx0XHRzdHJpbmcgPSBzdHJpbmcudG9Mb3dlckNhc2UoKTtcblx0XHRcdGxldCBtYXRjaDogQm9vbGVhbiA9IHRydWU7XG5cblx0XHRcdGZvciAobGV0IGsgPSAwOyBrIDwgc2VhcmNoVGVybXNBcnJheS5sZW5ndGg7IGsrKykge1xuXHRcdFx0XHRjb25zdCB0ZXJtID0gc2VhcmNoVGVybXNBcnJheVtrXS5yZXBsYWNlKC9cIi9nLCAnJyk7XG5cdFx0XHRcdG1hdGNoID0gc3RyaW5nLmluZGV4T2YodGVybSkgIT09IC0xO1xuXG5cdFx0XHRcdGlmICghbWF0Y2gpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKG1hdGNoKSB7XG5cdFx0XHRcdGZpbHRlcmVkUm93cy5wdXNoKHJvdyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGd0SW5mby5yZWNvcmRzQWZ0ZXJTZWFyY2ggPSBmaWx0ZXJlZFJvd3MubGVuZ3RoO1xuXHRcdC8vIGd0SW5mby5yZWZyZXNoKGZpbHRlcmVkUm93cy5sZW5ndGgsZ3QpO1xuXHRcdHJldHVybiBmaWx0ZXJlZFJvd3M7XG5cdH1cbn1cbiJdfQ==