/** * sumFilter som summerar över värden * * * @param array Lista med vad som ska summeras * @param attributeName Namn på attribut som ska summeras * @param returnNull Default är false. Om false så returneras 0 även om ingen av värdena * som ska summeras är ett giltigt nummer. Annars returneras null om inget värde är ett nummer */ // Angular imports // import { Pipe, PipeTransform } from '@angular/core'; declare const angular: angular.IAngularStatic; // Components // import * as _ from 'underscore'; // import * as statics from '@fb/statics'; @Pipe({ name: 'sum' }) export class SumPipe implements PipeTransform { transform(array: any[], attributeName: string, returnNull: boolean = false): number { let ret: number = returnNull ? null : 0; _.each(array, (obj: any) => { if (attributeName) { const properties: string[] = attributeName.split('.'); for (const property of properties) { obj = obj[property]; } } if (!angular.isNumber(obj)) { obj = parseInt(obj, 10); } if (angular.isNumber(obj) && !isNaN(obj)) { if (ret === null) { ret = 0; } ret += obj; } }); return ret; } }