UNPKG

meteoalarm-card

Version:

Meteoalarm card for Home Assistant Lovelace UI

63 lines (59 loc) 2.18 kB
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))]; } }