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
This commit is contained in:
Ian Richardson 2019-09-03 15:12:21 -05:00 committed by Bram Kragten
parent 5bcba95c25
commit 4f3abe1025
2 changed files with 20 additions and 10 deletions

View File

@ -13,6 +13,7 @@ import { classMap } from "lit-html/directives/class-map";
import computeStateDisplay from "../../../common/entity/compute_state_display"; import computeStateDisplay from "../../../common/entity/compute_state_display";
import computeStateName from "../../../common/entity/compute_state_name"; import computeStateName from "../../../common/entity/compute_state_name";
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element"; import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
import relativeTime from "../../../common/datetime/relative_time";
import "../../../components/entity/state-badge"; import "../../../components/entity/state-badge";
import "../../../components/ha-card"; import "../../../components/ha-card";
@ -24,7 +25,7 @@ import { LovelaceCard, LovelaceCardEditor } from "../types";
import { longPress } from "../common/directives/long-press-directive"; import { longPress } from "../common/directives/long-press-directive";
import { processConfigEntities } from "../common/process-config-entities"; import { processConfigEntities } from "../common/process-config-entities";
import { handleClick } from "../common/handle-click"; import { handleClick } from "../common/handle-click";
import { GlanceCardConfig, ConfigEntity } from "./types"; import { GlanceCardConfig, GlanceConfigEntity } from "./types";
@customElement("hui-glance-card") @customElement("hui-glance-card")
export class HuiGlanceCard extends LitElement implements LovelaceCard { export class HuiGlanceCard extends LitElement implements LovelaceCard {
@ -41,7 +42,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
@property() private _config?: GlanceCardConfig; @property() private _config?: GlanceCardConfig;
private _configEntities?: ConfigEntity[]; private _configEntities?: GlanceConfigEntity[];
public getCardSize(): number { public getCardSize(): number {
return ( return (
@ -52,7 +53,7 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
public setConfig(config: GlanceCardConfig): void { public setConfig(config: GlanceCardConfig): void {
this._config = { theme: "default", ...config }; this._config = { theme: "default", ...config };
const entities = processConfigEntities<ConfigEntity>(config.entities); const entities = processConfigEntities<GlanceConfigEntity>(config.entities);
for (const entity of entities) { for (const entity of entities) {
if ( if (
@ -207,11 +208,16 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
${this._config!.show_state !== false ${this._config!.show_state !== false
? html` ? html`
<div> <div>
${computeStateDisplay( ${entityConf.show_last_changed
this.hass!.localize, ? relativeTime(
stateObj, new Date(stateObj.last_changed),
this.hass!.language this.hass!.localize
)} )
: computeStateDisplay(
this.hass!.localize,
stateObj,
this.hass!.language
)}
</div> </div>
` `
: ""} : ""}
@ -220,12 +226,12 @@ export class HuiGlanceCard extends LitElement implements LovelaceCard {
} }
private _handleTap(ev: MouseEvent): void { 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); handleClick(this, this.hass!, config, false);
} }
private _handleHold(ev: MouseEvent): void { 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); handleClick(this, this.hass!, config, true);
} }
} }

View File

@ -82,6 +82,10 @@ export interface ConfigEntity extends EntityConfig {
hold_action?: ActionConfig; hold_action?: ActionConfig;
} }
export interface GlanceConfigEntity extends ConfigEntity {
show_last_changed?: boolean;
}
export interface GlanceCardConfig extends LovelaceCardConfig { export interface GlanceCardConfig extends LovelaceCardConfig {
show_name?: boolean; show_name?: boolean;
show_state?: boolean; show_state?: boolean;