Better AutoMode
This commit is contained in:
@@ -62,6 +62,14 @@ export const METRICS: Record<string, MetricMeta> = {
|
||||
forecast_precipitation_probability: { label: 'Rain Chance', unit: '%', icon: '🌂', group: 'Forecast', precision: 0, color: '#60a5fa' },
|
||||
}
|
||||
|
||||
export function formatValue(key: string, value: number | string | null): string {
|
||||
if (value === null || value === undefined) return '—'
|
||||
const meta = METRICS[key]
|
||||
if (!meta) return String(value)
|
||||
if (typeof value === 'number') return `${value.toFixed(meta.precision)}${meta.unit}`
|
||||
return `${value}${meta.unit}`
|
||||
}
|
||||
|
||||
export function getPressureTrend(delta: number) {
|
||||
if (delta > 0.5) return 'Rising';
|
||||
if (delta < -0.5) return 'Falling';
|
||||
@@ -76,12 +84,12 @@ export function getUVLabel(uv: number) {
|
||||
return 'Extreme';
|
||||
}
|
||||
|
||||
export function formatValue(key: string, value: number | string | null): string {
|
||||
if (value === null || value === undefined) return '—'
|
||||
const meta = METRICS[key]
|
||||
if (!meta) return String(value)
|
||||
if (typeof value === 'number') return `${value.toFixed(meta.precision)}${meta.unit}`
|
||||
return `${value}${meta.unit}`
|
||||
const EARTH_R = 6371;
|
||||
export function greatCircleDist(lat1: number, lon1: number, lat2: number, lon2: number): number {
|
||||
const toRad = (d: number) => d * Math.PI / 180;
|
||||
const dLat = toRad(lat2 - lat1), dLon = toRad(lon2 - lon1);
|
||||
const a = Math.sin(dLat / 2) ** 2 + Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLon / 2) ** 2;
|
||||
return EARTH_R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
}
|
||||
|
||||
export const GROUPS = [...new Set(Object.values(METRICS).map(m => m.group))]
|
||||
|
||||
Reference in New Issue
Block a user