Honor group control hidden setting (#2478)

* Honor group control hidden setting

* Lint
This commit is contained in:
Paulus Schoutsen 2019-01-14 19:33:16 -08:00 committed by GitHub
parent 732237d4e1
commit f943366ecd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 19 deletions

View File

@ -21,7 +21,7 @@ import { createRowElement } from "../common/create-row-element";
import computeDomain from "../../../common/entity/compute_domain"; import computeDomain from "../../../common/entity/compute_domain";
import applyThemesOnElement from "../../../common/dom/apply_themes_on_element"; import applyThemesOnElement from "../../../common/dom/apply_themes_on_element";
export interface ConfigEntity extends EntityConfig { export interface EntitiesCardEntityConfig extends EntityConfig {
type?: string; type?: string;
secondary_info?: "entity-id" | "last-changed"; secondary_info?: "entity-id" | "last-changed";
action_name?: string; action_name?: string;
@ -30,10 +30,10 @@ export interface ConfigEntity extends EntityConfig {
url?: string; url?: string;
} }
export interface Config extends LovelaceCardConfig { export interface EntitiesCardConfig extends LovelaceCardConfig {
show_header_toggle?: boolean; show_header_toggle?: boolean;
title?: string; title?: string;
entities: ConfigEntity[]; entities: EntitiesCardEntityConfig[];
theme?: string; theme?: string;
} }
@ -49,8 +49,8 @@ class HuiEntitiesCard extends hassLocalizeLitMixin(LitElement)
} }
protected _hass?: HomeAssistant; protected _hass?: HomeAssistant;
protected _config?: Config; protected _config?: EntitiesCardConfig;
protected _configEntities?: ConfigEntity[]; protected _configEntities?: EntitiesCardEntityConfig[];
set hass(hass: HomeAssistant) { set hass(hass: HomeAssistant) {
this._hass = hass; this._hass = hass;
@ -81,7 +81,7 @@ class HuiEntitiesCard extends hassLocalizeLitMixin(LitElement)
return (this._config.title ? 1 : 0) + this._config.entities.length; return (this._config.title ? 1 : 0) + this._config.entities.length;
} }
public setConfig(config: Config): void { public setConfig(config: EntitiesCardConfig): void {
const entities = processConfigEntities(config.entities); const entities = processConfigEntities(config.entities);
this._config = { theme: "default", ...config }; this._config = { theme: "default", ...config };
@ -171,7 +171,7 @@ class HuiEntitiesCard extends hassLocalizeLitMixin(LitElement)
`; `;
} }
private renderEntity(entityConf: ConfigEntity): TemplateResult { private renderEntity(entityConf: EntitiesCardEntityConfig): TemplateResult {
const element = createRowElement(entityConf); const element = createRowElement(entityConf);
if (this._hass) { if (this._hass) {
element.hass = this._hass; element.hass = this._hass;
@ -189,7 +189,7 @@ class HuiEntitiesCard extends hassLocalizeLitMixin(LitElement)
`; `;
} }
private _handleClick(entityConf: ConfigEntity): void { private _handleClick(entityConf: EntitiesCardEntityConfig): void {
const entityId = entityConf.entity; const entityId = entityConf.entity;
fireEvent(this, "hass-more-info", { entityId }); fireEvent(this, "hass-more-info", { entityId });
} }

View File

@ -14,6 +14,7 @@ import computeStateDomain from "../../../common/entity/compute_state_domain";
import { LocalizeFunc } from "../../../mixins/localize-base-mixin"; import { LocalizeFunc } from "../../../mixins/localize-base-mixin";
import computeDomain from "../../../common/entity/compute_domain"; import computeDomain from "../../../common/entity/compute_domain";
import { EntityRowConfig, WeblinkConfig } from "../entity-rows/types"; import { EntityRowConfig, WeblinkConfig } from "../entity-rows/types";
import { EntitiesCardConfig } from "../cards/hui-entities-card";
const DEFAULT_VIEW_ENTITY_ID = "group.default_view"; const DEFAULT_VIEW_ENTITY_ID = "group.default_view";
const DOMAINS_BADGES = [ const DOMAINS_BADGES = [
@ -27,8 +28,8 @@ const DOMAINS_BADGES = [
const HIDE_DOMAIN = new Set(["persistent_notification", "configurator"]); const HIDE_DOMAIN = new Set(["persistent_notification", "configurator"]);
const computeCards = ( const computeCards = (
title: string, states: Array<[string, HassEntity]>,
states: Array<[string, HassEntity]> entityCardOptions: Partial<EntitiesCardConfig>
): LovelaceCardConfig[] => { ): LovelaceCardConfig[] => {
const cards: LovelaceCardConfig[] = []; const cards: LovelaceCardConfig[] = [];
@ -85,9 +86,9 @@ const computeCards = (
if (entities.length > 0) { if (entities.length > 0) {
cards.unshift({ cards.unshift({
title,
type: "entities", type: "entities",
entities, entities,
...entityCardOptions,
}); });
} }
@ -152,10 +153,13 @@ const generateViewConfig = (
splitted.groups.forEach((groupEntity) => { splitted.groups.forEach((groupEntity) => {
cards = cards.concat( cards = cards.concat(
computeCards( computeCards(
computeStateName(groupEntity),
groupEntity.attributes.entity_id.map( groupEntity.attributes.entity_id.map(
(entityId): [string, HassEntity] => [entityId, entities[entityId]] (entityId): [string, HassEntity] => [entityId, entities[entityId]]
) ),
{
title: computeStateName(groupEntity),
show_header_toggle: groupEntity.attributes.control !== "hidden",
}
) )
); );
}); });
@ -165,10 +169,12 @@ const generateViewConfig = (
.forEach((domain) => { .forEach((domain) => {
cards = cards.concat( cards = cards.concat(
computeCards( computeCards(
localize(`domain.${domain}`),
ungroupedEntitites[domain].map( ungroupedEntitites[domain].map(
(entityId): [string, HassEntity] => [entityId, entities[entityId]] (entityId): [string, HassEntity] => [entityId, entities[entityId]]
) ),
{
title: localize(`domain.${domain}`),
}
) )
); );
}); });

View File

@ -16,7 +16,10 @@ import { hassLocalizeLitMixin } from "../../../../mixins/lit-localize-mixin";
import { HomeAssistant } from "../../../../types"; import { HomeAssistant } from "../../../../types";
import { LovelaceCardEditor } from "../../types"; import { LovelaceCardEditor } from "../../types";
import { fireEvent } from "../../../../common/dom/fire_event"; import { fireEvent } from "../../../../common/dom/fire_event";
import { Config, ConfigEntity } from "../../cards/hui-entities-card"; import {
EntitiesCardConfig,
EntitiesCardEntityConfig,
} from "../../cards/hui-entities-card";
import { configElementStyle } from "./config-elements-style"; import { configElementStyle } from "./config-elements-style";
import "../../../../components/entity/state-badge"; import "../../../../components/entity/state-badge";
@ -57,10 +60,10 @@ export class HuiEntitiesCardEditor extends hassLocalizeLitMixin(LitElement)
} }
public hass?: HomeAssistant; public hass?: HomeAssistant;
private _config?: Config; private _config?: EntitiesCardConfig;
private _configEntities?: ConfigEntity[]; private _configEntities?: EntitiesCardEntityConfig[];
public setConfig(config: Config): void { public setConfig(config: EntitiesCardConfig): void {
config = cardConfigStruct(config); config = cardConfigStruct(config);
this._config = config; this._config = config;
this._configEntities = processEditorEntities(config.entities); this._configEntities = processEditorEntities(config.entities);