Stub Configs: Add Type (#5206)

* Add Type

* Add return type

* Lint

* Fix map

* map fix

* Comments
This commit is contained in:
Zack Arnett 2020-03-20 07:41:28 -04:00 committed by GitHub
parent 39bb859f57
commit 0d404e0e37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 52 additions and 36 deletions

View File

@ -52,7 +52,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
) { ): AlarmPanelCardConfig {
const includeDomains = ["alarm_control_panel"]; const includeDomains = ["alarm_control_panel"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -64,6 +64,7 @@ class HuiAlarmPanelCard extends LitElement implements LovelaceCard {
); );
return { return {
type: "alarm-panel",
states: ["arm_home", "arm_away"], states: ["arm_home", "arm_away"],
entity: foundEntities[0] || "", entity: foundEntities[0] || "",
}; };

View File

@ -48,7 +48,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): ButtonCardConfig {
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
hass, hass,
@ -59,6 +59,7 @@ export class HuiButtonCard extends LitElement implements LovelaceCard {
); );
return { return {
type: "button",
tap_action: { action: "toggle" }, tap_action: { action: "toggle" },
hold_action: { action: "more-info" }, hold_action: { action: "more-info" },
show_icon: true, show_icon: true,

View File

@ -15,10 +15,11 @@ class HuiConditionalCard extends HuiConditionalBase implements LovelaceCard {
return document.createElement("hui-conditional-card-editor"); return document.createElement("hui-conditional-card-editor");
} }
public static getStubConfig(): object { public static getStubConfig(): ConditionalCardConfig {
return { return {
type: "conditional",
conditions: [], conditions: [],
card: {}, card: { type: "" },
}; };
} }

View File

@ -42,7 +42,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
) { ): EntitiesCardConfig {
const maxEntities = 3; const maxEntities = 3;
const foundEntities = findEntities( const foundEntities = findEntities(
hass, hass,
@ -52,7 +52,7 @@ class HuiEntitiesCard extends LitElement implements LovelaceCard {
["light", "switch", "sensor"] ["light", "switch", "sensor"]
); );
return { title: "My Title", entities: foundEntities }; return { type: "entities", title: "My Title", entities: foundEntities };
} }
@property() private _config?: EntitiesCardConfig; @property() private _config?: EntitiesCardConfig;

View File

@ -45,7 +45,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): GaugeCardConfig {
const includeDomains = ["sensor"]; const includeDomains = ["sensor"];
const maxEntities = 1; const maxEntities = 1;
const entityFilter = (stateObj: HassEntity): boolean => { const entityFilter = (stateObj: HassEntity): boolean => {
@ -61,7 +61,7 @@ class HuiGaugeCard extends LitElement implements LovelaceCard {
entityFilter entityFilter
); );
return { entity: foundEntities[0] || "" }; return { type: "gauge", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -35,7 +35,7 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): HistoryGraphCardConfig {
const includeDomains = ["sensor"]; const includeDomains = ["sensor"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -46,7 +46,7 @@ export class HuiHistoryGraphCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entities: foundEntities }; return { type: "history-graph", entities: foundEntities };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -22,8 +22,12 @@ export class HuiIframeCard extends LitElement implements LovelaceCard {
); );
return document.createElement("hui-iframe-card-editor"); return document.createElement("hui-iframe-card-editor");
} }
public static getStubConfig(): object { public static getStubConfig(): IframeCardConfig {
return { url: "https://www.home-assistant.io", aspect_ratio: "50%" }; return {
type: "iframe",
url: "https://www.home-assistant.io",
aspect_ratio: "50%",
};
} }
@property() protected _config?: IframeCardConfig; @property() protected _config?: IframeCardConfig;

View File

