You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
import {formatNumber} from '@angular/common';
|
|
|
|
|
|
|
|
@Pipe({
|
|
|
|
name: 'temperature'
|
|
|
|
})
|
|
|
|
export class TemperaturePipe implements PipeTransform {
|
|
|
|
static celsiusToFahrenheit(celsiusTemp: number): number {
|
|
|
|
return celsiusTemp * 9.0 / 5.0 + 32;
|
|
|
|
}
|
|
|
|
static formatTemperature(celsiusTemp: number, unit: string, includeUnits: boolean): number|string {
|
|
|
|
let convertedTemp
|
|
|
|
let convertedUnitSuffix
|
|
|
|
switch (unit) {
|
|
|
|
case 'celsius':
|
|
|
|
convertedTemp = celsiusTemp
|
|
|
|
convertedUnitSuffix = '°C'
|
|
|
|
break
|
|
|
|
case 'fahrenheit':
|
|
|
|
convertedTemp = TemperaturePipe.celsiusToFahrenheit(celsiusTemp)
|
|
|
|
convertedUnitSuffix = '°F'
|
|
|
|
break
|
|
|
|
}
|
|
|
|
if(includeUnits){
|
|
|
|
return formatNumber(convertedTemp, 'en-US') + convertedUnitSuffix
|
|
|
|
} else {
|
|
|
|
return formatNumber(convertedTemp, 'en-US',)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
transform(celsiusTemp: number, unit = 'celsius', includeUnits = false): number|string {
|
|
|
|
return TemperaturePipe.formatTemperature(celsiusTemp, unit, includeUnits)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|