const fireEvent = (node, type, detail, options) => { options = options || {}; detail = detail === null || detail === undefined ? {} : detail; const event = new Event(type, { bubbles: options.bubbles === undefined ? true : options.bubbles, cancelable: Boolean(options.cancelable), composed: options.composed === undefined ? true : options.composed }); event.detail = detail; node.dispatchEvent(event); return event; }; const locale = { da: { optionName: 'Navn (valgfrit)', optionEntity: 'Enhed (påkrævet)', optionShowCurrent: 'Vis nuværende status', optionShowDetails: 'Vis detaljer', optionShowGraph: 'Vis graf', optionShowInfo: 'Vis information' }, de: { optionName: 'Name (optional)', optionEntity: 'Entity (Erforderlich)', optionShowCurrent: 'Aktuellen Status anzeigen', optionShowDetails: 'Details anzeigen', optionShowGraph: 'Grafik anzeigen', optionShowInfo: 'Informationen anzeigen' }, en: { optionName: 'Name (Optional)', optionEntity: 'Entity (Required)', optionShowCurrent: 'Show Current State', optionShowDetails: 'Show Details', optionShowGraph: 'Show Graph', optionShowInfo: 'Show Info' }, es: { optionName: 'Nombre (Opcional)', optionEntity: 'Entidad (Necesario)', optionShowCurrent: 'Mostrar Estado Actual', optionShowDetails: 'Mostrar Detalles', optionShowGraph: 'Mostrar Gráfico', optionShowInfo: 'Mostrar Información' }, fr: { optionName: 'Nom (Facultatif)', optionEntity: 'Entity (Required)', optionShowCurrent: "Afficher l'état actuel", optionShowDetails: 'Afficher les détails', optionShowGraph: 'Afficher le graphique', optionShowInfo: 'Afficher les informations' }, nl: { optionName: 'Naam (optioneel)', optionEntity: 'Entiteit (vereist)', optionShowCurrent: 'Toon huidige status', optionShowDetails: 'Details weergeven', optionShowGraph: 'Show Graph', optionShowInfo: 'Informatie weergeven' }, ru: { optionName: 'Имя (необязательно)', optionEntity: 'Entity (обязательно)', optionShowCurrent: 'Показать текущий статус', optionShowDetails: 'Показать детали', optionShowGraph: 'Показать график', optionShowInfo: 'Показать информацию' }, sv: { optionName: 'Namn (valfritt)', optionEntity: 'Enhet (obligatoriskt)', optionShowCurrent: 'Visa aktuell status', optionShowDetails: 'Visa detaljer', optionShowGraph: 'Visa graf', optionShowInfo: 'Visa information' } }; const LitElement = window.LitElement || Object.getPrototypeOf(customElements.get('home-assistant') || customElements.get('hui-view')); const { html, css } = LitElement.prototype; export class PVPCHourlyPricingCardEditor extends LitElement { setConfig(config) { this._config = { ...config }; } static get properties() { return { hass: {}, _config: {} }; } get _entity() { return this._config.entity || ''; } get _name() { return this._config.name || ''; } get _current() { return this._config.current !== false; } get _details() { return this._config.details !== false; } get _graph() { return this._config.graph !== false; } get _info() { return this._config.info !== false; } render() { if (!this.hass) { return html``; } this.lang = this.hass.selectedLanguage || this.hass.language; const entities = Object.keys(this.hass.states).filter((eid) => Object.keys(this.hass.states[eid].attributes).some((aid) => aid == 'min_price_at') ); return html`
${entities.map((entity) => { return html` ${entity} `; })}
`; } _valueChanged(ev) { if (!this._config || !this.hass) { return; } const target = ev.target; if (this[`_${target.configValue}`] === target.value) { return; } if (target.configValue) { if (target.value === '') { delete this._config[target.configValue]; } else { this._config = { ...this._config, [target.configValue]: target.checked !== undefined ? target.checked : target.value }; } } fireEvent(this, 'config-changed', { config: this._config }); } ll(str) { if (locale[this.lang] === undefined) return locale.en[str]; return locale[this.lang][str]; } static get styles() { return css` ha-switch { padding-top: 16px; } .mdc-label { margin-left: 12px; vertical-align: text-bottom; } .side-by-side { display: flex; } .side-by-side > * { flex: 1; padding-right: 4px; } `; } } customElements.define('pvpc-hourly-pricing-card-editor', PVPCHourlyPricingCardEditor); window.customCards = window.customCards || []; window.customCards.push({ type: 'pvpc-hourly-pricing-card', name: 'PVPC Hourly Pricing', preview: true, description: 'The PVPC Hourly Pricing card allows you to display propertly the PVPC Hourly Pricing entity.' });