Update for Home Assistant 0.86

This commit is contained in:
Thomas Lovén 2019-01-23 23:26:08 +01:00
parent 895edd78c5
commit c7dd7058a1
2 changed files with 18 additions and 10 deletions

View File

@ -3,15 +3,14 @@ state-switch
Allows you to display different cards depending on the state of an entity, the currently logged in user or the current device-browser combination Allows you to display different cards depending on the state of an entity, the currently logged in user or the current device-browser combination
This card requires [card-tools](https://github.com/thomasloven/lovelace-card-tools) to be installed.
![state-switch mov](https://user-images.githubusercontent.com/1299821/48923691-05479700-eeb1-11e8-8c8b-91ea14cfecf1.gif) ![state-switch mov](https://user-images.githubusercontent.com/1299821/48923691-05479700-eeb1-11e8-8c8b-91ea14cfecf1.gif)
> Note in the animation above that the two browser windows have two different users logged in, which changes the rightmost card. > Note in the animation above that the two browser windows have two different users logged in, which changes the rightmost card.
## Installation ## Installation
This card requires [card-tools](https://github.com/thomasloven/lovelace-card-tools) to be installed.
Please read and follow this guide: [Lovelace Plugins](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins) For installation instructions [see this guide](https://github.com/thomasloven/hass-config/wiki/Lovelace-Plugins).
## Options ## Options

View File

@ -1,26 +1,27 @@
var LitElement = LitElement || Object.getPrototypeOf(customElements.get('hui-error-entity-row')); customElements.whenDefined('card-tools').then(() => {
class StateSwitch extends LitElement { class StateSwitch extends cardTools.litElement() {
setConfig(config) { setConfig(config) {
cardTools.checkVersion(0.3);
this.config = config; this.config = config;
this.cardSize = 1; this.cardSize = 1;
this.cards = {} this.cards = {}
for(var k in this.config.states) { for(var k in this.config.states) {
this.cards[k] = window.cardTools.createCard(this.config.states[k]); this.cards[k] = cardTools.createCard(this.config.states[k]);
this.cardSize = Math.max(this.cardSize, this.cards[k].getCardSize()); this.cardSize = Math.max(this.cardSize, this.cards[k].getCardSize());
} }
this.idCard = window.cardTools.createCard({ this.idCard = cardTools.createCard({
type: "markdown", type: "markdown",
title: "Device ID", title: "Device ID",
content: `Your device id is: \`${window.cardTools.deviceID}\``, content: `Your device id is: \`${cardTools.deviceID()}\``,
}); });
} }
render() { render() {
return window.cardTools.litHtml` return cardTools.litHtml()`
<div id="root">${this.currentCard}</div> <div id="root">${this.currentCard}</div>
`; `;
} }
@ -33,7 +34,7 @@ class StateSwitch extends LitElement {
this.currentCard = this.cards[hass.user.name] this.currentCard = this.cards[hass.user.name]
|| this.cards[this.config.default]; || this.cards[this.config.default];
} else if(this.config.entity == 'browser') { } else if(this.config.entity == 'browser') {
this.currentCard = this.cards[window.cardTools.deviceID] this.currentCard = this.cards[cardTools.deviceID]
|| ((this.config.default) || ((this.config.default)
? this.cards[this.config.default] ? this.cards[this.config.default]
: this.idCard); : this.idCard);
@ -56,3 +57,11 @@ class StateSwitch extends LitElement {
} }
customElements.define('state-switch', StateSwitch); customElements.define('state-switch', StateSwitch);
});
setTimeout(() => {
if(customElements.get('card-tools')) return;
customElements.define('state-switch', class extends HTMLElement{
setConfig() { throw new Error("Can't find card-tools. See https://github.com/thomasloven/lovelace-card-tools");}
});
}, 2000);