32 lines
887 B
TypeScript
32 lines
887 B
TypeScript
|
import { Pipe, PipeTransform } from '@angular/core';
|
||
|
import { DecimalPipe } from '@angular/common';
|
||
|
|
||
|
/**
|
||
|
* Formats floats to have a defined precision.
|
||
|
*
|
||
|
* In this default application, the precision is 0, so no decimal places. Plugins
|
||
|
* may override this pipe to enable more precise votes.
|
||
|
*/
|
||
|
@Pipe({
|
||
|
name: 'precisionPipe'
|
||
|
})
|
||
|
export class PrecisionPipe implements PipeTransform {
|
||
|
protected precision: number;
|
||
|
|
||
|
public constructor(private decimalPipe: DecimalPipe) {
|
||
|
this.precision = 0;
|
||
|
}
|
||
|
|
||
|
public transform(value: number, precision?: number): string {
|
||
|
if (!precision) {
|
||
|
precision = this.precision;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Min 1 place before the comma and exactly precision places after.
|
||
|
*/
|
||
|
const digitsInfo = `1.${precision}-${precision}`;
|
||
|
return this.decimalPipe.transform(value, digitsInfo);
|
||
|
}
|
||
|
}
|