@ -45,7 +45,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): LightCardConfig {
const includeDomains = ["light"]; const includeDomains = ["light"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -56,7 +56,7 @@ export class HuiLightCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entity: foundEntities[0] || "" }; return { type: "light", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -45,7 +45,7 @@ class HuiMapCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): MapCardConfig {
const includeDomains = ["device_tracker"]; const includeDomains = ["device_tracker"];
const maxEntities = 2; const maxEntities = 2;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -56,7 +56,7 @@ class HuiMapCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entities: foundEntities }; return { type: "map", entities: foundEntities };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;
@ -113,9 +113,10 @@ class HuiMapCard extends LitElement implements LovelaceCard {
} }
public getCardSize(): number { public getCardSize(): number {
if (!this._config) { if (!this._config?.aspect_ratio) {
return 3; return 5;
} }
const ratio = parseAspectRatio(this._config.aspect_ratio); const ratio = parseAspectRatio(this._config.aspect_ratio);
const ar = const ar =
ratio && ratio.w > 0 && ratio.h > 0 ratio && ratio.w > 0 && ratio.h > 0
@ -206,6 +207,11 @@ class HuiMapCard extends LitElement implements LovelaceCard {
this._attachObserver(); this._attachObserver();
} }
if (!this._config.aspect_ratio) {
root.style.paddingBottom = "100%";
return;
}
const ratio = parseAspectRatio(this._config.aspect_ratio); const ratio = parseAspectRatio(this._config.aspect_ratio);
root.style.paddingBottom = root.style.paddingBottom =

View File

@ -29,8 +29,9 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
return document.createElement("hui-markdown-card-editor"); return document.createElement("hui-markdown-card-editor");
} }
public static getStubConfig(): object { public static getStubConfig(): MarkdownCardConfig {
return { return {
type: "markdown",
content: content:
"The **Markdown** card allows you to write any text. You can style it **bold**, *italicized*, ~strikethrough~ etc. You can do images, links, and more.\n\nFor more information see the [Markdown Cheatsheet](https://commonmark.org/help).", "The **Markdown** card allows you to write any text. You can style it **bold**, *italicized*, ~strikethrough~ etc. You can do images, links, and more.\n\nFor more information see the [Markdown Cheatsheet](https://commonmark.org/help).",
}; };

View File

@ -177,7 +177,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): MediaControlCardConfig {
const includeDomains = ["media_player"]; const includeDomains = ["media_player"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -188,7 +188,7 @@ export class HuiMediaControlCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entity: foundEntities[0] || "" }; return { type: "media-control", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -30,8 +30,9 @@ export class HuiPictureCard extends LitElement implements LovelaceCard {
); );
return document.createElement("hui-picture-card-editor"); return document.createElement("hui-picture-card-editor");
} }
public static getStubConfig(): object { public static getStubConfig(): PictureCardConfig {
return { return {
type: "picture",
image: "https://demo.home-assistant.io/stub_config/t-shirt-promo.png", image: "https://demo.home-assistant.io/stub_config/t-shirt-promo.png",
tap_action: { action: "none" }, tap_action: { action: "none" },
hold_action: { action: "none" }, hold_action: { action: "none" },

View File

@ -44,7 +44,7 @@ class HuiPictureEntityCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): PictureEntityCardConfig {
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
hass, hass,
@ -55,6 +55,7 @@ class HuiPictureEntityCard extends LitElement implements LovelaceCard {
); );
return { return {
type: "picture-entity",
entity: foundEntities[0] || "", entity: foundEntities[0] || "",
image: "https://demo.home-assistant.io/stub_config/bedroom.png", image: "https://demo.home-assistant.io/stub_config/bedroom.png",
}; };

View File

@ -45,7 +45,7 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): PlantStatusCardConfig {
const includeDomains = ["plant"]; const includeDomains = ["plant"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -56,7 +56,7 @@ class HuiPlantStatusCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entity: foundEntities[0] || "" }; return { type: "plant-status", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -180,7 +180,7 @@ class HuiSensorCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): SensorCardConfig {
const includeDomains = ["sensor"]; const includeDomains = ["sensor"];
const maxEntities = 1; const maxEntities = 1;
const entityFilter = (stateObj: HassEntity): boolean => { const entityFilter = (stateObj: HassEntity): boolean => {
@ -199,7 +199,7 @@ class HuiSensorCard extends LitElement implements LovelaceCard {
entityFilter entityFilter
); );
return { entity: foundEntities[0] || "", graph: "line" }; return { type: "sensor", entity: foundEntities[0] || "", graph: "line" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -37,8 +37,8 @@ class HuiShoppingListCard extends LitElement implements LovelaceCard {
return document.createElement("hui-shopping-list-card-editor"); return document.createElement("hui-shopping-list-card-editor");
} }
public static getStubConfig(): object { public static getStubConfig(): ShoppingListCardConfig {
return {}; return { type: "shopping-list" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -60,7 +60,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): ThermostatCardConfig {
const includeDomains = ["climate"]; const includeDomains = ["climate"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -71,7 +71,7 @@ export class HuiThermostatCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entity: foundEntities[0] || "" }; return { type: "thermostat", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -77,7 +77,7 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard {
hass: HomeAssistant, hass: HomeAssistant,
entities: string[], entities: string[],
entitiesFallback: string[] entitiesFallback: string[]
): object { ): WeatherForecastCardConfig {
const includeDomains = ["weather"]; const includeDomains = ["weather"];
const maxEntities = 1; const maxEntities = 1;
const foundEntities = findEntities( const foundEntities = findEntities(
@ -88,7 +88,7 @@ class HuiWeatherForecastCard extends LitElement implements LovelaceCard {
includeDomains includeDomains
); );
return { entity: foundEntities[0] || "" }; return { type: "weather-forecast", entity: foundEntities[0] || "" };
} }
@property() public hass?: HomeAssistant; @property() public hass?: HomeAssistant;

View File

@ -39,7 +39,7 @@ export interface EntitiesCardConfig extends LovelaceCardConfig {
type: "entities"; type: "entities";
show_header_toggle?: boolean; show_header_toggle?: boolean;
title?: string; title?: string;
entities: EntitiesCardEntityConfig[]; entities: Array<EntitiesCardEntityConfig | string>;
theme?: string; theme?: string;
icon?: string; icon?: string;
header?: LovelaceHeaderFooterConfig; header?: LovelaceHeaderFooterConfig;
@ -135,8 +135,8 @@ export interface LightCardConfig extends LovelaceCardConfig {
export interface MapCardConfig extends LovelaceCardConfig { export interface MapCardConfig extends LovelaceCardConfig {
type: "map"; type: "map";
title: string; title?: string;
aspect_ratio: string; aspect_ratio?: string;
default_zoom?: number; default_zoom?: number;
entities?: Array<EntityConfig | string>; entities?: Array<EntityConfig | string>;
geo_location_sources?: string[]; geo_location_sources?: string[];