Add auto import of area icons in home view (#158)

* Changed the default icon for an area.
* Add auto import of area icons in home view (Closes #147).
  The default icon is overwritten at the constructor, if a user-defined icon is set in hass.

---------

Co-authored-by: DigiLive <github@digilive.nl>
This commit is contained in:
w531t4
2024-11-29 03:27:47 -05:00
committed by GitHub
parent 13c4826f0a
commit e927ae6ba5
3 changed files with 17 additions and 2 deletions

View File

@ -22,7 +22,7 @@ class AreaCard extends AbstractCard {
#defaultConfig: TemplateCardConfig = { #defaultConfig: TemplateCardConfig = {
type: "custom:mushroom-template-card", type: "custom:mushroom-template-card",
primary: undefined, primary: undefined,
icon: "mdi:texture-box", icon: "mdi:floor-plan",
icon_color: "blue", icon_color: "blue",
tap_action: { tap_action: {
action: "navigate", action: "navigate",
@ -51,10 +51,16 @@ class AreaCard extends AbstractCard {
// Initialize the default configuration. // Initialize the default configuration.
this.#defaultConfig.primary = area.name; this.#defaultConfig.primary = area.name;
if (this.#defaultConfig.tap_action && ("navigation_path" in this.#defaultConfig.tap_action)) { if (this.#defaultConfig.tap_action && ("navigation_path" in this.#defaultConfig.tap_action)) {
this.#defaultConfig.tap_action.navigation_path = area.area_id; this.#defaultConfig.tap_action.navigation_path = area.area_id;
} }
// Overwrite the default icon to the user-defined icon in hass.
if (area.icon) {
this.#defaultConfig.icon = area.icon;
}
this.config = Object.assign(this.config, this.#defaultConfig, options); this.config = Object.assign(this.config, this.#defaultConfig, options);
} }
} }

View File

@ -7,10 +7,13 @@ import StrategyDefaults = generic.StrategyDefaults;
export const configurationDefaults: StrategyDefaults = { export const configurationDefaults: StrategyDefaults = {
areas: { areas: {
undisclosed: { undisclosed: {
aliases: [],
area_id: "undisclosed", area_id: "undisclosed",
floor_id: null,
name: "Undisclosed", name: "Undisclosed",
picture: null, picture: null,
icon: "mdi:floor-plan",
labels: [],
aliases: [],
hidden: false, hidden: false,
} }
}, },

View File

@ -2,13 +2,19 @@
* Area Entity. * Area Entity.
* *
* @property {string} area_id The id of the area. * @property {string} area_id The id of the area.
* @property {string|null} floor_id The id of the area's floor.
* @property {string} name Name of the area. * @property {string} name Name of the area.
* @property {string|null} picture URL to a picture that should be used instead of showing the domain icon. * @property {string|null} picture URL to a picture that should be used instead of showing the domain icon.
* @property {string|null} icon Icon to show.
* @property {string[]} labels Labels allow grouping elements irrespective of their physical location or type.
* @property {string[]} aliases Array of aliases of the area. * @property {string[]} aliases Array of aliases of the area.
*/ */
export interface AreaRegistryEntry { export interface AreaRegistryEntry {
area_id: string; area_id: string;
floor_id: string | null;
name: string; name: string;
picture: string | null; picture: string | null;
icon: string | null;
labels: string[];
aliases: string[]; aliases: string[];
} }