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.
35 lines
1.1 KiB
35 lines
1.1 KiB
import { Pipe, PipeTransform } from '@angular/core';
|
|
|
|
@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): unknown {
|
|
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 convertedTemp + convertedUnitSuffix
|
|
} else {
|
|
return convertedTemp
|
|
}
|
|
}
|
|
|
|
transform(celsiusTemp: number, unit = 'celsius', includeUnits = false): unknown {
|
|
return TemperaturePipe.formatTemperature(celsiusTemp, unit, includeUnits)
|
|
}
|
|
|
|
}
|