meteoalarm-card
Version:
Meteoalarm card for Home Assistant Lovelace UI
63 lines (59 loc) • 2.18 kB
text/typescript
import { MeteoalarmEventType, MeteoalarmLevelType } from './types';
export class Utils {
/**
* Check if current frontend is installed on specified version on higher
* This can be used to display some features only on newer version of HA
*/
public static minHAversion(minYear: number, minMonth: number): boolean {
const rawVersion = (window as any).frontendVersion as string;
if (!rawVersion) return false;
const year = rawVersion.substring(0, 4);
const version = rawVersion.substring(4, 6);
return Number(year) >= minYear || (Number(year) >= minYear && Number(version) >= minMonth);
}
/**
* Handfuls of integrations use words to describe event severity like
* "Moderate" or "Severe". This is an fallback function that can be used
* to get the event severity from this string in case it's not provided
* in regular way
*
* These are mostly rare cases like this one:
* https://github.com/MrBartusek/MeteoalarmCard/issues/48
*
* @param severity severity as string (Minor, Moderate, Severe)
* @param overrides optionally provide an list of overrides as object.
* For example `{ "Moderate": MeteoalarmLevelType.Orange }`
* @returns
*/
public static getLevelBySeverity(
severity: string,
overrides?: { [key: string]: MeteoalarmLevelType },
): MeteoalarmLevelType {
if (overrides && overrides[severity]) {
return overrides[severity];
}
switch (severity) {
case 'Unknown':
case 'Minor':
case 'Moderate':
return MeteoalarmLevelType.Yellow;
case 'Severe':
return MeteoalarmLevelType.Orange;
case 'High':
case 'Extreme':
return MeteoalarmLevelType.Red;
default:
throw new Error(`[Utils.getLevelBySeverity] unknown event severity: "${severity}"`);
}
}
/**
* Some integrations store their event mapping in key-value dict, this
* function convert this list for metadata.monitoredConditions
* @param eventTypes eventTypes dict
*/
public static convertEventTypesForMetadata(eventTypes: {
[key: number | string]: MeteoalarmEventType;
}): MeteoalarmEventType[] {
return [...new Set(Object.values(eventTypes))];
}
}