angular-pipes
Version:
Angular pipes library
52 lines • 4.53 kB
JavaScript
import * as tslib_1 from "tslib";
import { Pipe, NgModule } from '@angular/core';
import { getProperty, isArray, isUndefined } from '../utils/utils';
var GroupByPipe = /** @class */ (function () {
function GroupByPipe() {
}
GroupByPipe.prototype.transform = function (input, prop) {
var e_1, _a;
if (!isArray(input)) {
return input;
}
var arr = {};
try {
for (var input_1 = tslib_1.__values(input), input_1_1 = input_1.next(); !input_1_1.done; input_1_1 = input_1.next()) {
var value = input_1_1.value;
var field = getProperty(value, prop);
if (isUndefined(arr[field])) {
arr[field] = [];
}
arr[field].push(value);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (input_1_1 && !input_1_1.done && (_a = input_1.return)) _a.call(input_1);
}
finally { if (e_1) throw e_1.error; }
}
return Object.keys(arr).map(function (key) { return ({ key: key, value: arr[key] }); });
};
GroupByPipe = tslib_1.__decorate([
Pipe({
name: 'groupBy',
})
], GroupByPipe);
return GroupByPipe;
}());
export { GroupByPipe };
var NgGroupByPipeModule = /** @class */ (function () {
function NgGroupByPipeModule() {
}
NgGroupByPipeModule = tslib_1.__decorate([
NgModule({
declarations: [GroupByPipe],
exports: [GroupByPipe],
})
], NgGroupByPipeModule);
return NgGroupByPipeModule;
}());
export { NgGroupByPipeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJhZ2dyZWdhdGUvZ3JvdXAtYnkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS25FO0lBQUE7SUFvQkEsQ0FBQztJQW5CQywrQkFBUyxHQUFULFVBQVUsS0FBVSxFQUFFLElBQVk7O1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELElBQU0sR0FBRyxHQUFrQyxFQUFFLENBQUM7O1lBRTlDLEtBQW9CLElBQUEsVUFBQSxpQkFBQSxLQUFLLENBQUEsNEJBQUEsK0NBQUU7Z0JBQXRCLElBQU0sS0FBSyxrQkFBQTtnQkFDZCxJQUFNLEtBQUssR0FBUSxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtvQkFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztpQkFDakI7Z0JBRUQsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN4Qjs7Ozs7Ozs7O1FBRUQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLENBQUMsRUFBRSxHQUFHLEtBQUEsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBMUIsQ0FBMEIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFuQlUsV0FBVztRQUh2QixJQUFJLENBQUM7WUFDSixJQUFJLEVBQUUsU0FBUztTQUNoQixDQUFDO09BQ1csV0FBVyxDQW9CdkI7SUFBRCxrQkFBQztDQUFBLEFBcEJELElBb0JDO1NBcEJZLFdBQVc7QUEwQnhCO0lBQUE7SUFBa0MsQ0FBQztJQUF0QixtQkFBbUI7UUFKL0IsUUFBUSxDQUFDO1lBQ1IsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1lBQzNCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN2QixDQUFDO09BQ1csbUJBQW1CLENBQUc7SUFBRCwwQkFBQztDQUFBLEFBQW5DLElBQW1DO1NBQXRCLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0sIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGdldFByb3BlcnR5LCBpc0FycmF5LCBpc1VuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWxzL3V0aWxzJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnZ3JvdXBCeScsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cEJ5UGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG4gIHRyYW5zZm9ybShpbnB1dDogYW55LCBwcm9wOiBzdHJpbmcpOiBBcnJheTxhbnk+IHtcclxuICAgIGlmICghaXNBcnJheShpbnB1dCkpIHtcclxuICAgICAgcmV0dXJuIGlucHV0O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFycjogeyBba2V5OiBzdHJpbmddOiBBcnJheTxhbnk+IH0gPSB7fTtcclxuXHJcbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIGlucHV0KSB7XHJcbiAgICAgIGNvbnN0IGZpZWxkOiBhbnkgPSBnZXRQcm9wZXJ0eSh2YWx1ZSwgcHJvcCk7XHJcblxyXG4gICAgICBpZiAoaXNVbmRlZmluZWQoYXJyW2ZpZWxkXSkpIHtcclxuICAgICAgICBhcnJbZmllbGRdID0gW107XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGFycltmaWVsZF0ucHVzaCh2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGFycikubWFwKGtleSA9PiAoeyBrZXksIHZhbHVlOiBhcnJba2V5XSB9KSk7XHJcbiAgfVxyXG59XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0dyb3VwQnlQaXBlXSxcclxuICBleHBvcnRzOiBbR3JvdXBCeVBpcGVdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdHcm91cEJ5UGlwZU1vZHVsZSB7fVxyXG4iXX0=