UNPKG

meteoalarm-card

Version:

Meteoalarm card for Home Assistant Lovelace UI

82 lines (76 loc) 2.45 kB
import { EntityConfig } from 'custom-card-helpers'; import { html, TemplateResult } from 'lit'; import { localize } from './localize/localize'; import { MeteoalarmIntegration, MeteoalarmIntegrationEntityType } from './types'; export function generateEditorWarnings( integration: MeteoalarmIntegration | undefined, entities: EntityConfig[] | undefined, ): TemplateResult { // If entities are undefined, default to empty array if (!Array.isArray(entities)) entities = []; if (!integration) return html``; return html` ${duplicateWarning(entities)} ${missingExpectedEntityWarning(integration, entities)} ${tooManyEntitiesWarning(integration, entities)} `; } /** * Generate warning for CurrentExpected integrations when second entity is not provided */ function missingExpectedEntityWarning( integration: MeteoalarmIntegration, entities: EntityConfig[], ): TemplateResult { const validEntity = integration?.metadata.type == MeteoalarmIntegrationEntityType.CurrentExpected; if (validEntity && entities.length == 1) { return html` <ha-alert alert-type="warning" title=${localize('common.warning')} > ${localize('editor.error.expected_entity')} </ha-alert> `; } return html``; } /** * Generate warning when user provides two identical entities in editor */ function duplicateWarning(entities: EntityConfig[]): TemplateResult { const uniqueEntities = Array.from(new Set(entities.map((x) => x.entity))); const hasDuplicateEntities = uniqueEntities.length != entities.length; if (hasDuplicateEntities) { return html` <ha-alert alert-type="warning" title=${localize('common.warning')} > ${localize('editor.error.duplicate')} </ha-alert> `; } return html``; } /** * Generate warning when there are too much entities provided */ function tooManyEntitiesWarning( integration: MeteoalarmIntegration, entities: EntityConfig[], ): TemplateResult { const shouldConsider = integration.metadata.entitiesCount > 0; if (shouldConsider && entities.length > integration.metadata.entitiesCount) { return html` <ha-alert alert-type="warning" title=${localize('common.warning')} > ${localize('editor.error.too_many_entities') .replace('{expected}', String(integration.metadata.entitiesCount)) .replace('{got}', String(entities.length))} </ha-alert> `; } return html``; }