From fd166fa89e17df1ecf7d14c93597a756526f206b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 25 Aug 2022 13:01:06 -0500 Subject: [PATCH] Show when an integration is being setup in the UI (#13446) Co-authored-by: Paulus Schoutsen --- .../integrations/ha-integration-card.ts | 26 ++++++++++++++++++- src/translations/en.json | 4 ++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/panels/config/integrations/ha-integration-card.ts b/src/panels/config/integrations/ha-integration-card.ts index 567246cf1a..843bf2223c 100644 --- a/src/panels/config/integrations/ha-integration-card.ts +++ b/src/panels/config/integrations/ha-integration-card.ts @@ -11,6 +11,7 @@ import { mdiDotsVertical, mdiDownload, mdiOpenInNew, + mdiProgressHelper, mdiPlayCircleOutline, mdiReload, mdiRenameBox, @@ -112,6 +113,7 @@ export class HaIntegrationCard extends LitElement { disabled: this.disabled, "state-not-loaded": hasItem && item!.state === "not_loaded", "state-failed-unload": hasItem && item!.state === "failed_unload", + "state-setup": hasItem && item!.state === "setup_in_progress", "state-error": hasItem && ERROR_STATES.includes(item!.state), })} .configEntry=${item} @@ -165,6 +167,19 @@ export class HaIntegrationCard extends LitElement { "ui.panel.config.integrations.config_entry.unnamed_entry" )} + ${item.state === "setup_in_progress" + ? html` + + ${this.hass.localize( + `ui.panel.config.integrations.config_entry.state.setup_in_progress` + )} + + ` + : ""} ${ERROR_STATES.includes(item.state) ? html` | undefined; let stateTextExtra: TemplateResult | string | undefined; + let icon: string = mdiAlertCircle; if (item.disabled_by) { stateText = [ @@ -209,6 +225,11 @@ export class HaIntegrationCard extends LitElement { } } else if (item.state === "not_loaded") { stateText = ["ui.panel.config.integrations.config_entry.not_loaded"]; + } else if (item.state === "setup_in_progress") { + icon = mdiProgressHelper; + stateText = [ + "ui.panel.config.integrations.config_entry.setup_in_progress", + ]; } else if (ERROR_STATES.includes(item.state)) { stateText = [ `ui.panel.config.integrations.config_entry.state.${item.state}`, @@ -290,7 +311,7 @@ export class HaIntegrationCard extends LitElement { ${stateText ? html`
- +
${this.hass.localize(...stateText)}${stateTextExtra}
` @@ -762,6 +783,9 @@ export class HaIntegrationCard extends LitElement { .state-not-loaded { --state-message-color: var(--primary-text-color); } + .state-setup { + --state-message-color: var(--secondary-text-color); + } :host(.highlight) ha-card { --state-color: var(--primary-color); --text-on-state-color: var(--text-primary-color); diff --git a/src/translations/en.json b/src/translations/en.json index 3931c135de..ad888c9f3d 100755 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -2849,6 +2849,7 @@ "area": "In {area}", "no_area": "No Area", "not_loaded": "Not loaded", + "setup_in_progress": "Initializing", "check_the_logs": "Check the logs", "disable": { "disabled": "Disabled", @@ -2869,7 +2870,8 @@ "migration_error": "Migration error", "setup_retry": "Retrying setup", "not_loaded": "Not loaded", - "failed_unload": "Failed to unload" + "failed_unload": "Failed to unload", + "setup_in_progress": "Initializing" }, "open_configuration_url": "Visit device" },