From 4f3abe1025d8a6ee7bfba24d10769185d1e346e7 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Tue, 3 Sep 2019 15:12:21 -0500 Subject: [PATCH] Option to display last changed in glance-card (#3584) * Option to display last changed in glance-card Closes https://github.com/home-assistant/ui-schema/issues/110 * move show_last_changed to entity-level * address review comments --- src/panels/lovelace/cards/hui-glance-card.ts | 26 ++++++++++++-------- src/panels/lovelace/cards/types.ts | 4 +++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/panels/lovelace/cards/hui-glance-card.ts b/src/panels/lovelace/cards/hui-glance-card.ts index 69dd4a3199..be7ee5d4f6 100644 --- a/src/panels/lovelace/cards/hui-glance-card.ts +++ b/src/panels/lovelace/cards/hui-glance-card.ts @@ -13,6 +13,7 @@ import { classMap } from "lit-html/directives/class-map"; import computeStateDisplay from "../../../common/entity/compute_state_display"; import computeStateName from "../../../common/entity/compute_state_name"; import applyThemesOnElement from "../../../common/dom/apply_themes_on_element"; +import relativeTime from "../../../common/datetime/relative_time"; import "../../../components/entity/state-badge"; import "../../../components/ha-card"; @@ -24,7 +25,7 @@ import { LovelaceCard, LovelaceCardEditor } from "../types"; import { longPress } from "../common/directives/long-press-directive"; import { processConfigEntities } from "../common/process-config-entities"; import { handleClick } from "../common/handle-click"; -import { GlanceCardConfig, ConfigEntity } from "./types"; +import { GlanceCardConfig, GlanceConfigEntity } from "./types"; @customElement("hui-glance-card") export class HuiGlanceCard extends LitElement implements LovelaceCard { @@ -41,7 +42,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { @property() private _config?: GlanceCardConfig; - private _configEntities?: ConfigEntity[]; + private _configEntities?: GlanceConfigEntity[]; public getCardSize(): number { return ( @@ -52,7 +53,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { public setConfig(config: GlanceCardConfig): void { this._config = { theme: "default", ...config }; - const entities = processConfigEntities(config.entities); + const entities = processConfigEntities(config.entities); for (const entity of entities) { if ( @@ -207,11 +208,16 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { ${this._config!.show_state !== false ? html`
- ${computeStateDisplay( - this.hass!.localize, - stateObj, - this.hass!.language - )} + ${entityConf.show_last_changed + ? relativeTime( + new Date(stateObj.last_changed), + this.hass!.localize + ) + : computeStateDisplay( + this.hass!.localize, + stateObj, + this.hass!.language + )}
` : ""} @@ -220,12 +226,12 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard { } private _handleTap(ev: MouseEvent): void { - const config = (ev.currentTarget as any).entityConf as ConfigEntity; + const config = (ev.currentTarget as any).entityConf as GlanceConfigEntity; handleClick(this, this.hass!, config, false); } private _handleHold(ev: MouseEvent): void { - const config = (ev.currentTarget as any).entityConf as ConfigEntity; + const config = (ev.currentTarget as any).entityConf as GlanceConfigEntity; handleClick(this, this.hass!, config, true); } } diff --git a/src/panels/lovelace/cards/types.ts b/src/panels/lovelace/cards/types.ts index 12f0a441c3..ce1d21ad25 100644 --- a/src/panels/lovelace/cards/types.ts +++ b/src/panels/lovelace/cards/types.ts @@ -82,6 +82,10 @@ export interface ConfigEntity extends EntityConfig { hold_action?: ActionConfig; } +export interface GlanceConfigEntity extends ConfigEntity { + show_last_changed?: boolean; +} + export interface GlanceCardConfig extends LovelaceCardConfig { show_name?: boolean; show_state?: boolean;