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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -29,8 +29,9 @@ export class HuiMarkdownCard extends LitElement implements LovelaceCard {
return document.createElement("hui-markdown-card-editor");
}
public static getStubConfig(): object {
public static getStubConfig(): MarkdownCardConfig {
return {
type: "markdown",
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).",
};

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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