UNPKG

ng2-bs-table

Version:
62 lines (55 loc) 2.08 kB
import {Pipe, PipeTransform} from '@angular/core'; import {DatePipe, DecimalPipe} from '@angular/common'; import {StringHelper} from '../helpers/string-helper'; @Pipe({ name: 'format' }) export class FormatPipe implements PipeTransform { private datePipe: DatePipe; private decimalPipe: DecimalPipe; constructor(){ this.datePipe = new DatePipe('en-US'); this.decimalPipe = new DecimalPipe('en-US'); } transform(input:string, args:any): any { var format = ''; var parsedFloat = 0; var pipeArgs = args.split(':'); for(var i = 0; i < pipeArgs.length; i++){ pipeArgs[i] = pipeArgs[i].trim(' '); } //Escape all html if not explicitly set if(pipeArgs[0].toLowerCase() !== 'html') input = StringHelper.escapeHtml(input); switch(pipeArgs[0].toLowerCase()) { case 'text': return input; case 'decimal': case 'number': parsedFloat = !isNaN(parseFloat(input)) ? parseFloat(input) : 0; format = pipeArgs.length > 1 ? pipeArgs[1] : null; return this.decimalPipe.transform(parsedFloat, format); case 'percentage': parsedFloat = !isNaN(parseFloat(input)) ? parseFloat(input) : 0; format = pipeArgs.length > 1 ? pipeArgs[1] : null; return this.decimalPipe.transform(parsedFloat, format) + '%'; case 'date': case 'datetime': var date = !isNaN(parseInt(input)) ? parseInt(input) : new Date(input); format = 'MMM d, y h:mm:ss a'; if(pipeArgs.length > 1) { format = ''; for(var i = 1; i < pipeArgs.length; i++){ format += pipeArgs[i]; } } return this.datePipe.transform(date, format); default: return input; } } } export var FORMAT_PROVIDERS = [ FormatPipe ];