50561f34ea
needed to separate formatting temps from converting dashboard was using format method to convert and send Fahrenheit values to chart, then passing the same method into chart formatter causing the Fahrenheit value to be passed in as Celsius and converted again.
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
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/5 + 32;
|
|
}
|
|
static formatTemperature(temp: number, unit: string, includeUnits: boolean): number|string {
|
|
let unitSuffix
|
|
switch (unit) {
|
|
case 'celsius':
|
|
unitSuffix = '°C'
|
|
break
|
|
case 'fahrenheit':
|
|
unitSuffix = '°F'
|
|
break
|
|
}
|
|
if(includeUnits){
|
|
return formatNumber(temp, 'en-US') + unitSuffix
|
|
} else {
|
|
return formatNumber(temp, 'en-US',)
|
|
}
|
|
}
|
|
|
|
transform(celsiusTemp: number, unit = 'celsius', includeUnits = false): number|string {
|
|
let temperature;
|
|
switch (unit) {
|
|
case 'celsius':
|
|
temperature = celsiusTemp;
|
|
break
|
|
case 'fahrenheit':
|
|
temperature = TemperaturePipe.celsiusToFahrenheit(celsiusTemp)
|
|
break
|
|
}
|
|
return TemperaturePipe.formatTemperature(celsiusTemp, unit, includeUnits)
|
|
}
|
|
|
|
}
|