Files
scrutiny/webapp/frontend/src/app/shared/temperature.pipe.ts
T
Rick Zaki 50561f34ea fix: https://github.com/AnalogJ/scrutiny/issues/643
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.
2025-01-09 14:27:26 -05:00

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)
}
}