angular-pipes
Version:
Angular pipes library
35 lines • 3.69 kB
JavaScript
import * as tslib_1 from "tslib";
import { Pipe, NgModule } from '@angular/core';
import { getProperty, isArray, isUndefined } from '../utils/utils';
let GroupByPipe = class GroupByPipe {
transform(input, prop) {
if (!isArray(input)) {
return input;
}
const arr = {};
for (const value of input) {
const field = getProperty(value, prop);
if (isUndefined(arr[field])) {
arr[field] = [];
}
arr[field].push(value);
}
return Object.keys(arr).map(key => ({ key, value: arr[key] }));
}
};
GroupByPipe = tslib_1.__decorate([
Pipe({
name: 'groupBy',
})
], GroupByPipe);
export { GroupByPipe };
let NgGroupByPipeModule = class NgGroupByPipeModule {
};
NgGroupByPipeModule = tslib_1.__decorate([
NgModule({
declarations: [GroupByPipe],
exports: [GroupByPipe],
})
], NgGroupByPipeModule);
export { NgGroupByPipeModule };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2FuZ3VsYXItcGlwZXMvIiwic291cmNlcyI6WyJhZ2dyZWdhdGUvZ3JvdXAtYnkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBS25FLElBQWEsV0FBVyxHQUF4QixNQUFhLFdBQVc7SUFDdEIsU0FBUyxDQUFDLEtBQVUsRUFBRSxJQUFZO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDbkIsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELE1BQU0sR0FBRyxHQUFrQyxFQUFFLENBQUM7UUFFOUMsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUU7WUFDekIsTUFBTSxLQUFLLEdBQVEsV0FBVyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUU1QyxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtnQkFDM0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNqQjtZQUVELEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDeEI7UUFFRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRixDQUFBO0FBcEJZLFdBQVc7SUFIdkIsSUFBSSxDQUFDO1FBQ0osSUFBSSxFQUFFLFNBQVM7S0FDaEIsQ0FBQztHQUNXLFdBQVcsQ0FvQnZCO1NBcEJZLFdBQVc7QUEwQnhCLElBQWEsbUJBQW1CLEdBQWhDLE1BQWEsbUJBQW1CO0NBQUcsQ0FBQTtBQUF0QixtQkFBbUI7SUFKL0IsUUFBUSxDQUFDO1FBQ1IsWUFBWSxFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzNCLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztLQUN2QixDQUFDO0dBQ1csbUJBQW1CLENBQUc7U0FBdEIsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZ2V0UHJvcGVydHksIGlzQXJyYXksIGlzVW5kZWZpbmVkIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuQFBpcGUoe1xyXG4gIG5hbWU6ICdncm91cEJ5JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEdyb3VwQnlQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbiAgdHJhbnNmb3JtKGlucHV0OiBhbnksIHByb3A6IHN0cmluZyk6IEFycmF5PGFueT4ge1xyXG4gICAgaWYgKCFpc0FycmF5KGlucHV0KSkge1xyXG4gICAgICByZXR1cm4gaW5wdXQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXJyOiB7IFtrZXk6IHN0cmluZ106IEFycmF5PGFueT4gfSA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgdmFsdWUgb2YgaW5wdXQpIHtcclxuICAgICAgY29uc3QgZmllbGQ6IGFueSA9IGdldFByb3BlcnR5KHZhbHVlLCBwcm9wKTtcclxuXHJcbiAgICAgIGlmIChpc1VuZGVmaW5lZChhcnJbZmllbGRdKSkge1xyXG4gICAgICAgIGFycltmaWVsZF0gPSBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYXJyW2ZpZWxkXS5wdXNoKHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYXJyKS5tYXAoa2V5ID0+ICh7IGtleSwgdmFsdWU6IGFycltrZXldIH0pKTtcclxuICB9XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbR3JvdXBCeVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtHcm91cEJ5UGlwZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0dyb3VwQnlQaXBlTW9kdWxlIHt9XHJcbiJdfQ==