air-lib
Version:
This is Air's angular component library
45 lines • 3.99 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Pipe } from '@angular/core';
var GroupByPipe = /** @class */ (function () {
function GroupByPipe() {
}
/**
* @param {?} collection
* @param {?} property
* @return {?}
*/
GroupByPipe.prototype.transform = /**
* @param {?} collection
* @param {?} property
* @return {?}
*/
function (collection, property) {
// prevents the application from breaking if the array of objects doesn't exist yet
if (!collection) {
return new Array();
}
/** @type {?} */
var groupedCollection = collection.reduce(function (previous, current) {
if (!previous[current[property]]) {
previous[current[property]] = [current];
}
else {
previous[current[property]].push(current);
}
return previous;
}, {});
// this will return an array of objects, each object containing a group of objects
return Object.keys(groupedCollection).map(function (key) { return ({ key: key, value: groupedCollection[key] }); });
};
GroupByPipe.decorators = [
{ type: Pipe, args: [{
name: 'groupBy'
},] }
];
return GroupByPipe;
}());
export { GroupByPipe };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtYnkucGlwZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2Fpci1saWIvIiwic291cmNlcyI6WyJsaWIvcGlwZXMvZ3JvdXAtYnkucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFFcEQ7SUFBQTtJQXdCQSxDQUFDOzs7Ozs7SUFuQkMsK0JBQVM7Ozs7O0lBQVQsVUFBVSxVQUFzQixFQUFFLFFBQWdCO1FBQ2hELG1GQUFtRjtRQUNuRixJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxJQUFJLEtBQUssRUFBTyxDQUFDO1NBQ3pCOztZQUVLLGlCQUFpQixHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsVUFBQyxRQUFRLEVBQUUsT0FBTztZQUM1RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN6QztpQkFBTTtnQkFDTCxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzNDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUVOLGtGQUFrRjtRQUNsRixPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBeEMsQ0FBd0MsQ0FBQyxDQUFDO0lBQzdGLENBQUM7O2dCQXZCRixJQUFJLFNBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCOztJQXNCRCxrQkFBQztDQUFBLEFBeEJELElBd0JDO1NBcEJZLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2dyb3VwQnknXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgR3JvdXBCeVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICB0cmFuc2Zvcm0oY29sbGVjdGlvbjogQXJyYXk8YW55PiwgcHJvcGVydHk6IHN0cmluZyk6IEFycmF5PGFueT4ge1xyXG4gICAgLy8gcHJldmVudHMgdGhlIGFwcGxpY2F0aW9uIGZyb20gYnJlYWtpbmcgaWYgdGhlIGFycmF5IG9mIG9iamVjdHMgZG9lc24ndCBleGlzdCB5ZXRcclxuICAgIGlmICghY29sbGVjdGlvbikge1xyXG4gICAgICByZXR1cm4gbmV3IEFycmF5PGFueT4oKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBncm91cGVkQ29sbGVjdGlvbiA9IGNvbGxlY3Rpb24ucmVkdWNlKChwcmV2aW91cywgY3VycmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXByZXZpb3VzW2N1cnJlbnRbcHJvcGVydHldXSkge1xyXG4gICAgICAgIHByZXZpb3VzW2N1cnJlbnRbcHJvcGVydHldXSA9IFtjdXJyZW50XTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwcmV2aW91c1tjdXJyZW50W3Byb3BlcnR5XV0ucHVzaChjdXJyZW50KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHByZXZpb3VzO1xyXG4gICAgfSwge30pO1xyXG5cclxuICAgIC8vIHRoaXMgd2lsbCByZXR1cm4gYW4gYXJyYXkgb2Ygb2JqZWN0cywgZWFjaCBvYmplY3QgY29udGFpbmluZyBhIGdyb3VwIG9mIG9iamVjdHNcclxuICAgIHJldHVybiBPYmplY3Qua2V5cyhncm91cGVkQ29sbGVjdGlvbikubWFwKGtleSA9PiAoeyBrZXksIHZhbHVlOiBncm91cGVkQ29sbGVjdGlvbltrZXldIH0pKTtcclxuICB9XHJcbn1cclxuIl19